php这种语言本来就是函数化为主的语言,讲究的是简单实用。但是现在市面上现在流行的框架大多臃肿,复杂,学习难度大,同时有大量用不着的东西,做个小网站或者小项目还是太笨重。所以 这里我提供一点用纯php来写网站的思路或者自己写个简易框架的思路,供大家参考。
首先,我们说说我这个框架的用户访问网站的流程:一般一个小网站 是用户发出请求-》路由用户请求-》对应的负责业务模块-》从数据库获得数据-》返回给业务模块-》业务模块或者路由模块载入模版-》模版渲染业务模块的数据-》返回给客户。
所以整个业务流程包含如下几个部分:1.路由器 2.业务模块(数据的保持、读取、处理)3.页面模版 4.基础组件,比如模版渲染引擎,数据库操作模块等。
路由器的实现:一般路由器的实现有很多种方法,默认的就是用户要什么页面就给什么页面,但是这样的问题是业务模块可能会非常多,不方便管理,实际使用种 往往用户一个请求我们调用一个函数或者一个数据接口就够了。所有这里我们不妨把一类业务甚至小网站的所有业务写到一个类里边,然后动态的创建这个类就好了,由用户直接传参或者webserver解析成get参数传参。 假设我们调用的的模块传递参数叫m,方法为act,那么用下面一句动态创建就可以做好路由工作,甚至渲染页面。
//得到模块名和方法
以上路由甚至渲染就可以做好了,如果前端是浏览器,那需要配合模版,把数据填充到模版里生成最终html页面返回给客户端;如果前端只要数据,这个渲染只需要把返回的数据转化为json(比如用json_encode)就可以了。这里只写了核心的代码 ,实际上需要再加点容错的代码还有参数安全过滤代码等必要的代码。也可以私下找我探讨 wx:4262833。
业务模块的实现:按照前面路由写法,大家已经猜出来了,业务模块就是一个类,每个方法对应一个页面或者一个接口就好,面向对象的优点我们还是可以汲取(但是没有必要为面向对象而面向对象)。这样比每个模块一个php文件要好维护许多。
class bizmode
{
var $res=array("code"=>1,"msg"=>"sucess");
var $userid=0;
var $username="";
function __construct()
{
}
function
这里要说的是 传出参数建议为php原生的array ,原因如下:1.mysql的返回结果就是默认的数组 2.数组根据需要很容易转化成json数据,这会减少甚至无需做任何格式转换的代码工作量。
页面渲染模块,如果只需要返回数据的,做json_encode就足够了,如果需要后台渲染页面的,选择任何一种支持数组数据的模版引擎都非常好,尽量选择语法简单的轻量级模版引擎就好,需要的也可以详聊。我个人也写了一个模版引擎,能实现简单的变量替换,条件替换,循环和嵌套的基本功能,我认为也足够用了。
基础模块:这里主要是数据库访问模块,简单封装下PDO就很好了,主要也就2个功能,查数据和写数据。为了轻量级其实个人写也可以的,封装后支持带参的sql语句就可以了,用sql不失灵活,同时sql总共就4句,没有什么学习难度。这里不建议做复杂封装,很多框架都对数据访问做了很复杂的封装,有些甚至脑残到复杂点的查询非常难以实现和浪费性能,强烈不推荐这类的第三方数据库封装模块。这里可以给大家看下我封装的数据访问模块,只有2个方法:getData和saveData
function jizan()
{
$dt=getData("select * from jizan where id in( select jizanid from jizancust where custid='".$_GET['custid']."') order by id desc ");
$this->res=$dt;
$this->res['title']="我参与的集赞";
}
这个是我写的一个业务模块,用这样的方法获取数据超级简洁了。
先写这么多吧,有谁需要可以再问我仔细沟通。