Flitch\Rule\Loader::load PHP Method

load() public method

Load a rule.
public load ( string $ruleName ) : RuleInterface
$ruleName string
return RuleInterface
    public function load($ruleName)
    {
        $segments = explode('.', $ruleName);
        $namespace = array_shift($segments);
        if ($namespace === 'Flitch') {
            $classname = 'Flitch\\Rule\\' . implode('\\', $segments);
            $filename = __DIR__ . '/' . implode('/', $segments) . '.php';
        } else {
            $classname = $namespace . '/' . implode('\\', $segments);
            $filename = $this->localPath . '/' . implode('/', $segments) . '.php';
            if (!file_exists($filename)) {
                $filename = $this->globalPath . '/' . implode('/', $segments) . '.php';
            }
        }
        if (!file_exists($filename) || !is_readable($filename)) {
            return null;
        }
        require_once $filename;
        if (!class_exists($classname, false)) {
            return null;
        }
        return new $classname();
    }

Usage Example

Example #1
0
 /**
  * Load a coding standard.
  *
  * @return void
  */
 protected function loadStandard()
 {
     $standard = $this->loadStandardFile($this->standard);
     foreach ($standard as $ruleName => $options) {
         $rule = $this->loader->load($ruleName);
         if ($rule === null) {
             throw new Exception\RuntimeException(sprintf('Could not load rule "%s"', $ruleName));
         }
         foreach ($options as $key => $value) {
             $setter = 'set' . ucfirst(preg_replace('(_([a-z]))e', 'strtoupper("\\1")', strtolower($key)));
             if (method_exists($rule, $setter)) {
                 $rule->{$setter}($value);
             }
         }
         if ($rule instanceof TokenRuleInterface) {
             foreach ($rule->getListenerTokens() as $listenerToken) {
                 if (!isset($this->listenerTokens[$listenerToken])) {
                     $this->listenerTokens[$listenerToken] = array();
                 }
                 $this->listenerTokens[$listenerToken][] = $ruleName;
             }
         }
         $this->rules[] = $rule;
     }
 }