嘗試並搜索這個,但從未在這裏似乎找到它SO 嘗試使用unset($this->property_name)
但它仍然顯示時,我使用print_r($object_name)
,是不可能刪除對象的私有屬性?刪除對象的私有屬性
這裏是一個示例代碼
class my_obj
{
private $a, $b, $c, $d;
public function __construct($data = null)
{
if($data)
{
foreach($data as $key)
{
if(property_exists($this,$key))
{
$this->$key = $value;
}
}
}
}
實現:
$test = new my_obj(array('a'=>a, 'c'=>'c'));
echo '<pre>',print_r($test,TRUE),'</pre>';
輸出會是這樣的
my_obj Object
(
[a:my_obje:private] => a
[b:my_obje:private] =>
[c:my_obje:private] => c
[d:my_obje:private] =>
)
現在我想,沒有設置這些屬性是完全刪除 再次,我試過未設置,它似乎不工作
感謝所有關心到的事實,我們有了更好的方法做你不管它是什麼,你需要這個(你應該解釋一下,你需要在另一個要解決的問題除了回答這個
陳規定型的問題。你爲什麼想要做這樣的事情?必須有更好的解決方案。 –
你必須預先定義它們嗎? –
my_obj將成爲其實現的模板,目標對象實現將包含特定的屬性而不是整體,所以如果屬性會很高,那麼我們將攜帶整組屬性而不是使用構造函數,我會實現它像'$ a = new my_obj(array('a'=>'a'))'; '$ ab = new my_obj(array('a'=>'a','b'=>'b'))'和類似的東西'$ abd = new my_obj ,'b'=>'b','d'=>'d'));' – ianace