时间:2021-07-01 10:21:17 帮助过:29人阅读
- <br><!--?php <BR-->require 'command/config.php'; <br>require 'command/app.php'; <br>app::run($config); <br>?> <br> <br>首先不用说大家也看得出来,加载系统配置文件,然后通过引擎来加载系统配置。 <br><strong>二、引擎 <br></strong><span style="CURSOR: pointer" onclick="doCopy('code1967')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>public function run($config){ <br>header("Content-type:text/html;charset=utf-8"); <br>self::$config = $config; //加载系统配置 <br>self::copyright(); <br>self::testsystem(); //系统环境 <br>self::setsystem(); //设置系统参数 <br>self::incinfo(); <br>if(!IN_WEB){exit('网站正关闭维护中,请稍候访问!');} <br>defined('KEHENG_DEBUG') or define('KEHENG_DEBUG',true); // 是否调试模式 <br>self::setpath(); //设置系统路径 <br>self::getdatabase(); //测试数据库 <br>self::loadlib(); //加载库 <br>self::getRouteConfig(); //运行路由并加载控制器 <br>} <br> <br>引擎里面首先设置配置文件,再测试系统参数,加载系统模块,取得配置在的网站信息文件,设置网站需要的路径,测试系统配置里面的数据库参数,加载库文件,最后是加载路由获取请求地址。不知道这样的流程对不对,只是我根据自己的学习自己编写的一套而已,但里面却缺少缓存,具体缓存应该怎么样的设置。 <br>这里的数据库测试是根据配置用哪一类型的数据库,再加载对该类型数据库操作的封装文件。 <br><strong>三、路由 <br></strong>以下为上面的最后一个函数,加载控制器文件,根据配置文件获得请求方式。 <br><span style="CURSOR: pointer" onclick="doCopy('code79941')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>public function getRouteConfig(){ <br>$route_type=self::$config[route][url_type]; <br>switch($route_type){ <br>case 1: <br>//echo $_SERVER['SCRIPT_NAME'].'<br>'; <br>$query_string=$_SERVER['QUERY_STRING']; <br>//echo $_SERVER['REQUEST_URI'].'<br>'; <br>$urlstr=$_GET['controller']; <br>break; <br>case 4: <br>$url = end(explode('/', $_SERVER["PHP_SELF"])); <br>$urlstr = strtolower(substr($url,0,-4)); <br>break; <br>} <br>if(file_exists(Contr_DIR.'Controller.php')){ <br>require Contr_DIR.'Controller.php'; <br>//echo $urlstr; <br>$template = self::$config['Templates']; <br>controller::load($urlstr,$template); <br>}else{ <br>exit('控制器文件不存在'); <br>} <br>} <br> <br><strong>四、控制器 <br></strong>控制器文件也蛮简单,只是根据路由分析出的地址来加载模型文件和视图文件, <br><span style="CURSOR: pointer" onclick="doCopy('code19462')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>class controller{ <br>public $obj; <br>public function load($url,$template){ <br>$config=$template; <br>if(file_exists(Model_DIR.$url.'.model.php')){ <br>$views = new views; <br>//echo Model_DIR.$url.'.model.php'; <br>require Model_DIR.$url.'.model.php'; <br>$temp = $config[$url][0]; <br>if($temp!='' && $temp!=null && isset($temp)){ <br>if(file_exists(Templ_DIR.$temp)){ <br>//echo Templ_DIR.$temp; <br>require Templ_DIR.$temp; <br>}else{ <br>exit('视图文件不存在!'.$temp); <br>} <br>}else{ <br>exit('此页未设置显示模板!'.$temp); <br>} <br>unset($views); <br>}else{ <br>exit('模型文件不存在:'.$url.'.model.php'); <br>} <br>} <br>} <br> <br>但里面有个注意的是模型文件里面需要</li></ol></pre>输出的数据全部都是通过views这样一个类进行</li></ol></pre>输出,包里视图文件里面所有的系统参数等。不知道,这种方法是不是显示得多此一举,原来是想把所有要</li></ol></pre>输出的数据进行封装。 <br>其它的模板文件也都是用类进行了封装,具体怎么写高人应该都知道了吧,这些只是我的个人见解,但是缓存应该怎么写,现在还是一个模糊的概念,是不是在读取数据的时候,方向应该是读取缓存,然后再判断缓存是否存在,再判断是否需要建立缓存呢?具体操作方法还是不是很明白。希望能有高人指点指点。
- <p></p>
- <p align="left"><span id="url" itemprop="url">http://www.bkjia.com/PHPjc/325452.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/325452.html</span><span id="genre" itemprop="genre">TechArticle</span><span id="description" itemprop="description">一、入口 入口文件可以是单文件也可以是多文件,我现在用的基本属多文件,但是入口文件内容基本都是一样,为以后的修改其它的入口方...</span></p>