PHP类问题

时间:2010-10-19 14:45:39

标签: php class object factory

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);是什么意思?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

如果你这样做: “blah->工厂('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;

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