Server IP : 162.213.251.212 / Your IP : 3.133.120.119 [ Web Server : LiteSpeed System : Linux business55.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : allssztx ( 535) PHP Version : 8.1.31 Disable Function : NONE Domains : 1 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/allssztx/public_html/easybuyer/vendor/hamcrest/hamcrest-php/generator/ |
Upload File : |
<?php /* Copyright (c) 2009 hamcrest.org */ /** * Controls the process of extracting @factory doctags * and generating factory method files. * * Uses File_Iterator to scan for PHP files. */ class FactoryGenerator { /** * Path to the Hamcrest PHP files to process. * * @var string */ private $path; /** * @var array of FactoryFile */ private $factoryFiles; public function __construct($path) { $this->path = $path; $this->factoryFiles = array(); } public function addFactoryFile(FactoryFile $factoryFile) { $this->factoryFiles[] = $factoryFile; } public function generate() { $classes = $this->getClassesWithFactoryMethods(); foreach ($classes as $class) { foreach ($class->getMethods() as $method) { foreach ($method->getCalls() as $call) { foreach ($this->factoryFiles as $file) { $file->addCall($call); } } } } } public function write() { foreach ($this->factoryFiles as $file) { $file->build(); $file->write(); } } public function getClassesWithFactoryMethods() { $classes = array(); $files = $this->getSortedFiles(); foreach ($files as $file) { $class = $this->getFactoryClass($file); if ($class !== null) { $classes[] = $class; } } return $classes; } public function getSortedFiles() { $iter = $this->getFileIterator(); $files = array(); foreach ($iter as $file) { $files[] = $file; } sort($files, SORT_STRING); return $files; } private function getFileIterator() { $factoryClass = class_exists('File_Iterator_Factory') ? 'File_Iterator_Factory' : 'SebastianBergmann\FileIterator\Factory'; $factory = new $factoryClass(); return $factory->getFileIterator($this->path, '.php'); } public function getFactoryClass($file) { $name = $this->getFactoryClassName($file); if ($name !== null) { require_once $file; if (class_exists($name)) { $class = new FactoryClass(substr($file, strpos($file, 'Hamcrest/')), new ReflectionClass($name)); if ($class->isFactory()) { return $class; } } } return null; } public function getFactoryClassName($file) { $content = file_get_contents($file); if (preg_match('/namespace\s+(.+);/', $content, $namespace) && preg_match('/\n\s*class\s+(\w+)\s+extends\b/', $content, $className) && preg_match('/@factory\b/', $content) ) { return $namespace[1] . '\\' . $className[1]; } return null; } }