Home >php教程 >php手册 >PHP中MVC框架之文件入口实例详解

PHP中MVC框架之文件入口实例详解

WBOY
WBOYOriginal
2016-06-13 10:04:151774browse

本文章来介绍了php的新知识关于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,这种方式并未指定访问这个目录下的哪个文件,一般默认的当然是index.php或者index.html,个人认为这种方式不管是程序制作或维护都较麻烦点,所以现在也很少见到有这种形式的URL,以前看过有关SEO的文章,貌似入口为这种类型的对SEO优化不太好(keheng个人愚见)。其实是不是不太好我们平常就可以观察到,比如我们百度下,随便输入一个关键词,在开头几页基本不到类似的地址被搜索出来。在SEO优化中就有一条为地址url的层级结构保持在三层内为宜。我们做WEB项目前当然要考虑到这些问题了。

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

 代码如下 复制代码

define('UPLOAD_PATH', './Uploads/');
 
 define('VERSION', 'v2.1 Released');
 
 define('UPDATETIME', '20120323');
 
 define('APP_NAME', 'myphp');
 
 define('APP_PATH', './myphp/');
 
 define('APP_LANG', true);
 
 define('APP_DEBUG',false);
 
 define('THINK_PATH','./Core/');
 
 require(THINK_PATH.'/Core.php');

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

 代码如下 复制代码

 
          require_once './include/common.inc.php';
 
          $views->display('index.html');        
 
 ?>

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

 

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

 代码如下 复制代码

 
          require 'command/config.php';
 
          require 'command/app.php';
 
          app::run($config);
 
 ?>

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

 代码如下 复制代码

 
 $config['Templates'] = array(                //名称记得全转为小写
 
          ‘keheng’                              =>                                 array('keheng.php',0),
 
          ' index '                                 =>                                 array('index.php',0),
 
 );
 
 ?>

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

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn