博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己编写php框架(一)
阅读量:5071 次
发布时间:2019-06-12

本文共 2959 字,大约阅读时间需要 9 分钟。

        这两天一直在琢磨如何做一个php模板,将前台html页面和php代码分割开来。虽然现在市面上有各种各样的php模板,但还是想自己编写一个体验一下。

        之前一直写到了将替换完php代码的含有php代码的html页面作为字符串输出的地方。在此处遇到了一点麻烦。即如果直接将这些字符串使用echo输出的话,其中的php代码是不会被解析的。

        在网上查看别人框架的代码和thinkphp源码后,发现有种方法是将替换完php代码的前端页面字符串重新写入一个后缀为php文本。再将此文本include进来。

        于是我就先编写了一个“0.1版本“的框架(因为很多因素都还未考虑,如已加载过的页面再次加载时,如果内容没有改动,则不需要重新替换其中的字符串,而是直接调用上次的php文本即可。再者路径也没规定明确)。这个版本只是一个demo,日后再慢慢完善。

        目前的整体思路过程为:

        一、有一个config类用来放置对数据库属性的定义

        二、有一个connection类其中封装有各种对数据库操作的方法

        三、之后在另一个php文档里创建connection类对象并进行操作,获取原始html页面的内容,并对其进行php代码的替换。再将替换完的字符串全部存入另一个php文档里面,之后再将此文档include进来。

config.php

 

connection.php

key_list = $get_database;$db_config = new config();//将config中的各值赋到当前对象属性中$mysql_url = $db_config->mysql_url;$mysql_username = $db_config->mysql_username;$mysql_password = $db_config->mysql_password;$mysql_database = $db_config->mysql_database;$this->db =new mysqli($mysql_url,$mysql_username,$mysql_password,$mysql_database);//创建数据库连接实例//如果数据库连接实例创建失败则报错if(mysqli_connect_error()){echo 'Could not connect to database.';exit; }mysqli_query($this->db,'set names utf8');return $this;//返回当前对象}//输入参数:所要查询的列名,如果为空则默认为查询所有列public function select($sql_line="*"){$this->key_line = $sql_line;return $this; }//输入参数:查询条件//注:方法中传入的参数里,没有赋初始值的为必传参数,而赋了初始值的参数为可选参数。//如下面这个where方法,其中的$sql_where在传入参数时为所传参数,而没有传入参数时为初始化的值。public function where($sql_where=""){$this->key_where = $sql_where;return $this; }//对sql语句进行执行public function result(){$line = $this->key_line;$where = $this->key_where;$database = $this->key_list;$result_array = array();//判断是否有条件语句执行不同的sql语句if($where ==""){$result = $this->db->query("SELECT $line FROM $database"); }else{$result = $this->db->query("SELECT $line FROM $database WHERE $where"); }/** * 下面这么处理的原因:* 一般对查询结果的处理只有几种办法,我选择了使用fetch_array来进行处理* 目的是:该二维数组里头的每一个一维数组内的键值名为表中的列名,这样在前台页面书写代码获取数据库中的内容时可以写列名来进行判定。*/$i=0;while($row = $result->fetch_array()){$result_array[$i] = $row;$i++; }return $result_array; }}?>

 

change_web.php

select()->where()->result();//===============================================================================//准备替换的内容$array_keys = array_keys($result[0]);//获取数组键值名$array_search_keys = array();$array_replace_keys = array();for($i=0;$i
';}$array_search = array('
','
');$array_replace = array('
','
');//===============================================================================//替换其中的自定义标签为php标签$web_file = file_get_contents("demo_web.html");//将前端页面转换为字符串$result_web1 = str_replace($array_search,$array_replace,$web_file);$result_web = str_replace($array_search_keys,$array_replace_keys,$result_web1);//===============================================================================//创建新的php页面$file_php = "result.php";//替换完代码后的php结果页面路径$fp = fopen($file_php,"w");//使用w方式打开。注:用w方法打开可以当文件不存在时自动创建。fwrite($fp,$result_web);//将替换完毕后的网页的字符串写入该文档。fclose($fp);include($file_php);//再将该文档引入进来,否则无法查看新页面
 

 

       

 

转载于:https://www.cnblogs.com/red-code/p/5288641.html

你可能感兴趣的文章
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>
转化课-计算机基础及上网过程
查看>>
android dialog使用自定义布局 设置窗体大小位置
查看>>