我正在学习教程并在定义用户类时遇到以下代码:
class User {
public $id;
public $username;
public $password;
public $first_name;
public $last_name;
public static function instantiate($record) {
$object = new self;
foreach ($record as $attribute => $value){
if ($object->has_attribute($attribute)){
$object->$attribute = $value;
}
}
return $object;
}
private function has_attribute($attribute) {
$object_vars = get_object_vars($this);
return array_key_exists($attribute, $object_vars);
}
}
我的问题是:“$ object-> $ attribute = $ value;”做到了吗?
我刚开始使用OOP php而且我真的很担心这些代码正在崩溃。
非常感谢。
答案 0 :(得分:1)
非常基本的问题:它将值$value
分配给对象$attribute
的属性$object
。
换句话说,它是将变量$value
的值复制到对象$object
的属性。
答案 1 :(得分:0)
所有这一切都是在内部创建一个新的实例,为一种递归形式或其他功能创建一个新的自我实例,
所以打电话:
$object->$attribute
从我能看到的,基本上是基本的。将创建一个新实例,然后根据$属性的内容返回一个值或调用一个方法
答案 2 :(得分:0)
它是PHP类属性的赋值语句。让我们使用一个不那么模糊的例子。我们将创建一个包含名字和姓氏的小人物类。
class Person
{
//Class attributes
public $fisrtName;
public $lastName;
}
使用上面的示例,如果要设置这些属性,可以执行以下操作:
//Instantiate a new person
$myPerson = new Person();
//Assign values to the person object
$myPerson->firstName = "John";
$myPerson->lastName = "Smith";
或者,如果您想将值myPerson对象的firstName字段分配给另一个变量,则可以执行以下操作:
$personsName = $myPerson->firstName;