ACCESS手写一个友好的粗略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页面中。

祥和画的图:

ACCESS 1

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

                 有利于代码的选定;

                 市场上主流的框架基本都知足MVC的思维。

二、搭建框架myPHP

      在一个网站中会用不可胜数文本,合理的做法,是行使目录
分门别类的拓展存放。

1、目录结构:

对于一个网站有前台部分与后台部分,有三种已毕方案:

      1、双主机(多少个域名),前台与后台各对应一个域名。安全

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

 

X:\根据你协调搭的环境的门径\myphp                     网站根目录

X:\依照你协调搭的条件的路径\myphp\Admin       网站后台主目录

 那里所创的文书夹:

ACCESS 2

 

2、创立主机

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

 ACCESS 3

3、入口文件

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

ACCESS 4

ACCESS 5

 

说明:

     
在输入文件定义ACCESS常量,在之后的保有的PHP文件中判断此常量,纵然有,则意味合法访问,假如没有,则表示违规访问

     
由于引入的Application.class.php文件中行任务名空间,所以在访问Application类时须求动用非限定访问。Core\Application::run();

拓展:

      另一种已毕项目纯粹入口的方案是选取Apache的rewrite机制。

4、伊始化文件

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

 ACCESS 6

先进行测试是不是足以访问;注意:在上面我不会截图到class名那里,所有的方法都是在类内的。

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

 ACCESS 7

在写入一个民用的静态方法后必要在作为纯粹出口的国有静态方法访问使其收效:注意:在底下我不会再多截图其余办法的单一出口,都在那之中。

ACCESS 8

c、设置系统错误处理情势

 ACCESS 9

相似在做开发的时候,为防备用户看到错误音信,而出现的不协调界面,故一般性会在php.ini的布局文件display_errors=off;关闭

d、定义目录常量

     
由于php文件中会频仍的引入文件,被引入的文本存放在目录内,为了统一管理,方便维护,将引得的绝对路径,设置为目录常量

(echo,var_dump是开展局地调式,查看你想要的新闻是或不是正确)

ACCESS 10

e、引入配置文件

      配置文件中的配置的新闻一般是网站中或者会变动,但很少更改的新闻

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

 ACCESS 11

 

说明:

      php文件中的return是将数据重返文件蕴含语句处(include、require)

 ACCESS 12

ACCESS,总结:

      全局变量          只在大局

      局地变量          只在概念的函数内

      类属性             可以跨方法运用

      全局常量          可以跨类使用

      $_SESSION      可以跨脚本利用

     

f、自动加载

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

      spl_autoload_register();       
由PHP为大家提供的可以向机动加载机制中添加三个近乎于__autoload()的函数。

ACCESS 13

调节要在单入口举行测试:

ACCESS 14

ACCESS 15

任何文件夹的自行加载:一般只加载有类文件的文本夹

ACCESS 16

ACCESS 17

 注册指定函数作为机关加载函数:

ACCESS 18

说明

所有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

 ACCESS 19

 

6、分发请求

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

 ACCESS 20

7、开起session

ACCESS 21

小心:所有的不二法门都要在单纯出口访问

ACCESS 22

总结:

l  所有的php文件的周转都在index.php文件中。

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

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


application之所以可以将根据用户的央求,准确的调用类中的方法,完全依靠于我们定义的url的条条框框与类的命名规则。

行任务名空间:

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

      假诺涉及到半空,那么肯定要考虑到类名前会有空间名。

8、效果展现

当访问网址的时候会开展默许的路由转载:

ACCESS 23

ACCESS 24

 

 进行其余控制器的不二法门访问,通过url

ACCESS 25

ACCESS 26

增补:pathinfo情势可以因此$_SERVER[‘PATH_INFO’];

ACCESS 27

ACCESS 28

大体就是如此,其余一些等随后我有空再补偿,我还有许多必要学习的。

座右铭:人生就是连连地在求学,再深造。

 

相关文章