Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia.
class CheckUserLogin extends InitClass
{
public function __construct()
{
$this->classRead();
}
public function readData()
{
$this->classRead()->ExeRead();// Not work well
}
}
class InitClass
{
protected $read;
protected function classRead()
{
$this->read = new Read;
}
}
O que eu gostaria de saber é, como eu faço para utilizar o método classRead() para instanciar minha classe automaticamente, por exemplo: $this->classRead()->ExeRead()?
O ExeRead() é o método da classe Read que faz a leitura da tabela.
Tentei como está lá no readData(), mas a IDE nunca encontra o método ExeRead. Sendo assim preciso sempre criar um novo atributo, $read, e criar o objeto a partir dele, $read = new Read. Só assim consigo utilizar o $read->ExeRead().
Onde estou errando?
Orientação à Objetos se resumo em confiança. Confiança na interface disponibilizada.
Em um primeiro momento, há uma quebra de confiança na sua implementação:
class InitClass
{
O método classRead, apenas cria um novo Read ao atributo $read.
Já no método abaixo:
public function readData()
{
Espera receber reader criado, através do método classRead().
Entretanto, o método classRead não identifica o uso do método ao desenvolvedor, o que é um tanto ruim, pois para saber o que ele faz, é necessário ver sua implementação.
Vamos modificar um pouco sua classe base, utilizar o prefixo get (para informar um retorno) e adicionar um phpDoc para melhorar a interface.
class InitClass
{
E altere para o novo método:
public function readData()
{
No final das contas, basicamente foi esquecido do return, mas o método em si não dizia muita coisa para o desenvolver, principalmente que ele receberia, ou não, uma instância de Read.