php这种语言本来就是函数化为主的语言,讲究的是简单实用。但是现在市面上现在流行的框架大多臃肿,复杂,学习难度大,同时有大量用不着的东西,做个小网站或者小项目还是太笨重。所以 这里我提供一点用纯php来写网站的思路或者自己写个简易框架的思路,供大家参考。

首先,我们说说我这个框架的用户访问网站的流程:一般一个小网站 是用户发出请求-》路由用户请求-》对应的负责业务模块-》从数据库获得数据-》返回给业务模块-》业务模块或者路由模块载入模版-》模版渲染业务模块的数据-》返回给客户。

所以整个业务流程包含如下几个部分:1.路由器 2.业务模块(数据的保持、读取、处理)3.页面模版 4.基础组件,比如模版渲染引擎,数据库操作模块等。

路由器的实现:一般路由器的实现有很多种方法,默认的就是用户要什么页面就给什么页面,但是这样的问题是业务模块可能会非常多,不方便管理,实际使用种 往往用户一个请求我们调用一个函数或者一个数据接口就够了。所有这里我们不妨把一类业务甚至小网站的所有业务写到一个类里边,然后动态的创建这个类就好了,由用户直接传参或者webserver解析成get参数传参。 假设我们调用的的模块传递参数叫m,方法为act,那么用下面一句动态创建就可以做好路由工作,甚至渲染页面。

//得到模块名和方法
$model =  $_REQUEST['m'] ;
$act =  $_REQUEST['act'] ;//动态执行模块 模块名和类名一致 如果模块名固定可以省略传递模块名的参数
include "controls/".$model.".php";
$obj=new $model;
//执行方法
$dt=$obj->$act();
//渲染模版
render($model."_".$act.".html",$dt);

以上路由甚至渲染就可以做好了,如果前端是浏览器,那需要配合模版,把数据填充到模版里生成最终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']="我参与的集赞";}

这个是我写的一个业务模块,用这样的方法获取数据超级简洁了。

先写这么多吧,有谁需要可以再问我仔细沟通。

php返回json套数组_教你PHP怎么不用框架写优雅的中小网站相关推荐

  1. php返回json数组元素,php生成返回json对象数组(json支持中文)

    php生成返回json对象数组 注意两种方法生成的对象数组在结构上的区别 $jarr=array( 'total' => 239, 'list' => array( array( 'cod ...

  2. java数组里套数组_用JAVA进行Json数据解析(对象数组的相互嵌套)

    这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相 ...

  3. php json转数组_相同逻辑的php与golang代码效率对比,最好语言落谁家…

    业务逻辑: 逐行读取一个3.6MB的文件, 把每行的字符串切割成数组, 计算二维数组中的经纬度值与目标地点的经纬度的距离, 符合限定距离范围的结果存入map中, 将结果覆盖写入一个新的文件, 计算程序 ...

  4. c#解析json字符串数组_使用json.NET和C#解析JSON数组

    我有一些我需要解析的以下 JSON格式的数据: { "status":0, "timestamp":"8:20pm", "rout ...

  5. python读json文件数组_如何在python中从json文件读取json对象数组

    我有一个名为example.json的json文件,包含以下内容[{ "product/productId" : "XXX", "product/ti ...

  6. python3 mysql代码行_教你用100多行写一个数据库(附源码)|python3教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 本文介绍的是以为中国的IT资深人士写的一个简单的数据库,没有我们使用的数据库那么强大,但是值得大家借鉴.可 ...

  7. 如何把自己的经历写成小说_教你如何把一本小说写成太监

    文/不追猫 2016年过完春节我决定开始写小说,当时我辞职了,前一份的工作是工程管理,其实是什么都做,需要去工地,去找甲方监理办事,做工程资料.决算送审等等,属于跑腿打杂的那种. 那不是我喜欢的工作, ...

  8. noteexpress删除标签_教你使用NoteExpress管理文献~写论文!

    中国每年大约有50万硕士毕业生,本科毕业生估计超过750万,毕业之前的一篇论文给800万学子出了不小的难题.今天火箭君介绍文献管理软件NoteExpress的一些入门技巧,帮助大家更好的进行文献的查找 ...

  9. php接口返回一个数组怎末写_php api返回json数组

    [PHP] 为JSON数据的API返回空数组或者空对象 PHP 中,不管是 list 或者 dictionary 都使用一样的 [](或者 array()) 来定义. 在使用 JSON 作为 API ...

最新文章

  1. Play framework简介
  2. 当我们谈论「Chatbot」时,我们在读什么? | 论文集精选 #05
  3. Loj#6485. LJJ 学二项式定理
  4. MySQL中OR和AND的区别是什么____MySQL中or与in
  5. Postgresql 填充所有的时间点
  6. Android 解决手机unauthorized错误
  7. 网络从业人员职业规划路线图
  8. Android FrameWork浅识
  9. python快速移动文件内容到另一个文件夹
  10. 技术分享| RTC通讯中常用的音频格式
  11. jS 清除form表单
  12. Android证书信任问题与大表哥
  13. 《动手学深度学习》(PyTorch版)代码注释 - 32 【RNN_with_zero】
  14. Pathon简介和优势
  15. Linux centos redhat 装NVIDIA显卡驱动
  16. 日记(docker)
  17. 序数是什么意思_vlookup 列序数是什么意思
  18. css中的background属性
  19. SpringBoot自动装配原理浅析
  20. SpringCloud之Gateway

热门文章

  1. apache服务器_Apache的简介与配置(上)
  2. 礼品盒子插画素材丨节日设计加上它之后价值翻倍!
  3. “3D字体”素材|让你的设计脱颖而出,看起来与众不同
  4. 广东科技学院计算机原理组成,201120122操作系统原理期中试卷edited广东科技学院付博士(4页)-原创力文档...
  5. wince7 屏幕控制_技术干货:WinCE 7.0下的触摸屏驱动
  6. 关于FD.io VPP的最新消息
  7. Linux X64下汇编学习:C语言调用汇编代码,汇编中调用C语言函数
  8. c/c++处理命令行参数int argc, char **argv的方法
  9. vscode生成vue模板快捷键_VSCode一键生成.vue模版
  10. diolog js_js组件-js插件-jquery插件-dialog对话框弹层