尝试并搜索这个,但从未在这里似乎找到它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