「new」という関数と「case」というクラスを作りたいと思っています。
PHPでそれを行うことはできますか?
実際には、そのようなメソッドを定義すると解析エラーが発生しますが、使用するとエラーが発生しないため、何らかの回避策が可能になります。
class A {
function __call($method, $args) {
if ($method == 'new') {
// ...
}
}
}
$a = new A;
$a->new(); // works!
2004 年にさかのぼる関連機能のリクエストがまだオープンです。
PHP 7 以降では、 Context Sensitive Lexerのおかげで、これまで制限されていたキーワードを使用してメソッドに名前を付けることができるようになりました。
class Foo {
public function new() {}
public function list() {}
public function foreach() {}
}
ただし、クラスCase
に名前を付けることはまだできません。
それはできません。代替オプションは、関数名として _case() または _new() を使用することです
また、チェックアウト:
デフォルトでは不可能です。これらは予約語であり、使用できません。
http://www.php.net/manual/en/reserved.keywords.php
目的を達成するためにPHPなどを再コンパイルできるかもしれませんが、(あなたに答えた他の人々のように)それは良い考えではないと思います:)
チッ!
私の問題を克服するために、クラスの名前を変更しました。
foreach($array as $key => $line){
if($key == "resource"){
$key = "resources";
$array->$key = $line;
}
}