ホームページ バックエンド開発 PHPチュートリアル 浅析Thinkphp框架中运用phprpc扩展模式

浅析Thinkphp框架中运用phprpc扩展模式

Jun 13, 2016 am 11:00 AM
action class php

浅析Thinkphp框架中应用phprpc扩展模式

这次的项目舍弃了原来使用Axis2做web服务端的方案,改用phprpc实现,其一是服务端的thinkphp已集成有该模式接口,其二是phprpc传输的数据流相对于普通WebService中的XML或JSON形式的数据量明显减少,而且因为数据量的关系解析速度明显比较快~~

?

说实话,以前还真不知道有phprpc这个协议的,本打算使用sina的api的restlet形式开发,但自己写库的话会花比较多的时间,而现在轻量级的php框架支持rest的貌似只有cakephp,对于已经用tp部署的项目,实在是不情愿,这次偶尔在tp框架官网上徘徊一番~~忽然发现2.1RC版本有个新模式——phprpc。

?

用了才知道,phprpc这东西真的不错~~赞一个

?

但貌似这东西文档和案例比较的匮乏,而且tp框架也没有相应的教程和案例来使用这个模式(官方论坛里貌似也没有具体的使用方法http://bbs.thinkphp.cn/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方法全部发布。

?

在这里(http://bbs.thinkphp.cn/viewthread.php?tid=21593&highlight=phprpc)论坛中提到了在Action中start一个服务端,这其实是行不通的。上面的就是很好的解释,所以在所有的Action 的方法中只要有参数传入和参数return便可以以phprpc协议发布。

实例:

?

class TestAction extends Action{		/**	 * 	 * 测试欢迎	 * @param string $name	 */	function hello($name) {      	return 'Hello ' . $name;  	} }
ログイン後にコピー

?

?

三、关于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模式~~哈哈

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles