从我的函数innerOne中调用$ this-> two()需要做什么?这可能与PHP OOP有关吗?
这是我收到的错误:
Fatal error: Using $this when not in object context
以下是我的代码的外观:
class myClass {
function one(){
function innerOne() {
// Some code
$this->two($var1, $var2);
}
// Some code
innerOne();
}
function two($var1, $var2) {
// Does magic with passed variables
return $var1 . $var2;
}
}
答案 0 :(得分:2)
试试这个:
function innerOne($t) {
//some code...
$t->two($var1, $var2);
}
innerOne($this);
答案 1 :(得分:2)
innerOne
实际上是一个全局函数。
你在方法中定义它的事实并不重要,它在全局函数表中。参见:
class myClass {
static function one(){
function innerOne() {
// Some code
echo "buga!";
}
}
}
myClass::one();
innerOne();
给出了“buga!”。您必须先调用one()才能定义函数。
你想要的是这个:
class myClass {
function one($var1, $var2){
return $this->innerOne($var1, $var2);
}
private function innerOne($var1, $var2) {
return $this->two($var1, $var2);
}
function two($var1, $var2) {
// Does magic with passed variables
return $var1 . $var2;
}
}
$var = new myClass();
echo $var->one("bu","ga");
答案 2 :(得分:1)
此功能仅在该范围内定义。所以你不能在所述范围之外访问它。周围有一些技巧,但不是我要推荐的任何技巧。