Этот код $out = new static();
заставляет PHP выходить неожиданно и тихо, используя либо xampp, либо wampserver в Windows.
Я работаю над старым проектом, который безупречно работает на ubuntu 15.10 с NGinX / php-fpm php5.5.9 (dev), а также на Ubuntu 14.04 с apache2.4 / Fast-CGI php5.5.13 (производство).
Сегодня один из моих коллег-дизайнеров проверил это же репо, чтобы отредактировать некоторые html / css.
К сожалению, он не смог запустить проект, используя Xampp: v3.2.2 (PHP 5.5.38) или Wampserver: 2.5 (PHP 5.5.13) на своем рабочем столе Windows 10.
Код реализует старый дом, заваренный (активная запись, как) уровень абстракции базы данных, в котором все таблицы представлены классом. Каждый класс наследуется от класса Table.
PHP останавливается на следующем фрагменте (находится в классе «Таблица»):
# Table.php public static function Get($id = null){ echo 'test'; # Displays in the web browser error_log('test'); # append a line in the error_log file $out = new static(); # php seams to stop here echo 'after'; # Not displayed error_log('test'); # Not inserted in the log file // Fetch data from DB if id is specified if($id){ $out->load($id); } return $out; }
для# Table.php public static function Get($id = null){ echo 'test'; # Displays in the web browser error_log('test'); # append a line in the error_log file $out = new static(); # php seams to stop here echo 'after'; # Not displayed error_log('test'); # Not inserted in the log file // Fetch data from DB if id is specified if($id){ $out->load($id); } return $out; }
Затем он попытался заменить статический вызов:
// … $class = get_called_class(); echo $class; # Displays "Article" (the right class name) in the browser $out = new $class(); # The script dies silently as before. // …
Похоже, что что-то происходит с экземпляром объекта PHP в позднем статическом контексте привязки к окнам.
Огромное спасибо, кому это поможет.