Đầu tiên, xin lỗi cho câu hỏi ngu ngốc, nhưng tôi đã đọc một bài báo trong php.net và tôi không thể hiểu chính xác nó nói gì.Phân công đối tượng trong PHP
<?php
class SimpleClass
{
// property declaration
public $var = 'a default value';
// method declaration
public function displayVar() {
echo $this->var;
}
}
?>
<?php
$instance = new SimpleClass();
$assigned = $instance;
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // $instance and $reference become null
var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
Và đây kết quả đầu ra này:
NULL
NULL
object(SimpleClass)#1 (1) {
["var"]=>
string(30) "$assigned will have this value"
}
$ dụ và $ tham khảo điểm đến cùng một nơi, tôi có được điều này và tôi hiểu lý do tại sao chúng tôi nhận NULL và NULL cho họ.
Nhưng khoảng $ được chỉ định thì sao? Nó cũng chỉ ra nơi mà $ instance được lưu trữ? Tại sao khi chúng tôi sử dụng $instance->var
nó ảnh hưởng đến $ được chỉ định, nhưng khi chúng tôi đặt $ dụ thành rỗng, không có thay đổi nào với $ được chỉ định?
Tôi nghĩ rằng cả ba biến trỏ đến một nơi trong bộ nhớ, nhưng rõ ràng là tôi sai. Bạn có thể vui lòng giải thích cho tôi chính xác những gì xảy ra và $ được chỉ định là gì? Cảm ơn nhiều!
Bạn có mã cho SimpleClass của mình? – user978122
Các lớp học được tham chiếu trong hầu hết các trường hợp. Có vẻ như không có cấu trúc trong PHP mặc dù. –
@AlvinWong, IIRC nó không đúng trước khi PHP5 –