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

基类

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的。


借助类型提示和访问控制可以更好的控制类的接口。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值