有什么方法可以在方法内创建类静态变量吗?像这样的东西..
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
which 才能作为公共变量访问:
<?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>';?>