diff options
Diffstat (limited to 'lib/Bridge.php')
-rw-r--r-- | lib/Bridge.php | 194 |
1 files changed, 98 insertions, 96 deletions
diff --git a/lib/Bridge.php b/lib/Bridge.php index bacb77a0..a9645810 100644 --- a/lib/Bridge.php +++ b/lib/Bridge.php @@ -2,103 +2,105 @@ require_once(__DIR__ . '/BridgeInterface.php'); class Bridge { - static protected $dirBridge; - - public function __construct(){ - throw new \LogicException('Please use ' . __CLASS__ . '::create for new object.'); - } - - /** - * Checks if a bridge is an instantiable bridge. - * @param string $nameBridge name of the bridge that you want to use - * @return true if it is an instantiable bridge, false otherwise. - */ - static public function isInstantiable($nameBridge){ - $re = new ReflectionClass($nameBridge); - return $re->IsInstantiable(); - } - - /** - * Create a new bridge object - * @param string $nameBridge Defined bridge name you want use - * @return Bridge object dedicated - */ - static public function create($nameBridge){ - if(!preg_match('@^[A-Z][a-zA-Z0-9-]*$@', $nameBridge)){ - $message = <<<EOD + static protected $dirBridge; + + public function __construct(){ + throw new \LogicException('Please use ' . __CLASS__ . '::create for new object.'); + } + + /** + * Checks if a bridge is an instantiable bridge. + * @param string $nameBridge name of the bridge that you want to use + * @return true if it is an instantiable bridge, false otherwise. + */ + static public function isInstantiable($nameBridge){ + $re = new ReflectionClass($nameBridge); + return $re->IsInstantiable(); + } + + /** + * Create a new bridge object + * @param string $nameBridge Defined bridge name you want use + * @return Bridge object dedicated + */ + static public function create($nameBridge){ + if(!preg_match('@^[A-Z][a-zA-Z0-9-]*$@', $nameBridge)){ + $message = <<<EOD 'nameBridge' must start with one uppercase character followed or not by alphanumeric or dash characters! EOD; - throw new \InvalidArgumentException($message); - } - - $nameBridge = $nameBridge . 'Bridge'; - $pathBridge = self::getDir() . $nameBridge . '.php'; - - if(!file_exists($pathBridge)){ - throw new \Exception('The bridge you looking for does not exist. It should be at path ' . $pathBridge); - } - - require_once $pathBridge; - - if(Bridge::isInstantiable($nameBridge)){ - return new $nameBridge(); - } else { - return false; - } - } - - static public function setDir($dirBridge){ - if(!is_string($dirBridge)){ - throw new \InvalidArgumentException('Dir bridge must be a string.'); - } - - if(!file_exists($dirBridge)){ - throw new \Exception('Dir bridge does not exist.'); - } - - self::$dirBridge = $dirBridge; - } - - static public function getDir(){ - $dirBridge = self::$dirBridge; - - if(is_null($dirBridge)){ - throw new \LogicException(__CLASS__ . ' class need to know bridge path !'); - } - - return $dirBridge; - } - - /** - * Lists the available bridges. - * @return array List of the bridges - */ - static public function listBridges(){ - $pathDirBridge = self::getDir(); - $listBridge = array(); - $dirFiles = scandir($pathDirBridge); - - if($dirFiles !== false){ - foreach($dirFiles as $fileName){ - if(preg_match('@^([^.]+)Bridge\.php$@U', $fileName, $out)){ - $listBridge[] = $out[1]; - } - } - } - - return $listBridge; - } - - static public function isWhitelisted($whitelist, $name){ - if(in_array($name, $whitelist) - or in_array($name . '.php', $whitelist) - or in_array($name . 'Bridge', $whitelist) // DEPRECATED - or in_array($name . 'Bridge.php', $whitelist) // DEPRECATED - or count($whitelist) === 1 and trim($whitelist[0]) === '*'){ - return true; - } else { - return false; - } - } + throw new \InvalidArgumentException($message); + } + + $nameBridge = $nameBridge . 'Bridge'; + $pathBridge = self::getDir() . $nameBridge . '.php'; + + if(!file_exists($pathBridge)){ + throw new \Exception('The bridge you looking for does not exist.' + . ' It should be at path ' + . $pathBridge); + } + + require_once $pathBridge; + + if(Bridge::isInstantiable($nameBridge)){ + return new $nameBridge(); + } else { + return false; + } + } + + static public function setDir($dirBridge){ + if(!is_string($dirBridge)){ + throw new \InvalidArgumentException('Dir bridge must be a string.'); + } + + if(!file_exists($dirBridge)){ + throw new \Exception('Dir bridge does not exist.'); + } + + self::$dirBridge = $dirBridge; + } + + static public function getDir(){ + $dirBridge = self::$dirBridge; + + if(is_null($dirBridge)){ + throw new \LogicException(__CLASS__ . ' class need to know bridge path !'); + } + + return $dirBridge; + } + + /** + * Lists the available bridges. + * @return array List of the bridges + */ + static public function listBridges(){ + $pathDirBridge = self::getDir(); + $listBridge = array(); + $dirFiles = scandir($pathDirBridge); + + if($dirFiles !== false){ + foreach($dirFiles as $fileName){ + if(preg_match('@^([^.]+)Bridge\.php$@U', $fileName, $out)){ + $listBridge[] = $out[1]; + } + } + } + + return $listBridge; + } + + static public function isWhitelisted($whitelist, $name){ + if(in_array($name, $whitelist) + || in_array($name . '.php', $whitelist) + || in_array($name . 'Bridge', $whitelist) // DEPRECATED + || in_array($name . 'Bridge.php', $whitelist) // DEPRECATED + || count($whitelist) === 1 and trim($whitelist[0]) === '*'){ + return true; + } else { + return false; + } + } } |