--- A.php ----
require_once 'B.php';
class A
{
public function __constructor($x){...}
public function foo()
{
$b = B::getInstance();
...
}
}
--- B.php ----
require_once 'A.php';
class B extends A
{
protected static $_instance = null;
protected function __construct(){}
public static function getInstance()
{....}
}
PHP po prostu przestaje interpretacji kodu, jak tylko osiągnie linięnie można zdefiniować konstruktora jako chronionego lub prywatnego! czemu?
protected function __construct(){}
i wyprowadza wszystko przed i nic, że zostały wysłane do przeglądarki później.
I tak szybko, jak tylko wziąć tę linię na zewnątrz, zmieniając go
// protected function __construct(){}
wszystko działa w porządku !?
Nie rozumiem tego.
Wszelkie pomysły?
Czy masz tagów otwarcia pHP w plikach, np zaczynają się od ' php'. Czy możesz uruchomić 'php -l A.php' i' php -l B.php' z poziomu interfejsu CLI, aby sprawdzić, czy nie zawiera błędów parsowania? – Gordon
Metoda __construct() musi być publiczna, ponieważ jest dostępna (publicznie) po utworzeniu instancji klasy. –
Twój pseudo-kod nie ma żadnego oczywistego problemu, więc problemy najprawdopodobniej występują w Twoim prawdziwym kodzie. Jeśli PHP przestanie działać i nie wyświetli żadnego komunikatu o błędzie, prawdopodobnie musisz włączyć pełne raportowanie błędów. Jeśli nie wiesz jak to zrobić, zapytaj o szczegóły. –