技术&日志

PHP继承重写方法

继承重写方法

private在我们常识中是无法被继承的,子类拿不到,但其访问级别已是最高,所以你在子类中可以写成private protected public 仿佛是我们自己重新定义了一个函数一样,这点在5.2版本之前尤其突出,因为5.2之前的版本在继承重写父类方法是可以不保持参数个数相同,但5.3以后加强了这方面的限制,参数个数必须与父类相同

如果继承之后的参数需要多于父类的参数个数怎么办?

方法一: 使用属性

<?php

class a
{
public function a1($a, $b)
{
echo 'a1';
}
}

class b extends a
{
public $b = 'master';

public function a1($a, $b)
{

echo $this->b;
}
}

$obj = new b();
$obj->b = 'abc';
$obj->a1(1, 2);

方法二:使用 func_get_arg

函数参数-0开始偏移

<?php

class a
{
public function a1($a, $b)
{
echo 'a1';
}
}

class b extends a
{
public function a1($a, $b)
{
$c = func_get_arg(2);
echo $c;
}
}

$obj = new b();
$obj->a1(1, 2, 3);

相关资料

PHP类方法重写原则