2012-05-02 39 views
12

Tôi là một nhà phát triển PHP từ nhiều năm nhưng tôi không biết chỉ một chi tiết về cách PHP xử lý các biến và các kiểu của chúng đằng sau hậu trường. Tôi có nghĩa là: trong PHP - trong lý thuyết - tôi có thể sử dụng cùng một biến để lưu trữ một số nguyên, và sau đó một chuỗi, và sau đó một boolean, và sau đó một mảng ... vv ...PHP xử lý các biến như thế nào?

Cá nhân, tôi ghét điều này cách lập trình "kém đúc", nhưng tôi tự hỏi làm thế nào PHP có thể lưu trữ và quản lý các biến và các kiểu của chúng như tôi đã hỏi. Tôi tưởng tượng người thông dịch tạo và xử lý các biến C ở phía sau, nhưng tôi không thể hiểu được làm thế nào.

Cảm ơn bạn.

+0

Rất đẹp, tôi là lập trình viên C++, ne w để php và tôi đã tự hỏi quá. –

+6

Thuật ngữ này được "nhập động", không phải "kém đúc", nếu chỉ vì nó không nhất thiết là một điều tiêu cực. –

Trả lời

12

Phía sau hậu trường, biến PHP được lưu trữ trong cấu trúc "zval", bao gồm liên kết giữa tất cả các loại dữ liệu mà biến có thể lưu trữ (ví dụ: dài, đôi, con trỏ chuỗi/chiều dài , một đối tượng con trỏ ...), và một vài trường khác bên ngoài liên minh cho biết loại đó là gì và theo dõi số lượng tham chiếu.

Có một số thảo luận thêm về này tại địa chỉ:

http://devzone.zend.com/317/extension-writing-part-ii-parameters-arrays-and-zvals/

+0

Rất đầy đủ! Cảm ơn bạn :) –

-1

Nếu tôi nhớ chính xác, PHP sẽ tiến hành một số biến trong bộ nhớ cho mỗi biến trong PHP:

$test = 0; 

Chuyển thành .. .

int test = 0; 
float test = 0; 
char test = 0; 
bool test = false; 
pointer test = null; 
... 
+0

Nếu đó là sự thật, đó là khủng khiếp không hiệu quả vì không có lý do chính đáng. Trích dẫn? – delnan

+0

Xem câu trả lời của duskwuff, nó tốt hơn tôi. –

+0

Câu trả lời của anh ta nói điều gì đó khác biệt. Trong thực tế, câu trả lời của ông ngụ ý chỉ có một biến tồn tại. – delnan

Các vấn đề liên quan