您的位置:首页 > 编程语言 > PHP开发

Yii中的超类(基类)使用 (读深入PHP面向对象笔记)

2015-02-26 15:34 627 查看
基类

class UserController extends Controller {

    public $userId = null;

    public function init() {

        parent::init();

        $this->userId = 11111111;

    }

   //注意action不要掉

    public function beforeAction($action) {

        if (empty($this->userId)) {

            return FALSE;

        }

        return TRUE;

    }

}

继承的时候不要忘了parent方法

class UserAjaxBaseController extends UserController {

    public function init() {

        $this->responseData = array(

            'success' => false,

            'msg' => '',

            'errorCode' => self::ILLEGALITY,

            'data' => array(),

        );

        parent::init();

    }

    public function beforeAction($action) {

        //如果没有用户ID 或者 不是ajax请求过来的,拒绝,本地调试的时候可以去掉ajax校验

        if (!parent::beforeAction($action) || !Yii::app()->request->isAjaxRequest) {

            $this->response();

            return FALSE;

        }

        //reffer验证 $_SERVER["HTTP_REFFER"]

        //是否是ajax请求

        return TRUE;

    }

继承,可以使用父类的方法,也可以子类里面重新实现父类的方法。

搜索,如果子类中没有这个属性或者方法,说明是来自其父类的。

构造方法的继承也是一样的,注意父类的方法不要随意变更,也不要修改层次结构等问题,不然会引起bug。

//继承了父类的属性,并且新增了一个自己的属性

function __construct($a,$b,$c){

    parent::__construct($a,$b);

    $this->c = $c;

    echo 111;

}

注意 parent关键字,parent关键字可以在任何覆写父类方法的方法中使用。覆写父类方法表示不希望删除父类的功能,而是扩展它。

(利用已经存在的功能,而不是重新开发)

public private protected 决定了类的访问控制(管理)。

为了保证数据,防止被外面调用时破坏,一般使用 private做类属性的关键字。

而get和set方法为public,作为赋值和取值方法,通常为public的。

借助类型提示和访问控制可以更好的控制类的接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  yii 继承