Есть ли способ включить файл вызовом функции?

dak

Guest
Есть ли способ включить файл вызовом функции?

Помогите с идеей, а задача следующая:

Все библиотечные файлы, которые используются в проекте разбиты на пакеты, файлы одного пакета лежат в одной директории.

Хотелось бы иметь библиотечную функцию, которая принимает имя пакета, и включает все файлы из этой директории в файл из которого вызвали функцию включения пакета.

Существуют четыре функции семейства
incl..(), req..() с суффиксами _one, но они встроеные, а я хочу вызывать именно функцию.
Можно конечно включать файл, в котором такая функция описывается, и тут же вызывается, но это недостаточно гибко, так как например, мне надо сразу же указать полный путь к включаемому файлу, а я хочу чтобы полный путь к файлам собирался уже внутри, и при включении пакета видим не был.

Если решения этой задачи существуют, то мне кажется, что они заключаются или в работе/переопределении incl..(), req..() ... или в использовании каких-нибудь изваращений с вызовом функци интерпретации динамического PHP кода.

Есть идеи?

PS. Если что не ясно, то пишите, я поясню.
Заранее спасибо.
 

dak

Guest
Есть ли споДа, это вариант, но...

Да, это вариант, и если больше ничего не придумаю, то наверное так и надо делать, но все равно это вызов include, и я уже должен указать полный путь к включаемому файлу (относительный или нет значения не играет, смысл в том, что я должен еще на этой странице должен знать где лежат пакеты, а следовательно нельзя двигать независимо ни сами пакеты, ни файлы в которых они включаются, а хочется, чтоб этого не было), и к тому же при включении файла никаких параметров передать нельзя :-(.
Или я не прав? Может есть какие-то способы, может нестандартные?
Вот если бы можно было всегда включать один файл (и передавать ему как-то параметром имя пакета), то это уже было бы неплохо.
 

Alien

Новичок
Думаю так (идея):

Создаем файл с точно уникальным именем в котором определена функция
include_package($package_name)

Для того чтобы во всех файлах не знать где лежит include_package
прописываем в php.ini

include_path string
Specifies a list of directories where the require(), include() and fopen_with_path() functions look for files.

include_package уже делает include на все нужное по имени пакета.

Таким образом дерево сайта может быть любым, за то где лежат сами пакеты - отвечает только одна функция.
Вызов файла с обьявлением этой функции доступен отовсюду.
 

dak

Guest
Так нельзя

Но ведь включить код функций из функции нельзя, будет ошибка, а вот писать код, который включает пакет вне функций, очень даже можно. И так я сейчас и собираюсь делать. Попробовал и очень даже ничего получается!!!
Всем спасибо за идеи. Они в конце концов навели меня на мысль как это нужно делать!
 
Сверху