第一步:在CI框架中libraries目錄下建立yar.php 檔案
內容:
<?php /** * yar 介面 */ class Yar { /** * 建構函式 * * @return void * @throws Exception * @access public */ public function __construct () { } /** * 介面 * * @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']}"); } }
2.在配置檔案中新增yar讓CI 自動載入
config目錄下autoload.php檔案
修改:
$autoload['libraries'] = array('yar');
3.在api服務端也是CI框架建立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; } }
4.使用yar
在控制器中使用yar 訪問api介面
例如:
//例項化物件 $ActivityModel = $this->yar->yarApi(['model' => 'ActivityModel']); //呼叫方法 $active_info = $ActivityModel->getinfo($id);