zarus
Хитрожопый макак
__autoload классов. Грабли.
При написании скриптов на локальной машинке использовались: Windows XP, Apache 1.3.x и PHP 5.1.2
На тестовом (продакшен) сервере: FreeBSD, Apache 1.3.x / Lighttpd (cgi) и PHP 5.1.4
Все классы подгружались через __autoload.
Проблема уже решена. Просто пишу здесь, вдруг кто с такой же сталкнется.
На локальном все работает. На тестовом апач падал, лайт выдавал сообщение о нехватке памяти.
Проблема была в классах, а точнее - в вызовах еще не объявленных классов.
Для примера:
Почему этот косяк глотался на локальном, и вылетал на тестовом?
Прошу дать комментарии по данному вопросу от более опытных и/или знающих. Спасибо за внимание.
При написании скриптов на локальной машинке использовались: Windows XP, Apache 1.3.x и PHP 5.1.2
На тестовом (продакшен) сервере: FreeBSD, Apache 1.3.x / Lighttpd (cgi) и PHP 5.1.4
Все классы подгружались через __autoload.
Проблема уже решена. Просто пишу здесь, вдруг кто с такой же сталкнется.
На локальном все работает. На тестовом апач падал, лайт выдавал сообщение о нехватке памяти.
Проблема была в классах, а точнее - в вызовах еще не объявленных классов.
Для примера:
PHP:
# test1.inc
class test1 {
function __construct() {
db::get()->query(...);
}
function someAction() {
}
}
# db.inc
class db {
...
function query(...) {
...
test1::get()->someAction();
...
}
}
# index.php
#class::get() - синглтон спертый из 5 PHP Design Patterns, про которые прочитал в PHP Inside,
# но данный факт к вышеописанной проблеме отношения не имеет.
test1::get()->someAction();
function __autoload( $className ) {
if ( is_readable( $className . '.inc' ) {
require_once( $className . '.inc' ) {
}
}
Прошу дать комментарии по данному вопросу от более опытных и/или знающих. Спасибо за внимание.