Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
teste.class.php
<?
abstract class configg
{
protected static $Teste;
protected function __construct()
{
self::$Teste = "oi";
}
} public function logar()
{
echo self::$Teste;
}
}
?>
para chamar a class
<?
$LOGAR = login::logar();
?>
não sei por que mas não esta mostrando nada na tela
e foi feito o require antes que perguntem
eu estou utilizando membro statico o modo de chamar está certo, aqui testei estatica na logar e ainda sim não mostra nada na tela ,
<?
abstract class configg
{
protected static $Teste;
protected function __construct()
{
self::$Teste = "oi";
}
} public static function logar()
{
echo login::$Teste;
echo self::$Teste;
echo parent::$Teste
}
}
?>Você definiu a visibilidade do método __construct() como protegido. Por isso não funciona, ao instanciar login, __construct() tenta ser chamado "publicamente".
não adianta não da certo
testa ai no seu host
aqui não vai e também não exibe erro
=/
Acabei de testar esse último código que você postou removendo o protected do __construct() e funcionou perfeitamente.
Adicione isso no início do script e veja se aparece algum erro: ini_set('display_errors', '1');
nao apareci nada
<?
ini_set('display_errors', '1');
abstract class configg
{
protected static $Teste;
function __construct()
{
self::$Teste = "oi";
}
} public static function logar()
{
echo login::$Teste;
echo self::$Teste;
echo parent::$Teste;
}
}
$LOGAR = login::logar();
?>
testa esse funcionar ai o erro é aqui
Olha o que eu falei no meu primeiro post sobre o instanciamento, o certo é:
$login = new login;
$login::logar();
Primeiro instancia associando a classe à variável. E com essa variável que chamará os métodos, como mostrei acima.
Peguei exatamente as mesmas classes que você postou e chamei elas desse jeito que falei. Funcionou perfeitamente.
ok, ao chegar em casa irei testar
reputado, podem trancar o tópico
Alí no echo self::$Teste; da classe login, o certo seria echo parent::$Teste;
Note que você está pegando a variável $Teste da classe pai (parent) e não da própria (self).
O instanciamento e chamado da função também está errado. O correto seria:
Note que a função logar(); não é estática, então a forma certa para chamar é com ->