继承重写方法
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);