Фокус с инклюдом.

NOX

Новичок
Фокус с инклюдом.

UPD: пропустил require_once 'init.php'
index.php
PHP:
require_once 'init.php'
class Index extends Test{}
-------------------------------
init.php
PHP:
spl_autoload_register();
$className = basename($_SERVER['PHP_SELF'], '.php');
new $className;
-------------------------------
Test.php
PHP:
class Test {
	function __construct(){
		echo 'Test';
	}
}
Поясню зачем:
хотелось бы вызывать странички "контроллеры" напрямую (т.е. http://mysite.com/index.php), а инициализацию производить в общем для всех страниц файле init.php.
Иначе говоря файлы "контроллеры" подключают движок, а не движок подключает нужный файл.
Самое интересное что в одном файле всё прекрасно работает

index.php
PHP:
class Test {
	function __construct(){
		echo 'Test';
	}

}

$className = basename($_SERVER['PHP_SELF'], '.php');
new $className;

class Index extends Test{

}
 

NOX

Новичок
Вывод ошибок сделан, и понятно что заинклюдить самое себя, а можно ли как то обхитрить PHP.
В общем-то вопрос скорее из спортивного интереса, потому как сейчас необходимые страницы подключаются по переменной через мод_реврайт
Архитектура странная, но предположим, что она подобна asp.NET фреймворку, где в одном классе обрабатываются все ивенты страницы. В этом случае такая компоновка index.php очень даже удобна, ведь после require_once 'init.php' всё само начинало бы вертется.

PHP:
require_once 'init.php'
class Index extends Test{}
 

fixxxer

К.О.
Партнер клуба
ну а почему не прокинуть все запросы на init.php и не делать тот же spl_autoload оттуда? Вместо php_self - document_uri (хотя можно и поумнее ;)
 

NOX

Новичок
Так и работает, в дополнение с помощью апачевского реврайта эмулируется вызов конкретных скриптов на сервере. То есть при таком запросе mysite.com/index.php отработает init.php и создаст обьект типа Index.
Не нравится тем что это задействует апач (его модуль) и требует конфигурации оного.
 

fixxxer

К.О.
Партнер клуба
в любом случае, любой маппинг урлов кроме банальной статики - это конфигурация веб-сервера. какая разница ?

ну и потом смотря что настраивать, скажем fastcgi с общей точкой входа настраивается даже проще. :)
 
Сверху