stdClass là một tính năng tiện dụng do PHP cung cấp để tạo một lớp thông thường. Nó là một lớp 'trống rỗng' được xác định trước được sử dụng như một lớp tiện ích để truyền các đối tượng thuộc các loại khác. Nó không có cha mẹ, thuộc tính hoặc phương thức. Nó cũng không hỗ trợ các phương thức ma thuật và không triển khai bất kỳ giao diện nào
Mục lục
- Tạo đối tượng stdClass
- Tạo một đối tượng stdClass bằng cách truyền kiểu
- Chuyển đổi một mảng thành một đối tượng
- Chuyển đổi một đối tượng thành một mảng
Tạo đối tượng stdClass
Ví dụ
Trong ví dụ sau, stdClass được sử dụng thay vì một mảng để lưu trữ thông tin chi tiết
<?php $obj= new stdClass(); $obj->name= 'W3schools'; $obj->extension= 'In'; var_dump($object); ?>Đầu ra chương trình
object(stdClass)#1 (2) { ["name"]=> string(9) "W3schools" ["extension"]=> string(2) "In" }Bất cứ khi nào bạn cần một thể hiện đối tượng chung trong chương trình của mình, bạn có thể sử dụng stdClass vì khi bạn truyền bất kỳ loại nào khác cho một đối tượng, bạn sẽ nhận được một thể hiện của stdClass
- Nếu một đối tượng được chuyển đổi thành một đối tượng sử dụng stdClass, nó sẽ không bị sửa đổi
- Nếu giá trị đã cho là NULL, phiên bản mới cũng sẽ trống
- Mảng chuyển đổi thành một đối tượng có thuộc tính được đặt tên theo khóa và giá trị liên quan. Nó giống như sự thay thế cho các mảng kết hợp
- Thành viên có tên vô hướng sẽ chứa giá trị cho bất kỳ loại giá trị nào khác
Tạo một đối tượng stdClass bằng cách truyền kiểu
Ví dụ
Ví dụ sau đây cho thấy rằng giá trị sẽ có sẵn trong một thành viên có tên là Scalar khi đánh kiểu một kiểu khác vào một đối tượng
<?php $obj= (object) 'W3schools'; var_dump($obj); // output in scalar ?>Đầu ra chương trình
object(stdClass)#1 (1) { ["scalar"]=> string(9) "W3schools" }Chuyển đổi một mảng thành một đối tượng
Ví dụ
Trong ví dụ sau, một mảng được chuyển đổi thành một đối tượng bằng cách nhập liệu
<?php $obj = array( 'name'=>'W3schools', 'Extension'=>'In', ); $obj= (object) $obj; var_dump($obj); ?>Đầu ra chương trình
object(stdClass)#1 (2) { ["name"]=> string(9) "W3schools" ["Extension"]=> string(2) "In" }Chuyển đổi một đối tượng thành một mảng
Ví dụ
Trong ví dụ sau, một đối tượng được chuyển đổi thành một mảng bằng cách nhập liệu
<?php $obj= new stdClass(); $obj->name= 'W3schools'; $obj->extension= 'In'; $data = (array) $obj; print_r($data); ?>Đầu ra chương trình
Array( [name] => W3schools [extension] => In )PHP khác với các ngôn ngữ hướng đối tượng khác vì các lớp trong PHP không tự động dẫn xuất từ bất kỳ lớp nào. Tất cả các lớp PHP là độc lập trừ khi chúng được mở rộng rõ ràng từ một lớp khác. Ở đây bạn có thể nghĩ đến việc định nghĩa một lớp mở rộng stdClass, nhưng nó sẽ không mang lại cho bạn bất kỳ lợi ích nào vì stdClass không làm gì cả
PHP stdClass() là một thứ không được ghi chép đầy đủ nhưng tôi sẽ cố gắng làm sáng tỏ vấn đề. stdClass là một đối tượng PHP mặc định không có thành viên được xác định trước. Tên stdClass được Zend sử dụng nội bộ và được bảo lưu. Vì vậy, điều đó có nghĩa là bạn không thể định nghĩa một lớp có tên stdClass trong mã PHP của mình
Nó có thể được sử dụng để khởi tạo các đối tượng chung theo cách thủ công mà sau đó bạn có thể đặt các biến thành viên, điều này rất hữu ích để chuyển các đối tượng đến các hàm hoặc phương thức khác sẽ lấy một đối tượng làm đối số. Một cách sử dụng thậm chí có nhiều khả năng hơn là truyền một mảng tới một đối tượng lấy từng giá trị trong mảng và thêm nó dưới dạng một biến thành viên có tên dựa trên khóa trong mảng
Đây là một ví dụ dưới đây chuyển đổi một mảng nhiều chiều thành một đối tượng. Điều này được thực hiện thông qua đệ quy
________số 8
class myNumber
{
public $value;
}
object(stdClass)#1 (2) { ["name"]=> string(9) "W3schools" ["extension"]=> string(2) "In" }0
object(stdClass)#1 (2) { ["name"]=> string(9) "W3schools" ["extension"]=> string(2) "In" }1
object(stdClass)#1 (2) { ["name"]=> string(9) "W3schools" ["extension"]=> string(2) "In" }2
object(stdClass)#1 (2) { ["name"]=> string(9) "W3schools" ["extension"]=> string(2) "In" }3
class myNumber
{
public $value;
}
object(stdClass)#1 (2) { ["name"]=> string(9) "W3schools" ["extension"]=> string(2) "In" }5
object(stdClass)#1 (2) { ["name"]=> string(9) "W3schools" ["extension"]=> string(2) "In" }1
object(stdClass)#1 (2) { ["name"]=> string(9) "W3schools" ["extension"]=> string(2) "In" }7
class myNumber
{
public $value;
}0