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;
я не знаю, ПОЧЕМУ выхотел бы, но это то, что он делает