QueryPath\ExtensionRegistry::getExtensions PHP Method

getExtensions() public static method

Given a Query object, this will return an associative array of extension names to (new) instances. Generally, this is intended to be used internally.
public static getExtensions ( querypath\Query $qp ) : array
$qp querypath\Query The Query into which the extensions should be registered.
return array An associative array of classnames to instances.
    public static function getExtensions(Query $qp)
    {
        $extInstances = array();
        foreach (self::$extensionRegistry as $ext) {
            $extInstances[$ext] = new $ext($qp);
        }
        return $extInstances;
    }

Usage Example

Example #1
0
 /**
  * Call extension methods.
  *
  * This function is used to invoke extension methods. It searches the
  * registered extenstensions for a matching function name. If one is found,
  * it is executed with the arguments in the $arguments array.
  *
  * @throws QueryPath::Exception
  *  An exception is thrown if a non-existent method is called.
  */
 public function __call($name, $arguments)
 {
     if (!ExtensionRegistry::$useRegistry) {
         throw new \QueryPath\Exception("No method named {$name} found (Extensions disabled).");
     }
     // Loading of extensions is deferred until the first time a
     // non-core method is called. This makes constructing faster, but it
     // may make the first invocation of __call() slower (if there are
     // enough extensions.)
     //
     // The main reason for moving this out of the constructor is that most
     // new DOMQuery instances do not use extensions. Charging qp() calls
     // with the additional hit is not a good idea.
     //
     // Also, this will at least limit the number of circular references.
     if (empty($this->ext)) {
         // Load the registry
         $this->ext = ExtensionRegistry::getExtensions($this);
     }
     // Note that an empty ext registry indicates that extensions are disabled.
     if (!empty($this->ext) && ExtensionRegistry::hasMethod($name)) {
         $owner = ExtensionRegistry::getMethodClass($name);
         $method = new \ReflectionMethod($owner, $name);
         return $method->invokeArgs($this->ext[$owner], $arguments);
     }
     throw new \QueryPath\Exception("No method named {$name} found. Possibly missing an extension.");
 }