Có cách nào để đặt loại rõ ràng thành trường đối tượng trong php không? Một cái gì đó như thế nàyKhai báo lớp PHP
class House{
private Roof $roof
}
Có cách nào để đặt loại rõ ràng thành trường đối tượng trong php không? Một cái gì đó như thế nàyKhai báo lớp PHP
class House{
private Roof $roof
}
Không, không có. Biến PHP luôn có thể thuộc bất kỳ loại nào. Nhưng bạn có thể thực thi một loại trong setter:
public function setRoof(Roof $roof) {
$this->roof = $roof;
}
Bạn đang tìm kiếm loại Hinting của PHP. Nó hoạt động tốt trên các cuộc gọi hàm/phương thức. Dưới đây là hướng dẫn:
Bạn không thể sử dụng mã PHP để khai báo kiểu của một lĩnh vực đối tượng.
Nhưng bạn có thể đặt loại gợi ý trong docblock nhận xét:
class House{
/**
* @var Roof
*/
private $roof
}
này vẫn không làm cho đoạn code thực thi các loại, nhưng một số công cụ IDE hiểu docblocks và có thể cảnh báo bạn nếu bạn sử dụng biến này mà không phù hợp với gợi ý loại.
bạn cũng có thể sử dụng sau đây trước khi sử dụng các thành viên
if (!$this->roof instanceof Roof) {
throw new Exception('$this->roof is not an instance of Roof');
}
Lưu ý rằng bạn chỉ có thể thực thi các đối tượng hoặc mảng, nhưng không phải loại "nguyên thủy" như phao hoặc chuỗi. – svens
Nếu bạn có một setter dự kiến một kiểu nguyên thủy, 'bool' chẳng hạn, bạn luôn có thể' assert ('is_bool ($ value)'); '. – meagar
@svens: FWIW, PHP phát triển thêm loại vô hướng gợi ý vào ngày 20/5/2010. Tôi không chắc khi nào nó sẽ biến nó thành một bản phát hành chính thức. –