【问题标题】:PHP class problemPHP类问题
【发布时间】:2010-10-19 14:45:38
【问题描述】:
class Gdn {

   const AliasDispatcher = 'Dispatcher';

   protected static $_Factory = NULL;

   public static function Dispatcher() {

      $Result = self::Factory(self::AliasDispatcher);

      return $Result;
   }

   public static function Factory($Alias = FALSE) {

      if ($Alias === FALSE)

         return self::$_Factory;


      // Get the arguments to pass to the factory.
      //$Args = array($Arg1, $Arg2, $Arg3, $Arg4, $Arg5);

      $Args = func_get_args();

      array_shift($Args);

      return self::$_Factory->Factory($Alias, $Args);
   }

}

如果我像 $Dispatcher = Gdn::Dispatcher(); 这样调用 Dispatcher(),return self::$_Factory->Factory($Alias, $Args); 是什么意思?

【问题讨论】:

    标签: php class object factory


    【解决方案1】:

    这意味着 Dispatcher() 正在返回一个对象,而该对象是由 Factory() 创建的东西的副本。

    【讨论】:

    • 我不明白静态变量后面的箭头,所以 Gdn::$_Factory 是一个对象?
    【解决方案2】:

    self:: 表示您正在引用当前对象的类 因为 factory 是一个递归函数,它会一直调用自己,直到它用完参数,然后返回当前工厂类中设置的工厂。

    如果你愿意: "blah->Factory('test1','test2',test3','test4')" 它会像这样运行:

    blah->factory('test1','test2','test3','test4')
        blah->$_Factory->Factory('test1',array('test2','test3','test4'))
            blah->$_Factory->Factory(array('test2','test3','test4'));
                blah->$_Factory->Factory();
               // oh hey, i dont have any arguments, replace it with my default argument 'false' and thus return the factory
                return self::$_Factory;
    

    我不知道你为什么想要它,但这就是它的作用

    【讨论】:

      猜你喜欢
      • 2015-12-01
      • 2012-01-18
      • 1970-01-01
      • 2012-03-23
      • 2010-12-12
      • 2011-09-11
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多