php中子类扩充父类同名的属性

今天在使用tp开发的过程中碰到这样一个需求,很多模型有共有的属性,例如:一些表单字段的自动验证,这些表单不止在单个模块中出现,其他模块也很常见。能不能在一个model的基类中写这些共有字段的验证,然后不同的模型再自己去扩充呢?
经过尝试,找到下面的解决方法,demo示例如下:

<?php
class A
{
    protected $arr = ['11','22','33'];
}

class B extends A
{
    //protected $arr;  

    public function __construct()
    {
        $this->arr = array_merge($this->arr, ['aa','bb','cc']);
    }   

    public function test()
    {
        print_r($this->arr);
    }
}
$b = new B();
$b->test();

//结果
Array
(
    [0] => 11
    [1] => 22
    [2] => 33
    [3] => aa
    [4] => bb
    [5] => cc
)

B类继承了A类,在B类的构造函数中调用了类属性$arr,这时会访问到A类中的$arr属性值,然后再使用array_merge函数,合并父类属性和子类中新的属性,再赋给子类的$arr属性。
注意:虽然一般而言,访问类属性时需要在提前声明,但是在这里的B类中不能声明,因为声明之后,在构造函数中调用的就是子类的属性了。

转载于:https://www.cnblogs.com/YanCJ/p/7401119.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值