AbstractAction.php 3.44 KB
<?php

/**
 * 所有Controller控制器的基类
 * 
 * @name AbstractAction
 * @package 
 * @copyright yoho.inc
 * @version 1.0 (2015-9-15 11:55:25)
 * @author fei.hong <fei.hong@yoho.cn>
 */
namespace Action;

use Yaf\Controller_Abstract;
use Yaf\Dispatcher;

use Hood\Cache;

class AbstractAction extends Controller_Abstract
{

    /**
     * HTTP请求对象
     * 
     * @var object 
     */
    protected $_request;

    /**
     * 初始化
     */
    public function init()
    {
        $this->_request = $this->getRequest();
    }

    /**
     * 封装一下获取get参数
     * 
     * @param String $key
     * @param mixed $default
     * @return mixed
     */
    protected function get($key, $default = null)
    {
        return $this->_request->getQuery($key, $default);
    }

    /**
     * 封装一下获取post参数
     * 
     * @param String $key
     * @param mixed $default
     * @return mixed
     */
    protected function post($key, $default = null)
    {
        return $this->_request->getPost($key, $default);
    }
    
    /**
     * 使用Memcache缓存
     * 
     * @param string $node
     * @param string $childNode
     * @return object
     */
    protected function memcache($node = null, $childNode = 'hosts')
    {
        if (PATH_SEPARATOR === '\\') {
            return Cache::memcache($node, $childNode);
        } else {
            return Cache::memcached($node, $childNode);
        }
    }
    
    /**
     * 关闭模板自动渲染
     * 
     * @return void
     */
    protected function disableView()
    {
        Dispatcher::getInstance()->autoRender(false);
    }
    
    /**
     * 输出JSON数据到浏览器
     * 
     * @return void
     */
    protected function echoJson($json)
    {
        headers_sent() || header('Content-Type: application/json; charset=utf-8;');
        if(is_array($json))
        {
            $json = json_encode($json);
        }

        echo $json;
    }
    
    /**
     * 返回JSON数据
     * 
     * @param int $code 状态编码
     * @param string $message 提示信息
     * @param mixed $data 数据内容
     * @return json
     */
    protected function returnJson($code, $message, $data)
    {
        return json_encode(array(
            'code' => $code,
            'message' => $message,
            'data' => $data,
        ));
    }
    
    /**
     * 判断是不是AJAX请求
     * 
     * @return bool
     */
    protected function isAjax()
    {
        return $this->_request->isXmlHttpRequest();
    }
    
    /**
     * 跳转到错误页面
     */
    protected function error()
    {
        headers_sent() || header('Location: /error.html');
        
        exit;
    }

    /**
     * 设置Cookie
     * 
     * @param string  $name   cookie的名字
     * @param string  $value  cookie的值
     * @param integer $expire cookie过期时间
     * @param integer $path   cookie可用的路径
     * @param string  $domain cookie可用域名
     */
    protected function setCookie($name, $value, $expire = 0, $path = '/',$domain = 'yohobuy.com')
    {
        setcookie('alipay_redirect', $value, $expire, $path, $domain);
    }

    /**
     * 返回Cookie变量
     * 
     * @param  string $name    cookie名称
     * @param  string $default 未获取到返回的默认值
     * @return string          获取到的cookie值
     */
    protected function getCookie($name, $default = '')
    {
        return $this->request->getCookie($name, $default);
    }

}