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、自动加载