• [原创]keheng浅谈PHP中MVC框架之文件入口


    MVC的文件入口怎么写,完全是根据程序员的引擎设计来做,也是根据程序员喜好来做,但我们的最终目的却是通过简单的代码引入引擎来处理其它的事务,就像我们要开车一样,我们首先要点火,发动机才能发动一样。在写入口之前我们需要考虑几个方面,URL解析方式,需要哪些用户参数或系统需要带入,用户参数需要更改的地方,我们需要统一用一个文件来引入,文件可以是xml,也可以的PHP,也可以是其它的想到的方法,但keheng这里用的却是php里面数组形式引入,这种形式貌似写缓存的形式,从数据库读取了数据再生成一个php文件,再require此文件即可。当然,也可以在写引擎的过程中再写入口也行,只要能达到我们的目的就行。

    就我们平常见到的文件入口来看,文件入口一般分为单文件入口和多文件入口,当然也有可能有其它的文件入口没见过。

    单文件入口当然是指网站访问始终都是有访问index.php这个文件,但关系到里面显示的内容却是根据后台的参数来加载,

    比如:http://www.XXXX.com/index.php? Conttoller=index&action=show&id=1

    这里的Conttoller就是我们需要显示的页面,通过获取Conttoller的值来确实我们的MVC加载的是哪个模型,显示的是哪个视图,一般都需要建立一个专用的路由类来进行地址的判断。action则是此模型的哪个操作,比如是显示数据,或者添加数据,或者显示文章类的,至于ID的作用是什么这里就不用说了。

    多文件入口当然是指网站里面除了index.php文件名,还有其它文件访问,比如同一个网站下有index.php,about.php………..等。

    但还有另外一种URL方式http://localhost/control/ index / action/1,一般为伪静态解析,以前看过有关SEO的文章,貌似入口为这种类型的对SEO优化不太好(keheng个人愚见)。其实是不是不太好我们平常就可以观察到,比如我们百度下,随便输入一个关键词,在开头几页基本不到类似的地址被搜索出来。在SEO优化中就有一条为地址url的层级结构保持在三层内为宜。我们做WEB项目前当然要考虑到这些问题了。

    以下为网上下载的一个模板的文件入口:

     1 define('UPLOAD_PATH', './Uploads/');
     2 
     3 define('VERSION', 'v2.1 Released');
     4 
     5 define('UPDATETIME', '20120323');
     6 
     7 define('APP_NAME', 'myphp');
     8 
     9 define('APP_PATH', './myphp/');
    10 
    11 define('APP_LANG', true);
    12 
    13 define('APP_DEBUG',false);
    14 
    15 define('THINK_PATH','./Core/');
    16 
    17 require(THINK_PATH.'/Core.php');

    它的核心是THINK,入口指定了程序版本,更新日期等,真正的处理文件却是在Core.php文件里。由于PHP模板都是开源的,个人认为可能有些网络公司为了不让别完全搞清楚他的产品,故意在PHP代码里面多层次调用,来迷惑想学习他代码思路的程序员,让程序员跟来跟去跟的一头雾水,其实我就这样过,也可能是自己阅历不够造成的。

    转载请注明出处:http://www.cnblogs.com/keheng/archive/2012/05/26/2519102.html         作者:[九狐科技]keheng

    另一种入口写法:

    1 <?php
    2 
    3          require_once './include/common.inc.php';
    4 
    5          $views->display('index.html');         
    6 
    7 ?>

    加载了引擎文件后,在告诉$views类显示哪一个视图文件,这样确实是直观很多,但我个人不怎么喜欢这种方法,虽然如果修改文件模板直接在对应的文件进行修改,感觉不太好控制,而且貌$views到最后没关闭,占着内存。

    看了些别人的入口后keheng自己也有了入口的思路。不管是单文件还是多文件,全都用这入口,总之网站根目录下文件内容全都是这个

    1 <?php
    2 
    3          require 'command/config.php';
    4 
    5          require 'command/app.php';
    6 
    7          app::run($config);
    8 
    9 ?>

    实际上我的对像模型是在config.php里设置好的

     1 <?php
     2 
     3 $config['Templates'] = array(                //名称记得全转为小写
     4 
     5          ‘keheng’                              =>                                 array('keheng.php',0),
     6 
     7          ' index '                                 =>                                 array('index.php',0),
     8 
     9 );
    10 
    11 ?>

    分析地址调用相应的视图,这样我就可以专门用一个文件来进行模型与视图对应设置,在用的时候即可用require 'command/config.php';加载这个数组。

    可能有高人会认为这种方法貌似不太好,可能是keheng见识太少阅历不够或技术还不够,现在还没想到更好一些的方法

    不管入口怎么写,最终的目的是为了引入引擎,让网站跑起来,程序制作中以方便为主,怎么写入口根据自己的爱好,怎么样顺手就怎么写。

    下一篇为《keheng浅谈PHP中MVC框架之系统引擎》,这些都只是说的keheng对MVC的了解来写的,keheng真心的希望有高人指点有问题的地方,这里先说声:谢谢!

  • 相关阅读:
    linux 查看僵尸进程
    apache 修改最大连接数
    ng压缩后,形参被简化问题解决:
    $rootScope 与 $scope 区别:$rootScope对象是“单例的”——一个模块中只有一个$rootScope;
    vue+webpack在“双十一”导购产品的技术实践
    过滤指令:number currency lowercase(转为小写)/uppercase(转为大写)
    ng-show ng-disabled ng-show ng-hide 值的布尔值改变时,状态发生变化
    二,数据双向绑定
    一、angular:module-Controller-Model-View (模块-控制器-模型-视图);异步请求$http
    5、面向对象
  • 原文地址:https://www.cnblogs.com/keheng/p/2519102.html
Copyright © 2020-2023  润新知