PHP function and variable inheritance
有人能帮我理解PHP类中的变量/函数继承吗?
我的父类有一个所有子类都使用的函数。然而,每个子类都需要在这个函数中使用它自己的变量。我想静态地调用子类中的函数。在下面的示例中,将显示"world",而不是子类中的值。
有人能解释一下如何让函数在子类中回送值吗?我应该使用接口吗?这与后期静态绑定有关吗(由于使用了5.3.0之前版本的PHP,所以我无法使用它)?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class myParent { static $myVar = 'world'; static function hello() { echo self::$myVar; } } class myFirstChild extends myParent { static $myVar = 'earth'; } class mySecondChild extends myParent { static $myVar = 'planet'; } myFirstChild::hello(); mySecondChild::hello(); |
是的,你不能这样做。
我的建议是只使用一个非静态变量和方法。
你可以这样做:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | class myParent { var $myVar ="world"; function hello() { echo $this->myVar." "; } } class myFirstChild extends myParent { var $myVar ="earth"; } class mySecondChild extends myParent { var $myVar ="planet"; } $first = new myFirstChild(); $first->hello(); $second = new mySecondChild(); $second->hello(); |
号
此代码打印
1 2 | earth planet |
I want to call the function in the
child classes statically.
号
这真的会让你陷入麻烦,让你在一天结束前发疯(可能已经有了)。
我坚决建议使用尽可能少的"
而且,由于php 5.3是一个全新的版本,它可能在几个月前就不能在您的主机服务上使用了…
如果您使用的是php 5.3,那么这个echo语句可以工作:
1 | echo static::$myVar; |
但是,由于您不能使用它,所以您唯一的(好的)选择是使