Как включить файлы PHP, которые требуют абсолютного пути? - PullRequest
89 голосов
/ 07 августа 2008

У меня есть структура каталогов, подобная следующей;

script.php

вкл / include1.php
вкл / include2.php

объекты / object1.php
Объекты / object2.php

мыло / soap.php

Теперь я использую эти объекты как в script.php, так и в /soap/soap.php, я могу их переместить, но мне нужна структура каталогов, подобная этой, по определенной причине. При выполнении script.php путь включения равен inc/include.php, а при выполнении /soap/soap.php это ../inc, абсолютные пути работают, /mnt/webdev/[project name]/inc/include1.php... Но это уродливое решение, если я когда-нибудь захочу переместить каталог в другое место.

Так есть ли способ использовать относительные пути или способ программно сгенерировать "/mnt/webdev/[project name]/"?

Ответы [ 11 ]

0 голосов
/ 09 августа 2008

@ Flubba, это позволяет мне иметь папки внутри моего каталога include? плоские каталоги дают мне кошмары. поскольку весь каталог объектов должен находиться в каталоге inc.

Да, конечно. Так, например, мы используем один слой подпапок, как правило:

require_once('library/string.class.php')

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

Так, например, если вы работаете с MVC, вы должны указать путь к директории приложения в пути включения, а затем указать ссылку на вещи в форме

'model/user.class'
'controllers/front.php'

или что-то еще.

Но, вообще говоря, он просто позволяет вам работать с действительно короткими путями в вашем PHP, которые будут работать из любой точки мира, и его намного легче читать, чем всю эту корневую малярную клавишу документа realpath.

Преимущество альтернатив на основе сценариев, предложенных другими, заключается в том, что они работают где угодно, даже на общих блоках; настройка пути включения требует немного больше усилий и усилий, но, как я уже упоминал, вы можете начать использовать __autoload, который просто самый крутой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...