上一篇我们讲到了接入数据库类,并实现了调用类对数据库做增删改查,这一篇我们来讲解下Yaf中model的使用。
在yaf的项目目录中我们能看到一个models文件夹,我们那些model文件就放在这里面,我们已创建一个article模型为例。
1、以创建一个article模型为例,在models中创建Article.php
2、在模型里面的写法就和我们普通的……
在上一篇中我们讲了redis类库的接入和使用,这一篇我们继续来讲解接入数据库。
接入数据库,我看到大部分都在推荐使用Medoo,那我们也用起来吧,本例我们将Db类放入library/Medoo。
1、到medoo官网https://medoo.lvtao.net/下载最新版本的Db类,将解压后src里面的Medoo.php放入/library/Medoo中
2、打开配置文件applica.i……
在项目中,往往需要封装一些,如redis和db,不同的产品需要用不同的库等等等,这就涉及到封装。
那么,我们一般的习惯是根据“命名空间\文件路径”来实例化类或者引入,比如:
$object = new Path\showPath();
这就代表着实例化了 Path 下的 showPath 类文件,当然在Yaf中也可以这样。
这一篇我们先以redis为例。
比如,我们想把Re……
首先编辑httpd.conf
找到这行
#LoadModule headers_module modules/mod_headers.so
把#注释符去掉
LoadModule headers_module modules/mod_headers.so
目的是开启apache头信息自定义模块
然后在独立资源域名的虚拟主机添加一行
Header set Access-Control-Allow-Origin *
意思是对这个域名的资源进行访问时,添加一个头信……
有时候我们为了便于做静态资源分布式部署或其他考虑,会使用独立的域名做资源的访问地址或接口的域名地址(如res.caizhichao.cn、api.caizhichao.cn),但当访问这些不同域名的资源或请求这些不同域名的接口时,也许会遇见这样的报错:
已阻止跨源请求:同源策略禁止读取位于 http://xxxxx 的远程资源。(原因:CORS 头缺……
接口跨域问题,如果我们没办法修改服务器的配置,那就从代码入手。
php后端代码设置Header头支持跨域,在方法的最前面加入以下的代码。
// 允许a.com发起的跨域请求
header(“Access-Control-Allow-Origin: http://a.com”);
//如果需要设置允许所有域名发起的跨域请求,可以使用通配符 *
header(“Acces……
经常我们会使用 JSON.stringify() 保存某些数据,然后需要在php中读取,但在PHP接到这个参数的数据时,使用json_decode()却无法解析。
所以问题就是,为什么json_decode()解析JSON.stringify为什么为NULL。
解决方法:
当你使用 JSON stringify时,先在json_decode前使用 html_entity_decode。
代码示例:
$tempData = h……
thinkphp是当下被用得最为广泛的php框架,而在使用thinkphp开发的过程中,我们也许会遇到这样的问题,当我们访问一个不存在的Controller或不存在的方法时会出现报错的界面,这样显得不美观且不安全。
这种情况下,我们的处理方式就是把这些不存在的控制器或方法使用_empty定义至我们的404页面。怎么实现呢,下面是方法。
……
在项目里我们经常会使用到多语言,而有一种情况是在切换不同的语言时需要调用数据库里的不同字段的值。
例如,在文章内容页,如果是中文,读取content字段里的值显示,如果是英文,则读取en_content字段里的值显示。
实现这样的需求,需要在Model层做判断,以上面的例子需求为例,我们需要在文章Model里使用_after_select……
Yaf模块的使用
1、了解Yaf的默认路由
默认的路由协议是Yaf_Route_Static,在request_uri中以 “/” 分割module、controller、action和参数的键和值
分割出来的第一段,有可能是module,也有可能是controller,如果该module存在,则认为是module,否则认为是默认模块Index的controller。
比如:在application/controllers/Us……