If you need to write plugin only for simple task, write a **script** using ScriptsPlugin. ## Using plugins Plugins are loaded using **plugin** method from phpQueryObject or phpQuery static namespace. ``` // all calls to plugin below are equal phpQuery::plugin('example') phpQuery::plugin('example', 'example.php') pq('ul')->plugin('example') pq('ul')->plugin('example', 'example.php') ``` ## Writing plugins Plugin consist from 2 classes - first extending **phpQueryObjects** (result of pq(); function) and second, extending static **phpQuery::$plugins** namespace. Plugin classes are never intialized, just method calls are forwarded in static way from phpQuery. #### Extending phpQueryObject ``` /** * phpQuery plugin class extending phpQuery object. * Methods from this class are callable on every phpQuery object. * * Class name prefix 'phpQueryObjectPlugin_' must be preserved. */ abstract class phpQueryObjectPlugin_example { /** * Limit binded methods. * * null means all public. * array means only specified ones. * * @var array|null */ public static $phpQueryMethods = null; /** * Enter description here... * * @param phpQueryObject $self */ public static function example($self, $arg1) { // this method can be called on any phpQuery object, like this: // pq('div')->example('$arg1 Value') // do something $self->append('Im just an example !'); // change stack of result object return $self->find('div'); } protected static function helperFunction() { // this method WONT be avaible as phpQuery method, // because it isn't publicly callable } } ``` #### Extending phpQuery ``` /** * phpQuery plugin class extending phpQuery static namespace. * Methods from this class are callable as follows: * phpQuery::$plugins->staticMethod() * * Class name prefix 'phpQueryPlugin_' must be preserved. */ abstract class phpQueryPlugin_example { /** * Limit binded methods. * * null means all public. * array means only specified ones. * * @var array|null */ public static $phpQueryMethods = null; public static function staticMethod() { // this method can be called within phpQuery class namespace, like this: // phpQuery::$plugins->staticMethod() } } ```