MVC является разделением model, view и controller — ничто больше, ничто меньше. Это - просто парадигма; идеал, который Вы должны иметь позади своего ума при разработке классов. Постарайтесь не смешивать код от этих трех категорий в один класс.
, Например, в то время как сетка таблицы представление должно, очевидно, представить данные, однажды показанные, это не должно иметь кода того, где получить данные из, или на что похожа его собственная структура ( модель ). Аналогично, в то время как это может иметь функцию для подведения столбца, фактическое подведение итогов, как предполагается, происходит в контроллер .
А 'сохранили файл' диалоговое окно ( представление ), в конечном счете передает путь, когда-то выбранный пользователем, на контроллер , который тогда спрашивает модель для данных и делает фактическое сохранение.
Это разделение обязанностей позволяет гибкость в будущем. Например, потому что представление не заботится о базовой модели, поддержка нескольких форматов файлов легче: просто добавьте образцовый подкласс для каждого.
Использование set_include_path () (или ini_set ('include_path', ...)) позволяет вам указать несколько папок, которые будут содержать код вашей библиотеки. Например, если ваше приложение использует множество различных фреймворков / библиотек, например PEAR и Zend FW, у вас может быть что-то вроде
ini_set ('include_path', '/ usr / local / php / pear: / usr / local / php / zendfw ');
Недостатком этого подхода является то, что он будет использовать любой файл, который найдет первым; если у вас есть файл с именем "Mailer.php" более чем в одном из ваших путей включения, он будет включать первый найденный файл, вызывая небольшие ошибки, если это не ваше намерение. Хорошая организация кода обычно решает эту проблему. Кроме того, include_path проходит через кеш realpath ( http://us2.php.net/realpath ), который иногда необходимо настроить для повышения производительности в зависимости от вашей настройки.
Оба способа хороши, однако использование метода define () более явное.
FWIW, я обычно использую ini_set ('include_path', .. .).
Я думаю, что объяснение Микаэля очень ясное.
Я рекомендовал вам использовать «set_include_path», когда вы храните все ваши файлы PHP в папке, например: «libs /» (это проще). Использование метода define () должно быть быстрее, поскольку вы явно указываете путь к файлу.
Всегда старайтесь избегать использования абсолютных путей, если они действительно не нужны. Я счел очень полезным указать ваши пути таким образом:
define("BASE_PATH", dirname(__FILE__));
Таким образом вам не придется обновлять путь каждый раз, когда вы перемещаете код.