在PHP依赖注入中,我是否需要“require_once”定义依赖项的php文件?

时间:2010-09-09 17:15:06

标签: php dependency-injection

采取Fabien Potencier的example

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

  // ...
}

假设Storage类是在不同的php文件(例如storage.php)中定义的,我是否需要将它包含在通过require_once完成注入的文件中?

谢谢,

JDelage

1 个答案:

答案 0 :(得分:1)

你应该将所有requireinclude放在文件的头部 - 这当然是一种风格的东西,但是有一件事它可以让你通过瞥一眼来源看到,您的PHP文件需要哪些其他文件。

有两种情况:

  1. 您只能使用其他文件中的user.phpstorage.phpapp.php说)
  2. 在某些情况下,您会使用user.php并且不想担心需要storage.php
  3. 对于#1 - 你不需要担心需求,但是在PHP的头部使用require_once没有明显的缺点,即使大多数时候它已经被要求了。 / p>

    对于#2 - 您需要在标题处使用require_once,因为如果没有user.php则无法使用storage.php,而最终页面只知道它需要user.php

    简答:使用require_once包含代码的所有依赖项(以便其他代码可以轻松使用)

    注意:您应该只包含代码的直接依赖项。也就是说:如果您group.php使用user.php,则应该require_once 'user.php',但不必担心storage.php,因为它不是直接使用的,user.php隐含地包含它(据说 - 如果你愿意,没有明显的性能劣势)