Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
那些$variable->$OOP php中的变量是什么?_Php_Oop - Fatal编程技术网

那些$variable->$OOP php中的变量是什么?

那些$variable->$OOP php中的变量是什么?,php,oop,Php,Oop,我正在学习一个教程,在定义用户类时遇到了以下代码: 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){

我正在学习一个教程,在定义用户类时遇到了以下代码:

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,我真的很困惑这段代码到底在写什么


非常感谢。

非常基本的问题:它将值
$value
分配给对象
$object
的属性
$attribute


换句话说,它是将变量
$value
的值复制到对象的属性
$object

所有这一切都是在内部创建一个新的实例,它是在为递归或其他功能创建一个新的自身实例

所谓:

$object->$attribute

基本上,从我所看到的。将创建一个新实例,然后根据$attribute的内容返回一个值或调用一个方法。这是PHP类属性的赋值语句。让我们用一个不那么模棱两可的例子。我们将创建一个包含名字和姓氏的small person类

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";
$personsName = $myPerson->firstName;
或者,如果要将值myPerson对象的firstName字段指定给其他变量,可以执行以下操作:

//Instantiate a new person
$myPerson = new Person();

//Assign values to the person object
$myPerson->firstName = "John";
$myPerson->lastName = "Smith";
$personsName = $myPerson->firstName;

它是一个对象的寻址属性,
$object
,它的名称存储在
$attribute
中。不得不说,我真的很想知道在这里使用
\u set()
有什么不对。@raina77现在,OP似乎在学习教程,这可能是用贬低的代码编写的,或者是由认为自己在该领域很有知识的人编写的,所以开始编写非优化教程。非常感谢,您的解释让我非常清楚。你的答案正是我在教程中寻找的答案。