Проблема класса PHP - PullRequest
       8

Проблема класса PHP

0 голосов
/ 19 октября 2010
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 () как $Dispatcher = Gdn::Dispatcher();, что означает return self::$_Factory->Factory($Alias, $Args);?

Ответы [ 2 ]

1 голос
/ 19 октября 2010

Это означает, что Dispatcher () возвращает объект, и этот объект является копией чего-то, созданного Factory ().

0 голосов
/ 19 октября 2010

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;

я не знаю, ПОЧЕМУ выхотел бы, но это то, что он делает

...