php 静态方法继承,php 5.2中的类继承:重写扩展类中的静态变量?

我在Zend框架中对某些内容进行子类化时遇到了这个问题。我的决定是,在完全静止的土地上,你只有一个选择…重新定义继承类中的函数:

class Animal {

public static $color = 'black';

public static function get_color()

{

return self::$color;

}

}

class Dog extends Animal {

public static $color = 'brown';

public static function get_color()

{

return self::$color;

}

}

如果您能够创建实例-您可以使用

get_class($this)

要查找调用类,例如:

class Animal {

public static $color = 'black';

public function getColor() // note, not static

{

$class = get_class($this);

return $class::$color;

}

}

class Dog extends Animal {

public static $color = 'brown';

}

$animal = new Animal();

echo $animal->getColor(); // prints 'black'

$dog = new Dog();

echo $dog->getColor(); // prints 'brown'

我想到的另一个选项是使用静态函数的函数参数来定义从中调用它的类。它可以默认为

__CLASS__

然后你可以

return parent::get_class($class)

从子类。这样的模式可以使重新使用静态函数更容易(因为我怀疑返回公共静态属性是您试图使用的唯一方法

self::

因为在静态方法中:

class Animal {

public static $color = 'black';

public static function get_color($class = __CLASS__)

{

// Super Simple Example Case... I imagine this function to be more complicated

return $class::$color;

}

}

class Dog extends Animal {

public static $color = 'brown';

public static function get_color($class = __CLASS__)

{

return parent::get_color($class);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值