PHP创建类变量

时间:2012-12-28 01:35:57

标签: php variables static

有没有办法在方法中创建类static var? 像这样......

class foo {

    public function bind($name, $value) {
         self::$name = $value;
    }

};

还是有其他解决方案将变量绑定到类,以后使用它而没有冗长而丑陋的语法“$ this->”

2 个答案:

答案 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!"

http://codepad.org/H9bz2uVp

答案 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>';?>