我有一个简单的功能:
function myFunction($this){
var_dump($this);
}
Run Code Online (Sandbox Code Playgroud)
哪个输出:
object(MyClass)#810 (20) {
["course_id"]=>int(43)
// ...more properties
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试访问对象上的"course_id",则不会输出任何内容:
var_dump($this->course_id);
Run Code Online (Sandbox Code Playgroud)
在类定义中,course_id是public:
class MyClass extends AnotherClass {
public $course_id = 0;
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?谢谢 :)
这是因为你使用的名称$this是一个伪变量,当从一个对象上下文中调用一个方法时它变得可用,但是你没有在一个对象上下文中调用它,你是在一个函数上下文中调用它的.
更改参数名称,它的工作原理:
class MyClass {
public $course_id = 0;
}
function myFunction($temp) {
var_dump($temp->course_id);
}
$test = new MyClass();
myFunction($test);
Run Code Online (Sandbox Code Playgroud)