/** * Factory method for creating plugins * @param string|int $index * @param string|array|\Nimbles\Core\Plugin $plugin * @return \Nimbles\Core\Plugin|null */ public static function factory($index, $plugin) { if (is_array($plugin)) { // treat as options $plugin = new Plugin($plugin); } else { if (!$plugin instanceof Plugin) { // empty plugin $plugin = new Plugin(); } } $plugin->setName($index); // name name and index in sync return $plugin; }
/** * Tests attaching and detaching plugins * @return void */ public function testAttachDetach() { $plugin = new Plugin(array('foo' => 'bar'), array('type' => 'string')); $this->assertEquals('bar', $plugin['foo']); $this->assertEquals('bar', $plugin->foo); $this->assertEquals(1, $plugin->count()); $plugin->attach('baz', 'quz'); $this->assertEquals('quz', $plugin['baz']); $this->assertEquals('quz', $plugin->baz); $this->assertEquals(2, $plugin->count()); $plugin->detach('foo'); $this->assertFalse($plugin->offsetExists('foo')); $this->assertEquals(1, $plugin->count()); }