Tôi đang cố tạo một đối tượng PHP (5) có thể lặp qua các thuộc tính của nó, xây dựng truy vấn SQL chỉ dựa trên các thuộc tính công khai của nó chứ không phải các thuộc tính riêng.Phát hiện nếu thuộc tính đối tượng là riêng tư trong PHP
Vì phương thức đối tượng gốc này được sử dụng bởi các đối tượng con, tôi không thể đơn giản chọn bỏ qua các thuộc tính riêng theo tên (tôi sẽ không biết chúng nằm trong đối tượng con).
Có cách nào đơn giản để phát hiện từ bên trong đối tượng thuộc tính của nó là riêng tư không?
Dưới đây là một ví dụ đơn giản về những gì tôi đã có cho đến nay, nhưng sản lượng này bao gồm giá trị của $ bar:
class testClass {
public $foo = 'foo';
public $fee = 'fee';
public $fum = 'fum';
private $bar = 'bar';
function makeString()
{
$string = "";
foreach($this as $field => $val) {
$string.= " property '".$field."' = '".$val."' <br/>";
}
return $string;
}
}
$test = new testClass();
echo $test->makeString();
Cung cấp đầu ra:
property 'foo' = 'foo'
property 'fee' = 'fee'
property 'fum' = 'fum'
property 'bar' = 'bar'
Tôi muốn nó không bao gồm 'bar'.
Nếu có cách tốt hơn để lặp qua chỉ các thuộc tính công khai của một đối tượng, điều đó cũng sẽ hoạt động ở đây.
Cảm ơn - Tôi nghĩ powtac đã đánh bại bạn trong khoảng 30 giây, nhưng có, hoạt động chính xác khi cần. – Hippyjim
Vâng, tôi đoán đã dành quá nhiều thời gian để tạo ra một câu trả lời khá hay với các liên kết gọn gàng và gọn gàng với tài liệu. Bài học kinh nghiệm, câu trả lời nhanh và bẩn từ đây trở đi! :-) – salathe