如何在构造对象时设置属性的默认值

时间:2014-04-06 10:20:35

标签: php oop

我有一个像下面这样的简单类,有一些已定义的属性:

class model
{
    public $fakeUser = 'user';
    public $ENABLED_IF_LOGIN='disabled',
           $DISABLED_IF_LOGIN='',
           $HIDE_IF_LOGIN='',
           $SHOW_IF_LOGIN='hide',
           $SHOW_IF_EMAIL_VERIFIED='',
           $SHOW_IF_MOB_VERIFIED='',
           $SHOW_IF_INFO_VERIFIED='',
           $SHOW_IF_ADDR_VERIFIED='',

           $HIDE_IF_EMAIL_VERIFIED='',
           $HIDE_IF_MOB_VERIFIED='',
           $HIDE_IF_INFO_VERIFIED='',
           $HIDE_IF_ADDR_VERIFIED='';.

   function __construct()
   {

   }
}

这些属性在执行期间正在发生变化。

当我调用__construct()时,如何设置默认类属性。

我试过了,但我对new model

有疑问
$prop = get_object_vars(new model);
foreach($prop as $k=>$v)
     $this->{$k} = $v;

1 个答案:

答案 0 :(得分:1)

<?php

class model
{
    public $fakeUser = 'user';
    public $ENABLED_IF_LOGIN='disabled',
           $DISABLED_IF_LOGIN='',
           $HIDE_IF_LOGIN='',
           $SHOW_IF_LOGIN='hide',
           $SHOW_IF_EMAIL_VERIFIED='',
           $SHOW_IF_MOB_VERIFIED='',
           $SHOW_IF_INFO_VERIFIED='',
           $SHOW_IF_ADDR_VERIFIED='',

           $HIDE_IF_EMAIL_VERIFIED='',
           $HIDE_IF_MOB_VERIFIED='',
           $HIDE_IF_INFO_VERIFIED='',
           $HIDE_IF_ADDR_VERIFIED='';
}


$dirtyModel = new Model();
$dirtyModel->fakeUser = 'updatedFakeUser';

var_dump($dirtyModel);

// reset properties
$defaultModel  = new Model();
$defaultValues = get_object_vars($defaultModel);

foreach ($defaultValues as $k => $v) {
    $dirtyModel->{$k} = $v;
}

// the object after re-initialised
var_dump($dirtyModel);