0

有人可以解释在另一个类实例的参数中拥有一个类实例意味着什么:

$controller = new controllerObject(new dependenciesObject());

我了解类和类实例的基础知识,但以前从未见过像上面这样的代码。这是什么意思?controllerObect 是一个类,那么在参数中传递一个对象实例意味着什么?

4

4 回答 4

0

这意味着controllerObject构造函数接受类型为 的对象dependenciesObject

您实例化 adependenciesObject并将其用作实例化 a 的参数controllerObject,并将其分配给$controller。如果它有助于您理解,这相当于:

$dependency = new dependenciesObject();
$controller = new controllerObject($dependency);
unset($dependency);
于 2012-11-22T17:05:48.633 回答
0

您正在做的是为 $controller 分配一个 controllerObject 的实例。

正如您所说,controllerObject 是一个具有构造函数的类,需要引用 :dependenciesObject 类型的对象。

     class controllerObject 
      {
           function __construct(dependanciesObject $dependancies)
            { 
                //etc
            }
       }
于 2012-11-22T17:07:12.623 回答
0

它只是意味着controllerObject将另一个对象传递给它的构造函数。通过这样做 - 而不是dependenciesObject在单独的变量中实例化 a - 您将不会为传递的对象创建全局变量,从而将全局变量的数量保持在最低限度。

一个例子是将一个数据库对象传递给controllerObjectif 如果controllerObject没有它就无法运行。

于 2012-11-22T17:07:56.900 回答
0

与将任何其他参数传递给构造函数相同。new controllerObject(5)例如。

如果有助于理解,请使用临时变量:

$dependencies = new dependenciesObject();
$controller = new controllerObject($dependencies);
于 2012-11-22T17:08:34.733 回答