Нужно ли в PHP Inpendency Injection «require_once» php-файл, в котором определяется зависимость? - PullRequest
0 голосов
/ 09 сентября 2010

На примере Фабьена Потенцера :

class User
{
  function __construct($storage)
  {
    $this->storage = $storage;
  }

  // ...
}

Предполагая, что класс Storage определен в другом php-файле (скажем, storage.php), нужно ли включать его в этот файл?файл, в который выполняется инъекция через require_once?

Спасибо,

JDelage

1 Ответ

1 голос
/ 09 сентября 2010

Вы должны поместить все свои require s и include s в начало файла - это, безусловно, вещь стиля, но, с одной стороны, она позволяет вам увидеть, посмотрев на источник, какие другие файлы нужно вашим файлом PHP.

Есть два случая:

  1. Вы будете когда-либо использовать user.php и storage.php из других файлов (app.php скажем)
  2. Есть случаи, когда вы будете использовать user.php и не хотите беспокоиться о том, что для запоминания требуется storage.php.

Для # 1 - вам не нужно беспокоиться о потребностях, однако нет существенного недостатка в использовании require_once во главе вашего PHP, даже если в большинстве случаев это уже было необходимо.

Для # 2 - вам нужно использовать require_once в заголовке, так как вы не можете использовать user.php без storage.php, и на последней странице только известно, что нужно user.php.

краткий ответ: Используйте require_once, чтобы включить все зависимости для кода (чтобы его можно было легко использовать в другом коде)

note: Вы должны включать в код только прямые зависимости. То есть: если у вас есть group.php, который использует user.php, он должен require_once 'user.php', но вам не нужно беспокоиться о storage.php, так как он не используется напрямую, и user.php неявно включает его (что как говорится - нет существенный недостаток производительности, если вы хотите быть тщательным)

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