0
我有一個問題,有一個類屬性,我需要在一個方法中的函數內類中。如果是uncleat它看起來有點像:對象上下文中的全局變量
class Foo {
public $var;
public function test() {
function inside() {
//Need $this->var here but getting a "not in object context" error
}
}
}
我也嘗試過這種方式,但$變種似乎空
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();
}
我會重構函數aToXML到類中的私有或受保護的方法而不是嵌套函數。 –
是的,它可能是最好的解決方案 – Ilwan
嵌套函數?!?壞!!!它們實際上並沒有嵌套,你真的在全局範圍內創建一個'inside()'函數,完全獨立於類實例....而'global'則表示'global',與實例無關 –