Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Đối tượng (Object) trong PHP

Định nghĩa và cách sử dụng

Trong PHP, Object là một kiểu dữ liệu phức hợp (cùng với array). Nó cho phép lưu trữ nhiều giá trị khác kiểu dữ liệu trong một biến duy nhất. Object là một instance (thể hiện) của một lớp (class) có sẵn hoặc do người dùng định nghĩa. Ngoài các thuộc tính (properties), class còn định nghĩa các chức năng (methods) liên quan đến dữ liệu.

Các biến nguyên thủy (scalar), mảng và các object khác có thể được ép kiểu (cast) sang kiểu object bằng toán tử ép kiểu. PHP cung cấp stdClass như một class rỗng chung, rất hữu ích để thêm thuộc tính động và ép kiểu.

Cú pháp

Để khai báo một object của một class, ta sử dụng từ khóa new:

class MyClass { 
    // thuộc tính và phương thức
}
$obj = new MyClass;

Ví dụ

Object cơ bản

<?php
class SayHello {
    function hello() {
        echo "Hello World";
    }
}
$obj = new SayHello;
$obj->hello();
?>

Kết quả

Hello World

Object stdClass với thuộc tính động

Object của stdClass ban đầu là null. Chúng ta có thể thêm thuộc tính động:

<?php
$obj = new stdClass;
$obj->name = "Deepak";
$obj->age = 21;
$obj->marks = 75;
print_r($obj);
?>

Kết quả

stdClass Object(
    [name] => Deepak
    [age] => 21
    [marks] => 75
)

Ép kiểu mảng sang object

<?php
$arr = array("name" => "Deepak", "age" => 21, "marks" => 75);
$obj = (object)$arr;
print_r($obj);
?>

Kết quả

stdClass Object(
    [name] => Deepak
    [age] => 21
    [marks] => 75
)

Ép kiểu object sang mảng

<?php
$obj = new stdClass;
$obj->name = "Deepak";
$obj->age = 21;
$obj->marks = 75;
$arr = (array)$obj;
print_r($arr);
?>

Kết quả

Array(
    [name] => Deepak
    [age] => 21
    [marks] => 75
)

Ép kiểu scalar sang object

Biến bất kỳ kiểu scalar nào cũng có thể chuyển đổi thành object bằng ép kiểu. Giá trị của biến scalar sẽ trở thành giá trị của thuộc tính scalar của object.

<?php
$name = "Deepak";
$age = 21;
$percent = 75.50;

$obj1 = (object)$name;
print_r($obj1);

$obj2 = (object)$age;
print_r($obj2);

$obj3 = (object)$percent;
print_r($obj3);
?>

Kết quả

stdClass Object( [scalar] => Deepak )
stdClass Object( [scalar] => 21 )
stdClass Object( [scalar] => 75.5 )