对象上下文中的全局变量

时间:2017-06-02 08:21:49

标签: php

我有一个问题,在类中的一个函数中需要一个类属性。如果它是uncleat它看起来有点像:

class Foo {
    public $var;
    public function test() {
        function inside() {
            //Need $this->var here but getting a "not in object context" error
        }
    }
}

我也尝试过这种方式,但$ var似乎是空的

class Foo{
    public $var;
    public function test() {
        $var = $this->var;
        function inside() {
            global $var;
            //but here, $var=null
        }
    }
}

所以如果你有任何想法......谢谢 (这是我的代码:)

public function XML($input) {
    $dt= ($this->datatype) ? $this->datatype : "row";
    function aToXML($data, &$xmlData) {
        global $dt;
        foreach($data as $key => $value) {
            if (is_numeric($key)){
                //here
                $key = $dt.strval(intval($key)+1);
            }
            if (is_array($value)) {
                $subnode = $xmlData->addChild($key);
                aToXML($value, $subnode);
            }
            else {
                $xmlData->addChild("$key",htmlspecialchars("$value"));
            }
        }
    }
    if ($this->returnFromArray) {
        $xml=simplexml_load_string("<?xml version=\"1.0\" encoding=\"UTF-8\"?><data></data>");
        aToXML($input, $xml);
        return $xml->asXML();
    }
    else {
        return ($input) ? "<?xml version=\"1.0\" encoding=\"UTF-8\"?><success />" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?><failure />";
    }

    return $xml->asXML();
}

1 个答案:

答案 0 :(得分:0)

请不要。但如果你真的需要一个外部价值,也可以试试这个。

class TheClassThatNeedExternalValue
{
    private $externalValue = null;

    public function injectExternalValue($externalValue)
    {
        $this->externalValue = $externalValue;
    }

    ...
}

全球是邪恶的!!!