手写一个和谐的简MVC框架myPHP

myPHP框架

      采用的是MVC
思想,应用纯面向对象及项目纯粹入口,实现之一个自定义的框架。(自己感兴趣之勤学苦练)

平等、项目纯粹入口

进口文件

myphp\index.php前台

     
一个网站有着的乞求都请求一个文书(入口文件)index.php\admin.php。入口非常简短,用于定义一个拜的权力,引入初始化文件。

初始化文件

      字符集

      路径

      配置文件

      自动加载

      系统错误display_errors=’on’      error_reporting =E_ALL

     
主要用于落实字符集的设置、路径常量的布置、配置文件、系统错误等,分析URL中之模块或作为,之后自动分发模块和行为(本质就是实例化对象,并调用对象的方式)。Application

 

控制器C

     
主要因用户的请求完成工作逻辑处理。调用模型(M),接收数据,并调用视图类来处理数量,回显数据被用户。

模型M

     
一个模型对应数据表,模型在代码中反映是一个接近。类中之不二法门就是冲用户之事务要实现之对准数据表的操作SQL语句(用户的请求最终在范中之反映是平等长条SQL)。

      SQL语句之执行由DB类(本框架中运用的是自从曾打包的PDO类)来推行。

视图V

      主要用来落实用数据展示在HTML页面中。

和谐绘画的觊觎:

MVC的优势:各司其职,互不干扰,有利于开发被的分工;

                 有利于代码的选用;

                 市场达成主流的框架基本都满足MVC的思。

老二、搭建框架myPHP

      在一个网站受见面为此很多文件,合理之做法,是使用目录
分门别类的拓存放。

1、目录结构:

对此一个网站来前台部分和后台部分,有一定量种植实现方案:

      1、双主机(两单域名),前台和后台各对应一个域名。安全

      2、前后大共同用一个主机。方便(首先方案)

 

X:\依据你自己多的环境之路线\myphp                     网站根本目录

X:\根据你自己多的环境的门径\myphp\Admin       网站后台主目录

 这里所创建的文书夹:

 

2、创建主机

以httpd-vhosts.conf配置文件配置

 

3、入口文件

在/myphp/下创建index.php文件

 

说明:

     
在输入文件定义ACCESS常量,在其后的装有的PHP文件被判断这个常量,如果发生,则象征合法访问,如果无,则意味着非法访问

     
由于引入的Application.class.php文件中以命名空间,所以于访问Application类时需要采取非限定访问。Core\Application::run();

拓展:

      另一样种实现项目纯粹入口的方案是以Apache的rewrite机制。

4、初始化文件

a、在core目录创建Application.class.php文件

 

先期进行测试是否足以看;注意:在底下我弗见面截图及class名那里,所有的艺术还是在类似内之。

b、在Application类中创造setChar方法来成功字符集的装置

 

以形容副一个私房的静态方法后需要在作为单纯说的国有静态方法访问使其收效:注意:在脚我不见面再次多截图其他办法的纯粹说,都当即时里面。

c、设置系统错误处理方式

 

一般在开开发之时节,为预防用户观看错误信息,而出现的免自己界面,故一般性会在php.ini的布局文件display_errors=off;关闭

d、定义目录常量

     
由于php文件中见面一再的引入文件,被引入的文书存放于目录内,为了统一保管,方便维护,将引得的绝对路径,设置为目录常量

(echo,var_dump是展开部分调式,查看你想要之消息是否是)

e、引入配置文件

      配置文件中的安排的音信一般是网站遭遇或会见变动,但老少还改之信

创建布局文件myphp/config/config.php

 

 

说明:

      php文件被之return是用数据返回文件包含语句处(include、require)

 

总结:

      全局变量          只在大局

      局部变量          只以概念之函数内

      类属性             可以跨方法运用

      全局常量          可以跨类使用

      $_SESSION      可以超过脚论以

     

f、自动加载

      __autoload();                     由PHP自动加载机制调用的

      spl_autoload_register();       
由PHP为咱提供的得于机关加载机制面临上加多个近乎于__autoload()的函数。

调节要于单入口进行测试:

别文件夹的自发性加载:一般只有加载有类文件之文书夹

 注册指定函数作为活动加载函数:

说明

所有loadCore、loadController、loadModel等,都被autoLoad调用,

autoLoad又在run方法吃于调用

负有的类的实例化及类的法门的移动是在index.php中

5、分析URL

     
所有的求的本质者是一个URL,都求提Application,如果想叫Application能够规范掌握用户的乞求,要出于哪一个接近公事的呀一个方式处理,那么网站占所有的URL的装要出肯定的条条框框,类公事称也如产生得的平整:

l  URL的规则:

      http://localhost/index.php?module=类名&action=类中的方法名

l  类的命名规则:

      如果是控制器类:

            类名Controller       文件名:      类名Controller.class.php

      如果是范类:

            类名Model             文件名:      类名Model.class.php

 

 

6、分发请求

(本质是动态实例化控制器,调用控制器的方法)

 

7、开起session

留意:所有的办法还使以单纯说访问

总结:

l  所有的php文件之运行都当index.php文件中。

l  application只处理控制器(controller)文件

l  controller控制器文件处理model模型文件


application之所以能够用依据用户之求,准确的调用类中之方法,完全靠让我们定义之url的条条框框及类似的命名规则。

运命名空间:

      命名空间的命名的平整,是坐文件所在的目录名吧命名空间名。

      如果波及到半空,那么自然要考虑到类名前会有空间名。

8、效果亮

当访问网址的时节会展开默认的路由转发:

 

 进行其他控制器的主意访问,通过url

补充:pathinfo模式可以经过$_SERVER[‘PATH_INFO’];

大约就是是如此,其它一些等于下自己发空重补充,我还有许多急需上之。

座右铭:人生就是是频频地在学,再修。

 

相关文章