有没有办法在方法中创建类static var? 像这样......
class foo {
public function bind($name, $value) {
self::$name = $value;
}
};
还是有其他解决方案将变量绑定到类,以后使用它而没有冗长而丑陋的语法“$ this->”
答案 0 :(得分:3)
我不确定我理解这个问题。但是如果你想在运行时附加变量,你可以这样做:
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!"
答案 1 :(得分:1)
使用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>';?>