Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal..
estou com um pequeno engasgo no meu código, tenho um arquivo class.php é a classe do site onde vou adicionando os métodos pertinentes para as atividades que desejo realizar.
antes eu usava um arquivo externo chamado conexao.php que fazia a conexão e selecionava o banco de dados, ai era só realizar um include("conexao.php"); resolvia o problema, mas apenas por semântica de código resolvi que fazia mais sentido fazer um método para conectar ao banco assim dentro do arquivo class.php criei um método que recebe o host, usuário, senha e faz a conexão e seleciona o banco de dados, ai é que está o entrave quando na página eu quero fazer uma query() a variável $mysqli está definida dentro do método que faz a conexão, a variável $mysqli = new mysqli(). é uma referência a um objeto da classe mysqli portanto para usar a query é preciso $mysqli->query($query). Porém $mysqli está instanciada dentro do método que conecta e não funciona fora dele, já tentei instancia-lá fora do método no inicio da classe como public $mysqli = new mysqli(); ou mesmo global $mysqli = new mysqli(); mas dava erro de sintaxe; emfim, qual alternativa devo usar para tornar possível o que estou querendo? por acaso se o método retornar a variável $mysqli dará certo?
Obrigado a todos pela paciência e qualquer ajuda é bem vinda!
Porque não usa herança? Se você tem uma classe que tem determinadas funções e quer que outra classe obtenha as mesmas funções basta você usar extends. Simples e fácil, não precisa fazer gambiarras, já que programação orientada a objetos é justamente para evitar o máximo esse tipo de coisas.
Porque não usa herança? Se você tem uma classe que tem determinadas funções e quer que outra classe obtenha as mesmas funções basta você usar extends. Simples e fácil, não precisa fazer gambiarras, já que programação orientada a objetos é justamente para evitar o máximo esse tipo de coisas.
Olá jamesbond,obrigado pela resposta.
mas o método citado pelo Matheus não é gambiarra, apenas um método retornando um objeto da classe mysqli();
eu só tenho uma classe, que está no arquivo class.php nessa classe tenho meus métodos, e é isso.
ao invés de instanciar outra classe no documento principal do site com extends é mais cômodo criar uma variável de referência ao objeto da classe, sendo esse referido objeto retornado por um método!
não sei se deu pra entender.
de qualquer forma agradeço a todos.
Dará sim, se tu usar dessa forma que vou colocar a baixo, poderá chamar onde quiser, dentro ou fora da classe.
Aí tu poderia chamar na mesma classe:
Ou fora:
Acho que deu pra entender!