0

0

手写一个自己的简单MVC框架myPHP

php中文网

php中文网

发布时间:2016-08-08 08:49:49

|

2074人浏览过

|

来源于php中文网

原创

myphp框架

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

一、项目单一入口

入口文件

myphp\index.php前台

      一个网站所有的请求都请求一个文件(入口文件)index.php\admin.php。入口很简单,用于定义一个访问的权限,引入初始化文件

初始化文件

      字符集

立即学习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)

B2C_UQ云商系统
B2C_UQ云商系统

UQ云商系统(B2C版本)是一套优秀并且小巧的电商系统,框架为平台自己开发,简单易用,电脑端手机端模块分离,接口随处调用。

下载

 

总结:

      全局变量          只在全局

      局部变量          只在定义的函数内

      类属性             可以跨方法使用

      全局常量          可以跨类使用

      $_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模型文件

l  application之所以能够将根据用户的请求,准确的调用类中的方法,完全依赖于我们定义的url的规则与类的命名规则。

应用命名空间:

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

      如果涉及到空间,那么一定要考虑到类名前会有空间名。

8、效果显示

当访问网址的时候会进行默认的路由转发:

 

 进行其它控制器的方法访问,通过url

补充:pathinfo模式可以通过$_SERVER['PATH_INFO'];

大致就是这样,其它一些等以后我有空再补充,我还有很多需要学习的。

座右铭:人生就是不断地在学习,再学习。

 

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

28

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

8

2026.01.26

苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

31

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

3

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

5

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

35

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

12

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

40

2026.01.26

抖币充值官方网站 抖币性价比充值链接地址
抖币充值官方网站 抖币性价比充值链接地址

网页端充值步骤:打开浏览器,输入https://www.douyin.com,登录账号;点击右上角头像,选择“钱包”;进入“充值中心”,操作和APP端一致。注意:切勿通过第三方链接、二维码充值,谨防受骗

7

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号