/** * Load macro once */ public function testLoadMacroOnce() { // first $config = array('Replica_Macro_Null' => array()); sfReplicaThumbnail::loadMacro('load_once', $config); // second $config = array('Replica_Macro_ThumbnailFit' => array($width = 10, $height = 20)); sfReplicaThumbnail::loadMacro('load_once', $config); $this->assertTrue(Replica::hasMacro('load_once'), 'Macro is initialized'); $this->assertType('Replica_Macro_Chain', $macro = Replica::getMacro('load_once')); $this->assertEquals(array('Replica_Macro_Null' => array()), $macro->getParameters()); }
/** * Load and register macro if not defined * * @param string $type - thumbnail type * @param array $config - macro definition * @return void */ public static function loadMacro($type, array $config) { if (!Replica::hasMacro($type)) { $chain = new Replica_Macro_Chain(); foreach ($config as $class => $args) { $reflection = new ReflectionClass($class); if ($args && is_array($args)) { $macro = $reflection->newInstanceArgs($args); } else { $macro = $reflection->newInstance(); } $chain->add($macro); } Replica::setMacro($type, $chain); } }