1、在libraries目录下创建yar客户端接口程序 Yar.php
<?php
/**
* yar 接口
*/
class Yar
{
/**
* 构造函数
*
* @author 郭志强
* @return void
* @throws Exception
* @access public
*/
public function __construct ()
{
}
/**
* 接口
*
* @author 郭志强
* @return void
* @throws Exception
* @access public
*/
public function yarApi ( array $condition )
{
$default = array(
//此处可根据需要更换调用服务器
// 'url'=>'http://admin.com/rpc/',
'url'=>'http://localhost/rpc/',
'model'=>'',//model名称
);
$condition = array_merge($default,$condition);
return new Yar_Client("{$condition['url']}{$condition['model']}");
}
/**
* 析构函数
*
* @author 郭志强
* @return void
* @throws Exception
* @access public
*/
public function __destruct ()
{
}
}
如果想实现自动加载客户端类,需修改 文件config/autoload.php内容,
将类名yar添加到 $autoload[‘libraries’]中。
$autoload['libraries'] = array('yar');
2、在controllers 目录下创建yar服务端文件Rpc.php
<?php
/**
* rpc接口
* Created by PhpStorm.
* User: hteen
* Date: 16/6/24
* Time: 下午4:39
*/
class Rpc extends CI_Controller {
public function index( $model ){
if (!$this->_auth())
show_error('error',500);
try {
$this->load->model($model);
}catch ( Exception $e ){
log_message('error','rpc load model error , model name is '.$model);
show_error('load model error',500);
}
$service = new Yar_Server( new $model );
$service->handle();
}
/**
* 权限认证
* @author hteen
* @return bool
*/
private function _auth(){
// TODO:RPC权限验证
return true;
}
}
3、调用实例
$customerModel = $this->yar->yarApi(['model' => 'CustomerModel']);