определить мой собственный BASE_PATH по сравнению с set_include_path?

MVC является разделением model, view и controller — ничто больше, ничто меньше. Это - просто парадигма; идеал, который Вы должны иметь позади своего ума при разработке классов. Постарайтесь не смешивать код от этих трех категорий в один класс.

, Например, в то время как сетка таблицы представление должно, очевидно, представить данные, однажды показанные, это не должно иметь кода того, где получить данные из, или на что похожа его собственная структура ( модель ). Аналогично, в то время как это может иметь функцию для подведения столбца, фактическое подведение итогов, как предполагается, происходит в контроллер .

А 'сохранили файл' диалоговое окно ( представление ), в конечном счете передает путь, когда-то выбранный пользователем, на контроллер , который тогда спрашивает модель для данных и делает фактическое сохранение.

Это разделение обязанностей позволяет гибкость в будущем. Например, потому что представление не заботится о базовой модели, поддержка нескольких форматов файлов легче: просто добавьте образцовый подкласс для каждого.

8
задан John 24 November 2009 в 03:50
поделиться

2 ответа

Использование 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', .. .).

5
ответ дан 5 December 2019 в 19:00
поделиться

Я думаю, что объяснение Микаэля очень ясное.

Я рекомендовал вам использовать «set_include_path», когда вы храните все ваши файлы PHP в папке, например: «libs /» (это проще). Использование метода define () должно быть быстрее, поскольку вы явно указываете путь к файлу.

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

define("BASE_PATH", dirname(__FILE__));

Таким образом вам не придется обновлять путь каждый раз, когда вы перемещаете код.

4
ответ дан 5 December 2019 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: