rxhxtx Postado Julho 18, 2019 Denunciar Share Postado Julho 18, 2019 (editado) Boa tarde amigos, estou aqui empenhado nos meus estudos e travei em uma coisa: quero pegar um valor de uma funcao em outra, já tentei de tudo quanto é jeito, mas não funciona!! o basicao é isso... public static function numeroAleatorio(){ $query = "SELECT * FROM Rand WHERE numero = :numero;" ; $dbh = new PDO('mysql:host=localhost;dbname=aleatorio', 'root', ''); $stmt = $dbh->prepare($query); do { $res = rand(10,99); $stmt->execute(array(':numero' => $res)); $row = $stmt->fetchAll(PDO::FETCH_ASSOC);} while(count($row) > 0); return $res; } public function insertCad($arrVar) { $numero= numeroAleatorio(); $this->insertDB( "Rand", "?,?,?", array( $numero, $arrVar['nome'], $arrVar['email'] ) ); .... como faz para o resultado retornar para $numero??? se eu coloco $numero = '23'; funciona, mas quando peço para chamar o valor da outra função, não da em nada.... Editado Julho 18, 2019 por rxhxtx Citar Link para o comentário Compartilhar em outros sites More sharing options...
1 Leonardo Persan Postado Julho 19, 2019 Denunciar Share Postado Julho 19, 2019 As duas funções fazem parte da mesma uma classe? Por que usou o static em numeroAleatorio? Citar Link para o comentário Compartilhar em outros sites More sharing options...
1 Leonardo Persan Postado Julho 25, 2019 Denunciar Share Postado Julho 25, 2019 Não há de que precisando da um grito Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rxhxtx Postado Julho 21, 2019 Autor Denunciar Share Postado Julho 21, 2019 Boa noite, Em 19/07/2019 em 08:28, Leonardo Persan disse: As duas funções fazem parte da mesma uma classe? Por que usou o static em numeroAleatorio? Cara, para te falar a verdade eu nunca entendi muito bem quando usar o static ou não.. Sim, estão dentro da mesma classe, tentei colocando em outra classe também não funcionou... em todas as partes do meu codigo eu estou conseguindo pegar da seguinte forma Classes\ClassTal::funcaoTal($var); ou Classes\ClassTal::funcaoTal(); mas nesse insertCad não pega nada.. ai decidi colocar dentro da mesma classe para tentar facilitar meu desenvolvimento, mas também sem resultado.... temporariamente estou gerando o valor numa pag1 q joga pra uma pag2 por session, bem gambiarra, so para não travar totalmente ali, ,as eu queria conseguir fazer do jeito certo... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Persan Postado Julho 21, 2019 Denunciar Share Postado Julho 21, 2019 É mais fácil pensar que uma classe é alguém que armazenar dados e deve fazer coisas dentro de um contexto. Um método estático (com static) é uma ação que não precisa de contexto. Dentro de insertCard você pode chamar self::numeroAleatorio() ou NomeClasse::numeroAleatorio() Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rxhxtx Postado Julho 23, 2019 Autor Denunciar Share Postado Julho 23, 2019 (editado) Em 21/07/2019 em 15:26, Leonardo Persan disse: É mais fácil pensar que uma classe é alguém que armazenar dados e deve fazer coisas dentro de um contexto. Um método estático (com static) é uma ação que não precisa de contexto. Dentro de insertCard você pode chamar self::numeroAleatorio() ou NomeClasse::numeroAleatorio() aproveitei sua dica e dei uma bela estudada sobre isso, realmente em meus estudos eu estava fazendo muita coisa errada nisto. não usava o private nem abstract, valeu mais essa dica!!!! ultima dúvida com relacao a essa "chamada", se eu escrever self:: eu não preciso citar o nome da classe? desde que ela esteja na mesma classe... isso? La em cima, eu preciso colocar o "use nomeDaClasse" ou "extends NomedaClasse"? isso ainda me deixa um pouco confuso, fazem a mesma coisa??? Editado Julho 23, 2019 por rxhxtx Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Persan Postado Julho 24, 2019 Denunciar Share Postado Julho 24, 2019 21 horas atrás, rxhxtx disse: aproveitei sua dica e dei uma bela estudada sobre isso, realmente em meus estudos eu estava fazendo muita coisa errada nisto. não usava o private nem abstract, valeu mais essa dica!!!! Usar OO de forma realmente certa é difícil, é mais um exercício de pensar as responsabilidades do que realmente de código eu tento usar a técnica de pensar a classe como pessoas mesmo que têm cargos e responsabilidades limitadas rsrsrs 21 horas atrás, rxhxtx disse: ultima dúvida com relacao a essa "chamada", se eu escrever self:: eu não preciso citar o nome da classe? desde que ela esteja na mesma classe... isso? Isso mesmo 21 horas atrás, rxhxtx disse: La em cima, eu preciso colocar o "use nomeDaClasse" ou "extends NomedaClasse"? isso ainda me deixa um pouco confuso, fazem a mesma coisa??? Eles fazem coisas bem diferentes, vamos passo a passo... EXTENDS(Herança) Com o encapsulamento do código em classes percebeu-se que assim como aconteciam com as funções tinham trechos de códigos que se repetiam em classes diferentes para resolver isso criou-se o conceito de herança, que é você pegar esse código repetido colocar em outra classe e definir ela como "pai" de outras classes. Nessa brincadeira surgiram as Interfaces, Abstracts e Traits, mas isso é história para outra hora rsrsrs Ex.: As classes Gmail e Hotmail, fazem a mesma coisa, enviam e-mail, mas cada uma conecta de um jeito diferente em servidores diferentes. Mas digamos que ela tenha que acessar algumas tabelas no seu banco de dados, para coletar dados do usuário. Essa parte da conexão será idêntica já que o banco é o mesmo. Então vamos criar uma classe Email que tenha esse código que é repetido, pra gente não ter retrabalho. Assim class Email {...} class Gmail extends Email {...} class Hotmail extends Email {...} Resumo extends serve para compartilhar código entre classes de maneira vertical, de cima para baixo. USE(require/include) Quando você usa uma classe que está em um arquivo dentro de outra classe em outro arquivo, você precisa usar um require ou include para o PHP saber quais arquivos ele deve ler, correto? Imagina um sistema grande com dezenas de classes, uma em cada arquivo e imagina essas classes sendo usadas umas dentro da outra formando uma teia. Então se dentro de Usuario.php eu usar um require para Posts.php e as duas têm um require para Banco.php ferrou vai dar erro porque Banco está sendo declarado duas vezes. Você pode resolver isso com IFs, mas a partir desse e outros problemas de organização criou-se o use (e os Namespaces mas isso também fica pra outra hora). Resumo use(junto com o autoload) serve como um require/include inteligente que facilita usar um código/classe dentro de outro arquivo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rxhxtx Postado Julho 24, 2019 Autor Denunciar Share Postado Julho 24, 2019 3 horas atrás, Leonardo Persan disse: Usar OO de forma realmente certa é difícil, é mais um exercício de pensar as responsabilidades do que realmente de código eu tento usar a técnica de pensar a classe como pessoas mesmo que têm cargos e responsabilidades limitadas rsrsrs Isso mesmo Eles fazem coisas bem diferentes, vamos passo a passo... EXTENDS(Herança) Com o encapsulamento do código em classes percebeu-se que assim como aconteciam com as funções tinham trechos de códigos que se repetiam em classes diferentes para resolver isso criou-se o conceito de herança, que é você pegar esse código repetido colocar em outra classe e definir ela como "pai" de outras classes. Nessa brincadeira surgiram as Interfaces, Abstracts e Traits, mas isso é história para outra hora rsrsrs Ex.: As classes Gmail e Hotmail, fazem a mesma coisa, enviam e-mail, mas cada uma conecta de um jeito diferente em servidores diferentes. Mas digamos que ela tenha que acessar algumas tabelas no seu banco de dados, para coletar dados do usuário. Essa parte da conexão será idêntica já que o banco é o mesmo. Então vamos criar uma classe Email que tenha esse código que é repetido, pra gente não ter retrabalho. Assim class Email {...} class Gmail extends Email {...} class Hotmail extends Email {...} Resumo extends serve para compartilhar código entre classes de maneira vertical, de cima para baixo. USE(require/include) Quando você usa uma classe que está em um arquivo dentro de outra classe em outro arquivo, você precisa usar um require ou include para o PHP saber quais arquivos ele deve ler, correto? Imagina um sistema grande com dezenas de classes, uma em cada arquivo e imagina essas classes sendo usadas umas dentro da outra formando uma teia. Então se dentro de Usuario.php eu usar um require para Posts.php e as duas têm um require para Banco.php ferrou vai dar erro porque Banco está sendo declarado duas vezes. Você pode resolver isso com IFs, mas a partir desse e outros problemas de organização criou-se o use (e os Namespaces mas isso também fica pra outra hora). Resumo use(junto com o autoload) serve como um require/include inteligente que facilita usar um código/classe dentro de outro arquivo p****.... acho q entendi manooo!!! pensando como pessoas, o extends seria mais ou menos assim mariana precisa anotar em papeis os nomes, idade e cidade dos seus clientes carlos precisa anotar em papeis, carros, marcas, velocidade e cor julia precisa anotar em papeis quantas vezes o portao da empresa abriu o extends seria "a ponte" entre essas pessoas e o joaozinho, que pergunta quantos papeis cada um vai precisar, depois pega os papeis preenchidos e guarda nas caixinhas de cada um. já o use seria apenas para quando mariana precisa deixar um recado para o carlos pegar as laranjas da fruteira e colocar no carro mas ou menos essa ideia? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Persan Postado Julho 24, 2019 Denunciar Share Postado Julho 24, 2019 2 horas atrás, rxhxtx disse: mariana precisa anotar em papeis os nomes, idade e cidade dos seus clientes carlos precisa anotar em papeis, carros, marcas, velocidade e cor julia precisa anotar em papeis quantas vezes o portao da empresa abriu o extends seria "a ponte" entre essas pessoas e o joaozinho, que pergunta quantos papeis cada um vai precisar, depois pega os papeis preenchidos e guarda nas caixinhas de cada um. Perfeito 2 horas atrás, rxhxtx disse: já o use seria apenas para quando mariana precisa deixar um recado para o carlos pegar as laranjas da fruteira e colocar no carro Na verdade não é no caso deles não estarem na mesma sala(arquivo) e você além de estender o Joãozinho (criando/ajudando) Carlos, Mariana e Júlia, você precisa dizer o endereço da sala(qual arquivo o PHP tem que ler para achar a classe Joãozinho) isso somado aos Namespaces permite ter vários Joãos em salas(pastas) separadas, com responsabilidades diferentes, sem conflito. Ex.: DB\MySQL\Select e DB\Postgres\Select Duas classes Select em pastas separadas com Namespaces diferentes. Voltando ao Joãozinho, se estiverem todos na mesma sala(arquivo), ou se você faz o PHP visitar todas as salar(ler todos os arquivos de classes obrigatóriamente) não precisa de use O USE reduz o tempo de resposta fazendo o PHP ler apenas uma vez e somente os arquivos necessários para aquela requisição. Se em uma requisição você só precisa verificar login e senha no Banco de Dados ele não vai perder tempo carregando a classe que gera PDFs ou conecta com e-mail... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rxhxtx Postado Julho 25, 2019 Autor Denunciar Share Postado Julho 25, 2019 5 horas atrás, Leonardo Persan disse: Perfeito Na verdade não é no caso deles não estarem na mesma sala(arquivo) e você além de estender o Joãozinho (criando/ajudando) Carlos, Mariana e Júlia, você precisa dizer o endereço da sala(qual arquivo o PHP tem que ler para achar a classe Joãozinho) isso somado aos Namespaces permite ter vários Joãos em salas(pastas) separadas, com responsabilidades diferentes, sem conflito. Ex.: DB\MySQL\Select e DB\Postgres\Select Duas classes Select em pastas separadas com Namespaces diferentes. Voltando ao Joãozinho, se estiverem todos na mesma sala(arquivo), ou se você faz o PHP visitar todas as salar(ler todos os arquivos de classes obrigatóriamente) não precisa de use O USE reduz o tempo de resposta fazendo o PHP ler apenas uma vez e somente os arquivos necessários para aquela requisição. Se em uma requisição você só precisa verificar login e senha no Banco de Dados ele não vai perder tempo carregando a classe que gera PDFs ou conecta com e-mail... massaaaaaa..... entendi!!!! agora entendo porque usam tanto metaforas na vida.... rsrsrsrs valeu amigo, me esclareceu um tema que não estva fazendo sentido na minha cabeça ate agora. Agora já consigo me localizar bem melhor nos meus estudo sobre isso! obrigado!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rxhxtx
Boa tarde amigos,
estou aqui empenhado nos meus estudos e travei em uma coisa:
quero pegar um valor de uma funcao em outra, já tentei de tudo quanto é jeito, mas não funciona!!
o basicao é isso...
como faz para o resultado retornar para $numero???
se eu coloco $numero = '23'; funciona, mas quando peço para chamar o valor da outra função, não da em nada....
Editado por rxhxtxLink para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.