我想创建一个名为 "new" 的函数和一个名为 "case" 的类。
我可以在PHP中实现吗?
我想创建一个名为 "new" 的函数和一个名为 "case" 的类。
我可以在PHP中实现吗?
实际上,虽然定义这样的方法会导致解析错误,但使用它并不会,这使得一些变通方法成为可能:
class A {
function __call($method, $args) {
if ($method == 'new') {
// ...
}
}
}
$a = new A;
$a->new(); // works!
有一个相关的功能请求追溯自2004年,至今仍然未被关闭。
从PHP 7开始,现在可以使用之前受限制的关键词来命名你的方法了,多亏了上下文敏感的词法分析器。
class Foo {
public function new() {}
public function list() {}
public function foreach() {}
}
很抱歉,您仍然不能将您的类命名为Case
。
默认情况下是不可能的,它们是保留字,你不能使用它们。
http://www.php.net/manual/en/reserved.keywords.php
也许你可以重新编译PHP或类似的东西来实现你的目标,但我认为(就像其他回答你的人一样)这不是一个好主意 :) public function __call($method, $args)
{
if ('clone' == $method) {
return call_user_func_array(array($this, 'cloneRepository'), $args);
} else {
$class = get_called_class();
$message = "Call to undefined method $class::$method()";
throw new \BadMethodCallException($message);
}
}
我只是将类名更改以解决我的问题。
foreach($array as $key => $line){
if($key == "resource"){
$key = "resources";
$array->$key = $line;
}
}