在面向对象的php类中,$ this-> name = $ name是什么意思?

时间:2016-09-29 10:09:41

标签: php class this

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!";
  }
}

我想出了这个想法......提前谢谢。

3 个答案:

答案 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

希望能够启发你。