メソッド内にクラス静的変数を作成する方法はありますか? このようなもの..
class foo {
public function bind($name, $value) {
self::$name = $value;
}
};
または、変数をクラスにバインドし、後で長くて醜い構文「$ this->」なしで使用する他の解決策はありますか
質問を理解しているかどうかわかりません。しかし、実行時に変数をアタッチしたい場合は、次のようにすることができます:
abstract class RuntimeVariableBinder
{
protected $__dict__ = array();
protected function __get($name) {
if (isset($this->__dict__[$name])) {
return $this->__dict__[$name];
} else {
return null;
}
}
protected function __set($name, $value) {
$this->__dict__[$name] = $value;
}
}
class Foo
extends RuntimeVariableBinder
{
// Explicitly allow calling code to get/set variables
public function __get($name) {
return parent::__get($name);
}
public function __set($name, $value) {
parent::__set($name, $value);
}
}
$foo = new Foo();
$foo->bar = "Hello, world!";
echo $foo->bar; // Prints "Hello, world!"
self
プロパティが宣言されていないため、使用すると致命的なエラーが発生します。$this
パブリック変数としてアクセスできるようになるものを使用する必要があります。
<?php
class foo {
public function bind($name, $value) {
$this->$name = $value;
}
}
$foo = new Foo;
$foo->bind('bar','Hello World');
echo '<pre>';
print_r($foo);
echo $foo->bar;
echo '</pre>';?>