سلام و عرض ادب
توی متد remove:(این کد خلاصه شده متد remove هست)
public function remove(): int
{
return $this->{$this->primaryKey};
}
این خط:
return $this->{$this->primaryKey};
چجوری تونستیم مقدار id رو بگیریم؟
وقتی که this$ رو dump میکنیم، primaryKey به این صورته:
protected 'primaryKey' => string 'id' (length=2)
و attributes هم به این صورته:
protected 'attributes' =>
array (size=4)
'id' => string '3' (length=1)
'name' => string 'Ali' (length=3)
'email' => string '[email protected]' (length=13)
'password' => string 'dfdfdf' (length=6)
زمانی هم که primaryKey رو به این صورت:
var_dump($this->primaryKey);
دامپ میکنیم، این خروجی رو میده:
'id'
پس در واقع توی این دستور:
$user = (new User(3));
var_dump($user->remove());
داریم میگیم که آبجکت userی که idش 3 هست مقدار primaryKeyش رو میخوایم.
مقدار primaryKey هم که وقتی dump کردیم ‘id’ بود، پس باید همین رو برگردونه، چجوری تونست 3 رو برگردونه؟
یعنی اینجا:
$this->{$this->primaryKey};
در واقع میاد از همون مجیک متد get__ استفاده میکنه؟ یعنی اینجوری میشه؟
$user->id;
اگه اشتباه متوجه شدم، ممنون میشم ایراد رو بفرمایین.
سلام.
برداشتتون درسته.
$this->primaryKey ===> id
$this->{$this->primaryKey} ===> $this->id ===> __get('id')