radarrplexorganizrnginxsonarrdashboardhtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelanding
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							72 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							72 lines
						
					
					
						
							1.5 KiB
						
					
					
				| <?php | |
| 
 | |
| /* | |
|  Copyright (c) 2009 hamcrest.org | |
|  */ | |
| 
 | |
| class FactoryClass | |
| { | |
|     /** | |
|      * @var string | |
|      */ | |
|     private $file; | |
| 
 | |
|     /** | |
|      * @var ReflectionClass | |
|      */ | |
|     private $reflector; | |
| 
 | |
|     /** | |
|      * @var array | |
|      */ | |
|     private $methods; | |
| 
 | |
|     public function __construct($file, ReflectionClass $class) | |
|     { | |
|         $this->file = $file; | |
|         $this->reflector = $class; | |
|         $this->extractFactoryMethods(); | |
|     } | |
| 
 | |
|     public function extractFactoryMethods() | |
|     { | |
|         $this->methods = array(); | |
|         foreach ($this->getPublicStaticMethods() as $method) { | |
|             if ($method->isFactory()) { | |
| //                echo $this->getName() . '::' . $method->getName() . ' : ' . count($method->getCalls()) . PHP_EOL; | |
|                 $this->methods[] = $method; | |
|             } | |
|         } | |
|     } | |
| 
 | |
|     public function getPublicStaticMethods() | |
|     { | |
|         $methods = array(); | |
|         foreach ($this->reflector->getMethods(ReflectionMethod::IS_STATIC) as $method) { | |
|             if ($method->isPublic() && $method->getDeclaringClass() == $this->reflector) { | |
|                 $methods[] = new FactoryMethod($this, $method); | |
|             } | |
|         } | |
|         return $methods; | |
|     } | |
| 
 | |
|     public function getFile() | |
|     { | |
|         return $this->file; | |
|     } | |
| 
 | |
|     public function getName() | |
|     { | |
|         return $this->reflector->name; | |
|     } | |
| 
 | |
|     public function isFactory() | |
|     { | |
|         return !empty($this->methods); | |
|     } | |
| 
 | |
|     public function getMethods() | |
|     { | |
|         return $this->methods; | |
|     } | |
| }
 | |
| 
 |