热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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项目前当然要考虑到这些问题了。

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

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

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

代码如下:

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

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

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

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

实际上我的对像模型是在config.php里设置好的,代码如下:

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

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

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


推荐阅读
  • 本文探讨了缓存系统中的两个关键问题——缓存穿透与缓存失效时的雪崩效应,以及这些问题的解决方案。此外,文章还介绍了数据处理、数据库拆分策略、缓存优化、拆分策略、应用架构演进及通信协议的选择等内容。 ... [详细]
  • 解决CSS因MIME类型不匹配导致的加载失败问题
    本文详细介绍了在Web开发过程中,遇到CSS文件因MIME类型不匹配而无法正确加载的问题及其解决方案,适合前端开发者阅读。 ... [详细]
  • 软件项目管理实践——Jenkins持续集成与Maven、GitHub的应用
    本文详细介绍了如何利用Jenkins实现持续集成,以及Maven和GitHub在项目开发中的具体应用。包括环境搭建、工具安装、项目创建及代码管理等关键步骤。 ... [详细]
  • 下面根据配置文件,来说明一些底层与webservices的关系:回顾一下servlet的映射模式。我们知道,servlet是从javax.servlet.http.HttpServ ... [详细]
  • 解决fetch上传图片至微信公众号H5页面的问题
    在近期的一个项目需求中,需要在微信公众号内嵌入H5页面,并实现用户通过该页面上传图片的功能,包括拍摄新照片或从已有相册中选择。前端开发中采用了fetch API进行接口调用,但遇到了上传图片时数据无法正确传递的问题。 ... [详细]
  • KKCMS代码审计初探
    本文主要介绍了KKCMS的安装过程及其基本功能,重点分析了该系统中存在的验证码重用、SQL注入及XSS等安全问题。适合初学者作为入门指南。 ... [详细]
  • 本文详细记录了《PHP与MySQL Web开发》第一章的学习心得,特别关注了PHP的基本构成元素、标记风格、编程注意事项及表单处理技巧等内容。 ... [详细]
  • 本文详细介绍了如何手动编写兼容IE的Ajax函数,以及探讨了跨域请求的实现方法和原理,包括JSONP和服务器端设置HTTP头部等技术。 ... [详细]
  • 每位开发者都应该拥有一个展示自我技能与分享知识的空间——个人技术博客。本文将指导你如何使用静态网站生成器Hexo结合GitHub Pages搭建这样一个平台。 ... [详细]
  • 深入浅出:Java面向对象编程
    本文详细介绍了Java语言的核心特性——面向对象编程。探讨了Java的基本概念、平台无关性、丰富的内置类库及安全性,同时深入解析了类加载器、垃圾回收机制以及基本数据类型和其包装类。 ... [详细]
  • 自从踏入编程领域,设计模式这一术语便频繁出现在耳边。初听时或许感到陌生且高深,但随着经验的积累,逐渐意识到其重要性。本文旨在探讨设计模式的基础知识及其在实际开发中的应用价值。 ... [详细]
  • 本文探讨了Java异常处理的本质,提出了设计模式以优化异常处理,并分析了在AOP模型中异常处理的应用。文章强调了正确使用Java异常对于提升代码质量和维护性的关键作用。 ... [详细]
  • mybatis相关面试题 ... [详细]
  • 本文介绍了iOS应用开发的主要框架,包括Foundation、UIKit、CoreData及CoreGraphics等,并探讨了开发iOS应用所需的硬件和软件环境,以及推荐的编程语言。 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
author-avatar
nanakuailed
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有