field()tp框架分页类使用中是什么意思,怎么使用,什么时候使用

浅析Thinkphp框架中运用phprpc扩展模式 - PHP当前位置:& &&&浅析Thinkphp框架中运用phprpc扩展模式浅析Thinkphp框架中运用phprpc扩展模式&&网友分享于:&&浏览:302次浅析Thinkphp框架中应用phprpc扩展模式
这次的项目舍弃了原来使用Axis2做web服务端的方案,改用phprpc实现,其一是服务端的thinkphp已集成有该模式接口,其二是phprpc传输的数据流相对于普通WebService中的XML或JSON形式的数据量明显减少,而且因为数据量的关系解析速度明显比较快~~
说实话,以前还真不知道有phprpc这个协议的,本打算使用sina的api的restlet形式开发,但自己写库的话会花比较多的时间,而现在轻量级的php框架支持rest的貌似只有cakephp,对于已经用tp部署的项目,实在是不情愿,这次偶尔在tp框架官网上徘徊一番~~忽然发现2.1RC版本有个新模式——phprpc。
用了才知道,phprpc这东西真的不错~~赞一个
但貌似这东西文档和案例比较的匮乏,而且tp框架也没有相应的教程和案例来使用这个模式(官方论坛里貌似也没有具体的使用方法/search.php?searchid=156&orderby=lastpost&ascdesc=desc&searchsubmit=yes)~~下面是我探索后写下的一些东西~~
首先认识下phprpc协议,具体文档(http://www.phprpc.org/zh_CN/docs/);
进入正题:
一、安装phprpc模式
1、将phprpc模式的文件夹(在官方SDK下的AddOns中,有一个phprpc文件夹和phprpc.php文件)拷到think核心文件下的mode文件夹中。
2、将phprpc的php的SDK拷到think核心文件下的Vendor文件夹中(要重命名为phprpc)
3、在入口文件添加如下代码:
define('THINK_MODE','PHPRPC');
4、在配置文件中添加如下配置代码:
'APP_PHPPRC_ACTIONS'=&'Account,Test,Topic,Timeline,User,Favorites,Follow'
这里的字符串是要发布为服务的Action,可以多个,用逗号隔开
二、编写Action
首先来看看这边的phprpc模式到底tp做了什么。以下代码摘自phprpc自带的app.class.php
Vendor('phpRPC.phprpc_server');
//实例化phprpc
$server = new PHPRPC_Server();
$actions =
explode(',',C('APP_PHPPRC_ACTIONS'));
foreach ($actions as $action){
//$server -& setClass($action.'Action');
$temp = $action.'Action';
$methods = get_class_methods($temp);
$server-&add($methods,new $temp);
$server-&setDebugMode(true);
$server-&setEnableGZIP(true);
$server-&start();
这里导入了vendor里的phprpc核心类,再对每个在配置文件里要求发布的Action进行遍历,使所有的public方法全部发布。
在这里(/viewthread.php?tid=21593&highlight=phprpc)论坛中提到了在Action中start一个服务端,这其实是行不通的。上面的就是很好的解释,所以在所有的Action 的方法中只要有参数传入和参数return便可以以phprpc协议发布。
class TestAction extends Action{
* 测试欢迎
* @param string $name
function hello($name) {
return 'Hello ' . $
三、关于Model not find的问题
假使在上述Action中调用M()工厂方法,会出现Model找不到的现象,这个问题搞了我很久,后来被我找到了解决方案在mode文件夹下的phprpc.php文件中加入:
THINK_PATH.'/Lib/Think/Core/Model.class.php', // 模型类
这一配置项,对于视图模型找不到的现象的方法也是如此,下面是修改版的phprpc.php文件
return array(
THINK_PATH.'/Common/functions.php',
// 系统函数库
THINK_PATH.'/Lib/Think/Core/Think.class.php',
THINK_PATH.'/Lib/Think/Exception/ThinkException.class.php',// 异常处理
THINK_PATH.'/Lib/Think/Core/Log.class.php',// 日志处理
THINK_PATH.'/Mode/Phprpc/App.class.php', // 应用程序类
THINK_PATH.'/Mode/Phprpc/Action.class.php',// 控制器类
THINK_PATH.'/Lib/Think/Core/Model.class.php', // 模型类
THINK_PATH.'/Lib/Think/Core/Model/ViewModel.class.php', // 视图模型类
THINK_PATH.'/Mode/Phprpc/alias.php', // 加载别名
四、关于Action方法返回问题
返回参数统一都是用return;
返回字符串可以用echo;
返回异常可以直接抛出异常throw new Exception('string', 1);
基本上载tp框架中使用phprpc模式的步骤就是这么几步~~大概等tp的后续版本应该会提供这方面的文档以供学习,也不用我们一点点的摸索了,不过最希望的还是tp能出个restlet模式~~哈哈
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
&a href=&http://xiaoji.name&& 我的博客&/a&,
echo '我的联系号码:' ,
echo '叫我小鸡就好,嘿嘿,',
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
getField方法是ThinkPHP中用来获取字段值的方法,区别于select和find方法,通常仅用于获取个别字段的值。但是事实上并没有那么简单,该方法的用法总结如下: 获取某个字段值这个是getField方法最基本的用法,用于获取符合条件的某个字段值。 返回的nickname是一个字符串结果。也就是说,即使有满足条件的多个字段,也只会返回一个结果。 $User = M("User"); // 实例化User对象// 获取ID为3的用户的昵称 $nickname = $User-&where('id=3')-&getField('nickname');获取某个字段列如果希望返回符合要求的字段列(多个结果),可以使用: 第二个参数传入了true,返回的nickname则是一个数组,包含了所有满足条件的昵称列表。如果需要限制返回结果数量,可以使用: 或者$User = M("User"); // 实例化User对象// 获取status为1的用户的昵称列表$nickname = $User-&where('status=1')-&getField('nickname',true);$nickname = $User-&where('status=1')-&getField('nickname',8);$nickname = $User-&where('status=1')-&limit(8)-&getField('nickname',true);获取2个字段列表如果希望获取满足条件的id和昵称列表,则可以使用: 如果getField方法传入多个字段名称的话,默认返回一个关联数组,以第一个字段的值为索引(所以第一个字段要尽量选择不会重复的)。也可以限制返回数量,例如: 或者$User = M("User"); // 实例化User对象// 获取status为1的用户的昵称列表$nickname = $User-&where('status=1')-&getField('id,nickname');$nickname = $User-&where('status=1')-&getField('id,nickname',8);$nickname = $User-&where('status=1')-&limit(8)-&getField('id,nickname');获取多个字段列表如果传入了2个以上的字段名,则返回一个二维数组(类似select方法的返回值,区别在于索引是二维数组的键名是第一个字段的值),例如: 如果不希望返回二维数组,可以使用连接符,例如: 那么返回的结果则是一个索引数组,键名是id值,键值则是account:nickname连接组成的字符串。getField方法通常还可以配合连贯操作where、limit、order等一起使用。还有一些高级的用法,包括对join表的支持和sql方法的支持等。$result = $User-&where('status=1')-&getField('id,account,nickname');$result = $User-&where('status=1')-&getField('id,account,nickname',':');
阅读(1290)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'ThinkPHP(TP)select()用法 getField用法',
blogAbstract:'&getField方法是ThinkPHP中用来获取字段值的方法,区别于select和find方法,通常仅用于获取个别字段的值。但是事实上并没有那么简单,该方法的用法总结如下: 获取某个字段值这个是getField方法最基本的用法,用于获取符合条件的某个字段值。 返回的nickname是一个字符串结果。也就是说,即使有满足条件的多个字段,也只会返回一个结果。 $User = M(\"User\"); // 实例化User对象// 获取ID为3的用户的昵称 $nickname = $User-&where(\'id=3\')-&getField(\'nickname\');获取某个字段列如果希望返回',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}第一种创建项目方法
我们在WEB文件根目录下创建一个新的文件夹,名称为HelloTP(这个就是项目工程名)
注: 默认情况下: Apache的web文件根目录是..\Apache\htdocs
& &&& && && && && && &&
Wampserver的web文件根目录是../wamp/www
然后将下载好的thinkphp文件夹里的文件复制到HelloTP文件夹下.
接下来用浏览器访问HelloTP,thinkphp会自动在Application文件夹下创建三个文件夹: Common
在Home文件夹下可以看到Controller,Model,View等文件夹,从这里可以看出TP采用了MVC设计模式
Controller 文件夹里包含一个IndexController.class.php文件,这是默认的Index控制器文件,在之前我们访问入口文件index.php,网页输出的内容就是调用了这个文件里的index()方法.
我们可以将IndexController.class.php里的index方法修改一下,通过它来直接输出View下的Index文件夹里的index.html
这样,我们再次访问HelloTP,则输出index.html页面
public function index(){
$this-&display();
注:这里可能没有Index文件夹,需要自己建一个
第二种创建项目方法
我们只引入核心文件ThinkPHP,放在web根目录下的HelloTP文件下,在HelloTP文件夹里创建项目文件夹(比如:shop),然后在shop文件夹里创建入口文件index.php
include "../ThinkPHP/ThinkPHP.php";
访问HelloTP/shop, 在shop文件夹下会自动创建Common
Runtime三个文件夹;
OK,到这里我们已经大致知道TP的运行结构了,下面是TP的一些开发规范:
- 类文件都是以.class.php为后缀,使用首字母大写的驼峰命名法,例如:DbMysql.class.php而且类名和文件名一致.例如 UserController类的文件命名是UserController.class.php
- 类的namespace地址和所在路径地址一致,例如 Home\Controller\UserController类所在的路径应该是Application/Home/Controller/UserController.class.php
- 确保文件名和调用大小写一致,因为在类UNIX系统上,对大小写敏感
- 函数的命名使用小写字母和下划线的方式,例如
get_client_ip
- 方法命名使用首字母小写驼峰法,例如getUserName ,以下划线开头的方法属于私有方法
- 属性的命名使用首字母小写驼峰法,例如tableName ,以下划线开头的属性属于私有属性
- 以双下划线开头的函数或方法称作 魔法方法,例如 __call 和 __autoload
- 常量/配置参数/语言变量以大写字母和下划线命名,例如 HAS_ONE和MANY_TO_MANY, 以下划线开头的语言变量属于系统语言变量,例如 _CLASS_NOT_EXIST_
- TP的模板文件默认是以.html为后缀的,可以通过配置来修改
- 数据表的字段采用小写加下划线方式命名,并且字段名不能以下划线开头,例如think_user表和user_name字段是正确写法,类似_username这样的数据字段可能会被过滤
- 程序文件应该采用UTF-8无BOM头的编码格式
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:19802次
排名:千里之外
原创:60篇TP中如何定义和使用API - ThinkPHP框架
onethink中有关于api的使用案例(如图)。感觉主要是给其他模块调用的。例如: $Api
new UserApi();
在Thinkphp中如何定义和使用,开发手册没有讲到api。对于如何定义和使用自己没有概念。api是不是也是一个class?定义的时候是不是有基类api继承,基类在哪里? Thinkphp的api是不是为了Android和IOS准备的?
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。综合目标管理-TP使用手册_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
综合目标管理-TP使用手册
上传于||暂无简介
大小:21.28MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 tp中field 的文章

 

随机推荐