public function testPlug() { $class = __NAMESPACE__ . '\\FakePlug'; $plug_name = 'fake_plug'; $plug = plug($plug_name, [_CLASS => $class]); $this->assertEquals($class, plug($plug_name)[_CLASS]); }
public function testUnPlug() { $class = __NAMESPACE__ . '\\FakePlug'; plug('fake', [_CLASS => $class]); $this->assertTrue(exists('fake', 'PlugIn')); unPlug('fake'); $this->assertFalse(exists('fake', 'PlugIn')); }
function plug($sockets, $filename = '') { if (count($sockets) > 0) { $array = array_shift($sockets); foreach ($array as $value) { $plugged = plug($sockets, "{$filename}/{$value}"); if (!is_null($plugged)) { return $plugged; } } return NULL; } return is_file(BASEPATH . $filename) ? $filename : NULL; }
/** * Get site folder. * * @return string */ function getAppsParent() { $folder = realpath(lastSlash(plug('controller')[_RUN_APPS]) . '../') . '/'; return $folder; }
/** * Execute ActionForward. * * @return mixed */ public function go() { switch ($this->getType()) { case 'view': return $this->_processView(); case 'redirect': $this->_processHeader(); $path = $this->getPath(true); return callPlugin(getOption(_ROUTER), 'go', [$path]); case 'action': default: if (exists(_RUN_APP, 'plugin')) { plug(_RUN_APP)->append(get($this)); } return $this; } }
/** * Find a form. * * @param string $name name * * @return ActionForm */ public function findForm($name) { $form = value($this->_mappings, [ACTION_FORMS, $name]); if (!class_exists($form[_CLASS]) && !is_callable($form[_CLASS]) && exists(_RUN_APP, 'plugin')) { $func = plug(_RUN_APP)->isCallable($form[_CLASS]); if ($func) { $form[_CLASS] = $func; } } if (is_callable($form[_CLASS])) { $actionForm = call_user_func($form[_CLASS]); } else { if (!class_exists($form[_CLASS])) { $form[_CLASS] = getOption(_DEFAULT_FORM, __NAMESPACE__ . '\\ActionForm'); } $actionForm = new $form[_CLASS](); } return $actionForm; }
<?php if (preg_match('#^' . dirname($_SERVER['SCRIPT_NAME']) . '/index#', $_SERVER['REQUEST_URI']) !== 0) { echo 'URI must not begin with index.'; exit(1); } require_once BASEPATH . plug([$packages, ['common.php']]); require_once BASEPATH . plug([$packages, ['plug.php']]); plug_config('wild_targets'); plug_config('segments'); $instance =& get_instance(); foreach ($instance->config['wild_targets'] as $array) { foreach ($array as $value) { $instance->config['segments']['target'][] = $value; } } $instance->segments = path_to_segments($_SERVER['PATH_INFO']); $plugged = plug_controller($instance->segments['target']); $class = preg_replace('/.php$/', '', basename($plugged)); $instance = new $class(); call_user_func_array([$instance, $instance->segments['action']], $instance->segments['args']);
/** * 直接参照ファイルをプラグする */ function plug_direct($file) { $instance =& get_instance(); $sockets = [array_merge($GLOBALS['packages'], ['']), ['direct']]; foreach (isset($instance->config['segments']) ? array_keys($instance->config['segments']) : [] as $key) { if ($key == 'target') { break; } $sockets[] = isset($instance->segments[$key]) ? [$instance->segments[$key], ''] : ['']; } $socket = ['']; if (isset($instance->segments['target'])) { $socket = [$instance->segments['target']]; if (isset($instance->config['wild_targets'])) { foreach ($instance->config['wild_targets'] as $key => $value) { if (in_array($instance->segments['target'], $value)) { $socket[] = $key; } } } $socket[] = ''; } $sockets[] = $socket; $sockets[] = isset($instance->segments['action']) ? [$instance->segments['action'], ''] : ['']; $sockets[] = [$file]; $plugged = plug($sockets); return $plugged; }
public function init() { $this->setDefaultAlias(new FakeObject()); $this->parentAlias = plug('fake'); }