首页 > 后端开发 > 正文

制作一个简易的PHP框架 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

2023-10-07 01:54:44 | 我爱编程网

最近经常有小伙伴私信询问制作一个简易的PHP框架 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了相关的问题,今天,我爱编程网小编整理了以下内容,希望可以对大家有所帮助。

制作一个简易的PHP框架 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

php学习问题,按照网的上材料自学做一个mvc简单框架。浏览时报错。请大神帮忙看看是哪里的错误。

从代码看,$data 变量在使用前并没有进行定义。

mvc 的架构是模型、视图、控制器三者分离的架构,从你的代码中看,其实 democontroller.php 控制器与视图并没有分离。

以下是 mvc 执行流程示例:

1 浏览者 -> 调用控制器,对它发出指令
2 控制器 -> 按指令选取一个合适的模型
3 模型 -> 按控制器指令取相应数据
4 控制器 -> 按指令选取相应视图
5 视图 -> 把第三步取到的数据按用户想要的样子显示出来

以下是mvc代码示例:

<?php
require_once('View/testView.class.php');
require_once('Model/testModel.class.php');
require_once('Controller/testController.class.php');
$testController = new testController();
$testController->show();
?>

制作一个简易的PHP框架 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

用php怎么做一个如人人网的网站框架,都现需要考虑哪些东西啊

有想法...

1. 个人展示:博客系统,个人信息,换肤(从数据库读取CSS),权限
2. 人际网络: -〉好友推荐(不遍历数据库,按照6度空间关系找)
-〉好友权限(包括未加的人,如校友的权限)
-〉涂鸦墙(好友最近行为展示)
3. 在线聊天:AJAX,JavaScript + PHP
4. 网页应用: -〉frame 嵌入
-〉自主API
5. 商业: -〉precise marketing 系统(类似好友推荐)
-〉冲值、积分、登陆时间累计等

粗略想到这么点

要说框架,上述1、2、4、5模块中只设置控制页用来控制输出和提供功能入口,然后通用功能页-浏览编辑(查、增、删、改),因为要大量AJAX,最好集成功能到最少页,牛X的可以把功能放在数据库中,没试过,可能行不通。

数据库异常复杂...还可能需要在服务器端编写自己的应用来满足服务,比方说,根据对数据库的提交操作,为每个用户的行为创建零时XML或其他文件,发送到客户端,客户端JavaScript响应后接收,即用户能即时看到好友的最新行为。

不要细问,我一个人做不出来,有错漏大家指正,一起讨论,学习中。

制作一个简易的PHP框架 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

类自动加载跟路由是框架最基础的特性

给你点自动加载的思路,首先现在写框架必须用上命名空间,框架内部的类文件夹根据命名空间命名方便自动加载

在入口文件引入自己写的Autoload.php 通过spl_autoload_register获得要加载的类名

spl_autoload_register(function ($class_name) {
    Autoload::splAutoload($class_name);
});

asseek\route\Router


asseek\Func


asseek\route\Route


app\www\docs\docsController


asseek\Controller


asseek\View


如果你采用命名空间上面函数的$class_name是类似这样的字符串,只要你有当前项目的初始路径再根据这段字符串 require相应的php文件应该不难,自动加载就搞定了。 我爱编程网

路由就更简单了就是通过$_SERVER['REDIRECT_URL'] 或$_SERVER['REDIRECT_URI']  获得用户访问的URL,根据自己的框架制定的规则从URL中取得控制器与控制器方法名称,判断controller的类是否存在,存在则实例化,再判断controller的method是否存在,存在则调用方法,方法里面加载视图等就是另外的事情了。

以上就是我爱编程网小编整理的内容,想要了解更多相关资讯内容敬请关注我爱编程网。
与“制作一个简易的PHP框架 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了”相关推荐
python xlwt excel 单元格边框,如何才能有如下的加黑边框
python xlwt excel 单元格边框,如何才能有如下的加黑边框

pythonxlwtexcel单元格边框,如何才能有如下的加黑边框borders = xlwt.Borders()borders.left = 1borders.right = 1borders.top = 1borders.bottom = 1borders.bottom_colour=0x3A    style = xlwt.XFStyle()style.borders = border

2023-12-12 18:09:59
如何用Python编写一个素数环?
如何用Python编写一个素数环?

如何用Python编写一个素数环?代码:n=int(input("请输入最大数n:"))lists=[[1]]#多个素数环surplusnum=list(range(1,n+1))#剩余的数defsumisprime(x,y):#x与y之和是否是素数isprime=True#是否是素数s=x+y#和foriinrange(2,int(s**0.5)+1):

2023-12-11 17:02:40
python时间序列(2)(用python编个十进制转换为六进制的程序!!在线等)
python时间序列(2)(用python编个十进制转换为六进制的程序!!在线等)

python时间序列(2)时期(period)表示的是时间区间,比如数日、数月、数季、数年等。Period类所表示的就是这种数据类型,其构造函数需要用到一个字符串或整数,以及表11-4中的频率:这里,这个Period对象表示的是从2007年1月1日到2007年12月31日之间的整段时间。只需对Period对象加上或减去一个整数即可达到根据其频率进行位移的效果:如果两个Per

2023-12-13 18:17:36
我的世界如何写代码
我的世界如何写代码

我的世界如何写代码以下是按要求改动的代码:编写代码以制作我的世界(Minecraft)模组是一项既有趣又有挑战性的任务。首先,你需要选择一个编程语言来编写Minecraft模组。目前,最常用的语言是Lua,因为Minecraft的开发者也使用它来编写游戏逻辑。如果你熟悉Python,也可以尝试使用Python编写模组,但Lua更为常见。一、获取Minecraft

2023-12-13 17:05:15
如何在python IDLE Shell窗口中编写程序计算圆的周长?
如何在python IDLE Shell窗口中编写程序计算圆的周长?

如何在pythonIDLEShell窗口中编写程序计算圆的周长?可以按照以下步骤在PythonIDLEShell窗口中编写计算圆周长的程序:打开PythonIDLEShell窗口。在窗口中输入以下代码:pythonCopycoderadius=float(input("请输入圆的半径:"))circumference=2*3.14159*radiuspr

2023-12-13 02:25:56
python自动生成插画-python怎么根据数据生成图像
python自动生成插画-python怎么根据数据生成图像

python自动生成插画-python怎么根据数据生成图像如何用python画五一海报要用Python画五一海报,需要用到Python的绘图库,比如matplotlib、Pillow等。以下是一个简单的例子,演示如何使用Python和Pillow库来制作五一海报:fromPILimportImage,ImageDraw,ImageFont#创建一个空白的画布,大小为800x

2023-12-13 15:46:29
Python怎么输入和输出?Python的输入和输出方法
Python怎么输入和输出?Python的输入和输出方法

Python怎么输入和输出?Python的输入和输出方法Python是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,它也是互联网最热门的编程语言之一。不管是传统的Web开发、PC软件开发、Linux运维,还是大数据分析、机器学习、人工智能,Python都能胜任。对于准备自学或者想要提升Python的小伙伴来说,可能找到一套合适的课程学习往往能够事半功倍!为大家提供到了四套潮享教

2023-12-13 15:05:46
python编程问题? 大学生入门Python看这四个阶段就够了
python编程问题? 大学生入门Python看这四个阶段就够了

python编程问题?可以使用Python的itertools模块来生成所有可能的组合,然后再计算每个组合的和。以下是示例代码:在此代码中,我们首先使用itertools.combinations()函数生成了所有可能的组合,并将它们存储在一个名为combinations的列表中。然后,我们对列表中的每个组合求和,将它们存储在另一个名为sums的列表中。最后,我们通过将sums转换为

2023-12-13 13:15:43