Tên thuộc tính từ mảng trong OOP trong PHP
Bây giờ hãy xem cách truy cập
thuộc tính của đối tượng theo tên
từ phần tử mảng.
Giả sử chúng ta có lớp User sau:
<?php
class User
{
public $name;
public $surn;
public function __construct($name, $surn)
{
$this->name = $name;
$this->surn = $surn;
}
}
?>
Hãy tạo một đối tượng của lớp này:
<?php
$user = new User('john', 'smit');
?>
Giả sử cho một mảng các thuộc tính:
<?php
$props = ['name', 'surn'];
?>
Bây giờ hãy thử in giá trị của thuộc tính được lưu trữ trong phần tử 0 của mảng:
<?php
echo $user->$props[0]; // cách này sẽ không hoạt động
?>
Để một tên thuộc tính phức tạp như vậy hoạt động, nó cần được đặt trong dấu ngoặc nhọn, như thế này:
<?php
echo $user->{$props[0]}; // sẽ in ra 'john'
?>
Cho lớp sau:
<?php
class Employee
{
public $name;
public $salary;
public $position;
public function __construct($name, $salary, $position)
{
$this->name = $name;
$this->salary = $salary;
$this->position = $position;
}
}
?>
Cho mảng:
<?php
$arr = ['name', 'salary', 'position'];
?>
Tạo một đối tượng của lớp Employee,
sau đó truy cập các thuộc tính của nó
thông qua các phần tử của mảng.