PHP автозагрузка и set_include_paths - PullRequest
0 голосов
/ 06 ноября 2010

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

Это прекрасно работает, но должен быть лучший способ сделать это, поскольку я должен делать это для каждого файла.

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

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

Спасибо всем, кто может помочь.

Ответы [ 4 ]

0 голосов
/ 06 ноября 2010

Лучший способ сделать это зависит от того, как организовано ваше приложение. Если ваше приложение представляет собой просто набор сценариев, то лучшим способом было бы просто перегрузить функцию _autoload () в сценарии и затем включить этот сценарий в начало каждого файла. Пример:

shared.php

function __autoload($classname){
   //Search through class file locations
}

script1.php

include('shared.php');

Другой способ сделать это - лучший способ. Я бы предложил использовать какой-то фреймворк MVC или написать собственный базовый MVC. Это сделало бы все намного проще. Среда MVC позволяет вам иметь общую точку входа. В такие моменты это полезно, потому что вы можете очень легко перезаписать функцию _autoload () в точке входа, и она будет действовать во всем приложении. Таким образом, каждый раз, когда создается класс, вы можете просматривать все свои предопределенные каталоги, чтобы найти правильный файл для включения.

0 голосов
/ 06 ноября 2010

Определите все, что вам нужно и является общим для всех скриптов в autoload.php, и загрузите его из каждого скрипта?

0 голосов
/ 06 ноября 2010

Я бы предложил создать один файл сценария, который включает в себя стандартные классы, устанавливает любые стандартные константы, пути, очищает GET / POST и т. Д. Затем включайте его один раз в начале каждого файла. У вас могут быть исключения, но это будет не более 90% времени.

Кроме того, посмотрите на __autoload. Это может быть более сложное решение, чтобы справиться с этим.

0 голосов
/ 06 ноября 2010

Попробуйте написать функцию __ autoload () в вашем index.php (я предполагаю, что это точка входа на ваш сайт). Это должно сделать автозагрузку доступной для всех сценариев, вызванных после этого. Вот так я поддерживаю свой сайт, который работает на Zend.

...