如何访问PHP OOP中的函数
要从函数innerOne内部调用$this->two(),需要做什么?这在PHP OOP中是可能的吗 以下是我收到的错误:如何访问PHP OOP中的函数,php,oop,Php,Oop,要从函数innerOne内部调用$this->two(),需要做什么?这在PHP OOP中是可能的吗 以下是我收到的错误: Fatal error: Using $this when not in object context 下面是我的代码的外观: class myClass { function one(){ function innerOne() { // Some code $this->two($va
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;
}
}
试试这个:
function innerOne($t) {
//some code...
$t->two($var1, $var2);
}
innerOne($this);
试试这个:
function innerOne($t) {
//some code...
$t->two($var1, $var2);
}
innerOne($this);
此函数仅在该范围内定义。因此,您不能在上述范围之外访问它。这里有一些技巧,但我不会推荐任何技巧。此函数仅在该范围内定义。因此,您不能在上述范围之外访问它。这里有一些技巧,但我不会推荐任何。innerOne实际上是一个全局函数 在方法中定义它并不重要,它在全局函数表中。见:
class myClass {
static function one(){
function innerOne() {
// Some code
echo "buga!";
}
}
}
myClass::one();
innerOne();
发出“布加!”。必须先调用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");
innerOne
实际上是一个全局函数
在方法中定义它并不重要,它在全局函数表中。见:
class myClass {
static function one(){
function innerOne() {
// Some code
echo "buga!";
}
}
}
myClass::one();
innerOne();
发出“布加!”。必须先调用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分钟才能接受这个答案”是一个非常棒的信息——不是每天你都能这么快得到答案。祝雅各布生日快乐!谢谢你,伙计!我用了你的例子,有点跳出框框思考,并且能够解决它!如果有人想知道的话,可以在我的原始帖子中发布我的解决方案。谢谢!当然,在我写评论的时候我不能接受。“你必须等2分钟才能接受这个答案”是一个非常棒的信息——不是每天你都能这么快得到答案。祝雅各布生日快乐!不是真的。innerOne在定义之后是一个全局函数。不是真的。innerOne在定义之后是一个全局函数。