浅析Thinkphp框架中应用phprpc扩展模式 这次的项目舍弃了原来使用Axis2做web服务端的 方案,改用phprpc实现,其一是服务端的thinkphp已集成有该模式接口,其二是phprpc传输的数据流相对于普通WebService中的 XML或JSON形式的数据量明显减少,而且因为数据量的关系解析速度明显比较快~~ 说实话,以前还真不知道有phprpc这个协议的,本打算使用 sina的api的restlet形式开发,但自己写库的话会花比较多的时间,而现在轻量级的php框架支持rest…
一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo模式.这个模式很强大,每当你访问一个网站必然带有一长串参数,但是太长又显得不太友好.对于访问一个以MVC模式搭建的网站,必然带有M.C.A三个参数即module.controller.action,这些参数需要还需要用&符号隔开,假若参数量很多,就显得特别的不友好啦.然而PathInfo模式功能就是…
距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.html)已经过去好多天了,今晚就将剩下的一些东西扫尾吧. 上一篇文章已经实现了PATHINFO模式的URL,即我们访问MVC模式搭建的站点时,只需要在域名后面加上(/module/controller/action)即可,很智能化.并且通过new Object时的自动触发函数实现类文件的自动载入,因此只要我们搭…
 1 thinkphp 框架 中判断输入的数值和数据库中的数值是否一致    首先 需要在view文件夹下建一个模板 名为zhuce.html <html> <head> <script src="__ROOT__/Public/js/jquery-1.11.2.min.js"></script> </head> <body> <div> 账号:<input type="text&quo…
Thinkphp框架中自定义修改success和error页面 Thinkphp框架的默认success和error太难看,可以自定义设置,步骤如下: (注意:TP原框架中的success跳转有问题,先修改框架内容) 在TP的Controller.class.php中L284行下增加exit; 1.修改配置文件,增加自定义页面路径(在Admin模块下的config.php中增加) // 跳转页面模板 'TMPL_ACTION_ERROR' => MODULE_PATH.'View/Common/…
这篇文章主要介绍了thinkPHP框架中执行原生SQL语句的方法,结合实例形式分析了thinkPHP中执行原生SQL语句的相关操作技巧,并简单分析了query与execute方法的使用区别,需要的朋友可以参考下   本文实例讲述了thinkPHP框架中执行原生SQL语句的方法.分享给大家供大家参考,具体如下: 怎样在thinkphp里面执行原生的sql语句? ? 1 2 3 $Model = new Model();//或者 $Model = D(); 或者 $Model = M(); $sql…
在项目开发的过程中有时候会涉及到对外提供接口供第三方程序调用或者是不同程序间需要相互通信,那么最通用的做法是用传统的SOAP方式来实现,用XML的文档格式来作为传输载体.但是这种方式不灵活,支持的数据结构类型单一,例如(不能返回json格式的数据),同时在javascript中处理冗长的SOAP依然很困难,对于浏览器有压力,也就是说当XML的内容过多时可能会存在性能问题.如果在项目中有以上需求,不妨考虑使用第三方开发的远程调用框架phprpc:http://www.phprpc.org/zh_C…
在看别人代码时候,发现他,在tp框架中使用session没有些session_start();然后我去查看了手册初始化设置方法 无需手动调用,在App类的初始化工作结束后会自动调用,通常项目只需要配置SESSION_OPTIONS参数即可 认情况下,初始化之后系统会自动启动session,如果不希望系统自动启动session的话,可以设置SESSION_AUTO_START为false. 'SESSION_AUTO_START' =>false session删除 session(null);…
在复杂的关联操作中,如果要给关联定义增加可选的属性,我们可以采用完整定义的方式. 完整定义的格式是: protected $_link = array(     '关联表名1'  =>  array(         '该表的关联方式的属性1' => '定义',         '该表的关联方式的属性N' => '定义',     ),     '关联表名2'  =>  array(         '该表的关联方式的属性1' => '定义',         '该表的关联方…
在基于B/S的应用程序开发中,从基本的技术分工上来说就是两大块,一是软件显示界面,另一个是程序逻辑.在N年前的脚本语言时代,无论是asp.php还是jsp,我们基本是都是把这两者柔和在一起的.尽管我们想方设法做好很多函数或者包含文件来努力达到软件的复用,但仍然无法满足多变的用户需求,这主要是因为以前的纯脚本编码方式无法很好支持及应用面向对象(OO)领域中的强大功能. 在常见的B/S软件项目中,界面的设计包括html界面.Wap界面及其它由文本字符协议为基本表示的界面等.以我们接触最多的html页…
模型这一块,感觉学习的不是很清楚,单独水一贴thinkphp中模型的学习笔记. 0x01 模型类简介 数据库中每一张表对应一个模型,类名就是表名,类里面的成员变量就是列名, 把一张表对应为一个类,其中一条数据对应一个对象 如果我们对该表的模型没有特殊操作的话可以不用建立该模型,但C层和V层必须有 模型类简单代码: <?php namespace Home\Model; use Think\Model; class UserModel extends Model { public $tablePr…
在thinkphp中,内置了ajax的方法,即: ajaxReturn("data","info","status"); data:传递的数据, info:显示的信息, status:状态 php代码: $data['name'] = "lina"; $data['age'] = '20'; $this->ajaxReturn( $data, '用户的详细信息 ',1 ); html通过 getJSON("ur…
在Model的构造函数中,$origin的初始化方式如下 if (is_object($data)) { $this->data = get_object_vars($data); } else { $this->data = $data; } // 记录原始数据 $this->origin = $this->data; $origin保存的是一个数组,因为如果保存的是对象的话,因为对象是引用,修改的时候会把$data和$origin同时修改了. 而我们需要的效果是$origin保…
首先,下载srbac_1.3beta.zip文件和对应的blog-srbac_1.2_r228.zip 问什么要下载第二个文件,后面就知道了. 按照手册进行配置: 解压缩srbac_1.3beta.zip文件,将解压后的文件复制到你的application/protected/modules目录下,注意是modules,而不是我们经常把扩展放到的那个extension目录. 配置你的application的config目录下的main.php文件.在import节添加配置,如: 'import'…
这个问题是这样的,当我在模板中想在标签option中在某个条件下输出selected.但是在里边嵌套if标签的话,condition里边第二个参数使用变量的时候,不能解析.所以只能使用别的方法了.达到效果的代码 <select name="role"> <volist name="role" id="vo"> <option value="" <eq name="vo.role_i…
前提条件:安装了mongodb数据库 安装了mongo的php驱动 下载Yii的mongo扩展:这是YiiMongoDbSuite的1.3.6版本支持PHP Mongo驱动的版本为1.0.5及以下 下载链接:http://pan.baidu.com/s/1jGuWP1O 其它版本下载链接:https://github.com/canni/YiiMongoDbSuite 得到文件:YiiMongoDbSuite.tar.gz 解包,并将该文件放至应用的/protected/extensions文件…
js的数组是和php里面数组是不一样的,所以模板文件需要先接受,然后利用Js代码转化之后再使用,接受后台的数组有几种办法 1.后台传过来的json数组,利用Js是可以接受的,然后将json数据利用js就可以转化成js数组 2.后台传过来的模板标签可以在json中使用模板引擎标签,然后将标签遍历之后放在js的数组中 var dateArr = [];var countArr=[]<volist name="dateArr" id="date"> dateA…
无限级分类在我们开发中显得举足轻重,会经常被人问到,而一般会用递归的方法来实现,但是递归又会难倒一批人.今天博主分享的这个稍微有点基础的phper都能学会,希望大家能喜欢. 一.先建立对应的数据库和表: 请注意pid和id的外键关联关系,最顶级的pid为0. 二.新建一个控制器,我就用默认的IndexController.class.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Tree{     //定义一个空的数组     static publ…
因为公司非常多项目都是基于yaf的,而非常多刚接触yaf的朋友问的第一个问题就是:yaf的自己主动载入是依照什么规则来的. 鉴于此.于是我特别开了一篇博文来记录一下. 首先在yaf中.models文件夹下的全部类名都须要以Model结尾.并且全部models和全部library下的类名都要依据所处等级加前缀,比方说我在Db文件夹下有个Mysql文件夹下有一个QueryGrammar.php文件,那么这个文件里的类名就应该是Db_Mysql_QueryGrammar,我们在实例化的时候直接使用这个…
资源下载地址:http://pan.baidu.com/s/1c0kAoeO 提取码:ry5v 关键代码:application/Common/Common/funciton.php <?php import('Com.Email.PHPMailer'); import('Com.Email.SMTP'); function send_mail($title, $content, $from, $to, $chart = 'utf-8', $attachment = '') { $mail =…
PHP数组定义 ThinkPHP框架中所有配置文件的定义格式均采用返回PHP数组的方式,格式为: //项目配置文件 return array( 'DEFAULT_MODULE' => 'Index', //默认模块 'URL_MODEL' => '2', //URL模式 'SESSION_AUTO_START' => true, //是否开启session //更多配置参数 //... ); 配置参数不区分大小写(因为无论大小写定义都会转换成小写),所以下面的配置等效: //项目配置文件…
404页面即系统在找不到请求的操作方法和找不到请求的控制器名称时的一种报错行为的优化. 第一步:在thinkphp框架中的Home/Comtroller中建一个EmptyController.class.php,其代码如下: <?phpnamespace Home\Controller;use Think\Controller;class EmptyController extends Controller{     //空操作_empty()方法    function _empty(){  …
近期工作中遇到了一个奇怪的现象:thinkphp框架中一个控制器中执行success或者error跳转的时候,会卡10s甚至更久,而在其他控制器中测试却不会.于是开始着手调试,利用自定义的毫秒函数测试各处代码执行的效率,最终定位发现 \ThinkPHP\Library\Think\Controller.class.php 中 函数dispatchJump 执行到 $this->get()时会出现明显卡顿,但是在其他控制器中使用并未发现问题 .于是想到了查询tp自带的日志,发现提示了 Declar…
ThinkPHP框架中的某一个php页面,想要去引入其他php页面,结果反复报错,无解. 各种百度,有说是文件权限不够的,也有说配置不对的,反正一个都没有解决这个问题,依然无解. 最终,找到了办法,似乎就是不支持,无解,舍弃这个思路!改用html模板引入. 完美解决一切问题,果然还是得靠自己,无穷无尽的百度有时候真的没什么用,答案都千篇一律. 自己动手,丰衣足食,不能再一股脑地拿来主义. 如果本文也正好解决了你的问题,可以点个赞哦~…
ThinkPHP框架发展到今天功能已经变得是非常强大了,但是ThinkPHP框架中没有二维码相关的库,因此我们可以通过整合phpqrcode来完成生成二维码的功能.想使用phpqrcode首先就要把phpqrcode代码包下载下来,大家可以去官网下载,也可以在网络上搜索进行下载,这里我为大家提供的有一份 phpqrcode代码包.下载地址:phpqrcode代码包. 下面开始讲述如何在ThinkPHP框架中整合phpqrcode生成二维码,这是我已经整合好的样例,感兴趣的可以下载下来进行学习.…
极光推送(JPush)是独立的第三方云推送平台,致力于为全球移动应用开发者提供专业.高效的移动消息推送服务. 本篇博文讲述如何在将极光推送DEMO整合到ThinkPHP框架中,我使用的是极光推送PHP_DEMO_V3.4.3版本: 1.将极光推送DEMO文件(文件夹名称为Jpush)放入到你的公共文件夹(Common)中,按照极光开发文档在极光后台建立好自己的应用,获取相应的app_key.master_secret,在文件中将会用到这两个值: 2.如上,在公共文件夹(Common)下建立fun…
首先THINKPHP配置文件中设置 //url访问模式为rewrite模式 'URL_MODEL'=>'2', 然后再在nginx.conf文件中,找到这一条语句 #access_log logs/host.access.log main;找到location /{}这个语句段落 location / { index index.html index.htm index.php; #如果请求既不是一个文件,也不是一个目录,则执行一下重写规则 if (!-e $request_filename)…
SpringMVC是Spring中的模块,它实现了mvc设计模式,首先用户发起请求,请求到达SpringMVC的前端控制器(DispatcherServlet),前端控制器根据用户的url请求处理器映射器查找匹配该url的handle,并返回一个执行链,前端控制器再请求处理器适配器调用相应的handle进行处理并返回给前端控制器一个modelAndView,前端控制器再请求视图解析器对返回的逻辑视图进行解析,最后前端控制器将返回的视图进行渲染,并把数据装入到request域,返回给用户. Dis…
将php原生语句实例化SphinxClient对象移植到yii2框架中报错 原生语句中这样写: $s = new SphinxClient(); 框架中应该加入反斜杠,这样写: $s = new \SphinxClient(); 其他php内置对象实例化一样参考上述方法. 和命名空间有关,因为原生的php没有用到命名空间,框架中启用了,会当前命名空间中寻找这个类,找不到会报错.…
详见:http://www.ucai.cn/blogdetail/7028?mid=1&f=5 可在线运行查看效果哦 导言:ThinkPHP框架是国内知名度很高应用很广泛的php框架,我们从一些简单的开发示例中来深入了解一下这个框架给我们带来的开发便捷性,以及游刃有余的扩展设计.同时也从源码分析的角度看看框架的一些不足,尽量做全面客观的评价.这里假设大家已经使用过ThinkPHP框架,基本使用方法请参考官方文档. 一.框架分层及url路由 框架的安装非常简单,下载后放入web服务器的目录即可,但…