/** * 运行框架 */ public static function run() { try { self::init(); Hook::init(BASE_PATH); Hook::listen('appBegin'); Hook::listen('routeParseUrl', array(Config::get('REWRITE_RULE'), Config::get('REWRITE_ON'))); //default route if (!defined('APP_NAME') || !defined('CONTROLLER_NAME') || !defined('ACTION_NAME')) { Route::parseUrl(Config::get('REWRITE_RULE'), Config::get('REWRITE_ON')); } //execute action $controller = '\\app\\' . APP_NAME . '\\controller\\' . CONTROLLER_NAME . 'Controller'; $action = ACTION_NAME; if (!class_exists($controller)) { throw new \Exception("Controller '{$controller}' not found", 404); } $obj = new $controller(); if (!method_exists($obj, $action)) { throw new \Exception("Action '{$controller}::{$action}()' not found", 404); } Hook::listen('actionBefore', array($obj, $action)); $obj->{$action}(); Hook::listen('actionAfter', array($obj, $action)); } catch (\Exception $e) { Hook::listen('appError', array($e)); } Hook::listen('appEnd'); }
/* config */ $dbUrl = getenv('DB_URL'); if ($dbUrl) { $config->parse($dbUrl); } else { $config->set('dbType', 'sqlite'); $config->set('dbHost', ':memory:'); } /* database */ Db::construct($config); Db::init(); /* installer */ $installer = new Installer($config); $installer->init(); $installer->rawDrop(); $installer->rawCreate(); $installer->insertData(['adminName' => 'Test', 'adminUser' => 'test', 'adminPassword' => 'test', 'adminEmail' => '*****@*****.**']); /* test user */ Db::forTablePrefix('users')->whereIdIs(1)->findOne()->set(['password' => 'test', 'description' => 'test', 'language' => 'en'])->save(); /* test module */ if (is_dir('modules/TestDummy')) { $testDummy = new Modules\TestDummy\TestDummy(); $testDummy->install(); } /* language */ $language = Language::getInstance(); $language->init(); /* hook */ Hook::construct($registry); Hook::init();
<?php namespace Redaxscript; /* include as needed */ include_once 'includes/Autoloader.php'; include_once 'stubs/hook_function.php'; include_once 'stubs/hook_method.php'; include_once 'TestCase.php'; /* init */ Autoloader::init(); Request::init(); /* set config */ Config::set('type', 'mysql'); Config::set('host', 'redaxscript.com'); Config::set('name', 'd01ae38a'); Config::set('user', 'd01ae38a'); Config::set('password', 'travis'); /* registry and config */ $registry = Registry::getInstance(); $config = Config::getInstance(); /* database and hook */ Db::init($config); Hook::init($registry); /* language */ $language = Language::getInstance(); $language::init('en');
Hook::init('init[].node_content', function () { if (!cache('node__content_field')) { Yii::import("application.modules.node.models.NodeContent"); Yii::import("application.modules.node.models.NodeField"); $rows = NodeContent::model()->findAll(array('order' => 'sort desc,id desc')); if ($rows) { foreach ($rows as $v) { $data[$v->id] = $v->name; $data2[$v->id] = array($v->name, $v->discription); $id = $v->id; foreach ($v->fields as $f) { $field[$id]['id'] = $f->id; $field[$id]['name'] = $f->name; $field[$id]['type'] = $f->type; $field[$id]['widget'] = $f->widget; $field_table[$v->name][$f->name] = $f; $d[$v->name]['id'] = 'id'; $d[$v->name]['vid'] = 'vid'; $d[$v->name]['display'] = 'display'; $d[$v->name]['uid'] = 'uid'; $d[$v->name]['uuid'] = 'uuid'; $d[$v->name]['language_id'] = 'language_id'; $d[$v->name]['created'] = 'created'; $d[$v->name]['updated'] = 'updated'; $d[$v->name][$f->name] = $f->name; } } cache('node__content', $data); cache('node__contentfull', $data2); cache('node__field', $field); cache('node__content_field', $d); cache('node__field_table', $field_table); } } });
/** * 对字段加载HOOK,改变relation 的值 */ function hook() { Hook::init('model.NodeField_afterSave', function ($model) { CDB()->update('node_field', array('relation' => "attachments." . $model->name), 'id=:id', array(':id' => $model->id)); }); }