CI框架整合yar

奮程式序猿發表於2016-12-27

第一步:在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);

 

相關文章