class User {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function sayHi() {
echo "Hi, I am $this->name!";
}
}
有人可以一字一句地向我解释,$ this-> name = $ name是什么意思? 我一直在想,这会进入(因此是 - >符号)名称,这是事先定义的(因此是=符号)$ name。 我也没有看到该功能的需要吗?
可以这样:
class User {
public $name;
public function sayHi() {
echo "Hi, I am $name!";
}
}
我想出了这个想法......提前谢谢。
答案 0 :(得分:0)
当您使用User
参数__construct
创建类$name
的新实例时,$this->name
将其设置为$name
属性班级。在您的第二个示例中,$name
没有获得任何值,因为您无法为其分配任何值。
你也可以这样做以便更好地理解:
class User {
public $nameProperty;
public function __construct($name) {
$this->nameProperty = $name;
}
public function sayHi() {
echo "Hi, I am $this->nameProperty!";
}
}
$this
指的是您当前所在的类。因此,当您创建新的User
类时,可以使用$name
参数传递名称。然后将此参数分配给$nameProperty
,然后在方法sayHi()
中,您将回显指定的名称。
答案 1 :(得分:0)
class User {
public $name; //declare a public property
public function __construct($name) {
$this->name = $name;
/* at the time of object creation u have to send the value & that value will be store into a public property which will be available through out the class. like $obj = new User('Harry'); Now this will be set in $this->name & it is available inside any method without declaration.
*/
}
public function sayHi() {
echo "Hi, I am $this->name!"; //$this->name is available here
}
}
答案 2 :(得分:0)
在类方法的上下文中,当您要访问类属性时,必须使用 $ this->属性。如果没有 $ this ,您实际上正在访问方法范围内的变量,在您的情况下,该变量是参数 $ name 。
函数 __ construct()是您的类对象的构造函数。因此,如果您要实例化一个对象,您将在构造函数中执行代码。例如:
$user = new User("John"); // you are actually calling the __construct method here
echo $user->name; // John
希望能够启发你。