class me {
private $name;
public function __construct($name) { $this->name = $name; }
public function work() {
return "You are working as ". $this->name;
}
public static function work() {
return "You are working anonymously";
}
}
$new = new me();
me::work();
致命错误:无法重新声明 me::work()
问题是,为什么 php 不允许这样的重新声明。有什么解决方法吗?
There is实际上,使用魔术方法创建来解决此问题,尽管我很可能会never在生产代码中执行类似的操作:
__call
当在对象范围内调用不可访问的方法时在内部触发。
__callStatic
当在静态范围内调用不可访问的方法时在内部触发。
<?php
class Test
{
public function __call($name, $args)
{
echo 'called '.$name.' in object context\n';
}
public static function __callStatic($name, $args)
{
echo 'called '.$name.' in static context\n';
}
}
$o = new Test;
$o->doThis('object');
Test::doThis('static');
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)