Самый эффективный способ загрузки классов в PHP - PullRequest
2 голосов
/ 06 июля 2011

Я ac # разработчик, поэтому я привык просто компилировать библиотеку и включать ее в проект для использования.Я действительно не нашел лучший способ загрузки различных объектов в приложении PHP.Я не хочу продолжать использовать require.Какой хороший подход выбрать?

Ответы [ 7 ]

2 голосов
/ 06 июля 2011

Если вы используете PHP 5.x, вы, вероятно, захотите автозагрузку .

2 голосов
/ 06 июля 2011

Вам не нужно продолжать использовать require. Вы можете require_once(), который будет анализировать файл, только если он еще не был загружен.

Также в PHP, так как включение происходит во время выполнения, вы можете свободно require_once() в середине условного выражения, если это уместно.

// Only load Class.php if we really need it.
if ($somecondition) {
  // we'll be needing Class.php
  require_once("Class.php");
  $c = new Class();
}
else // we absolutely won't need Class.php
1 голос
/ 07 июля 2011

Поместите это в свой конфигурационный файл (или любой файл, включенный во все страницы)

function __autoload($class_name) {
    require_once "Classes" . $class_name . '.php';
}

Поместите каждый класс в отдельный файл со своим именем.замените "Classes" на classes folder.

1 голос
/ 06 июля 2011

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

Если вернуться к вашему вопросу, вы можете использовать include , требуют , автозагрузку или даже phar.Возможно, PHAR ближе к библиотекам C #, вы можете включить одну библиотеку PHAR с несколькими классами.

0 голосов
/ 06 июля 2011

Автозагрузчик, как уже упоминалось.

Если вы хотите пойти дальше ... посмотрите, как Кохана (например) решила проблему.

0 голосов
/ 06 июля 2011

Автозагрузчик решит все ваши проблемы.

0 голосов
/ 06 июля 2011

Вы можете загружать классы. См:

С этой страницы:

<?php
function __autoload($class_name) {
    include $class_name . '.php';
}

$obj  = new MyClass1();
$obj2 = new MyClass2(); 
?>

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

...