Php 构造对象时如何设置属性的默认值
我有一个简单的类,如下所示,具有一些已定义的属性:Php 构造对象时如何设置属性的默认值,php,oop,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='',
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()时如何设置默认类属性
我试过了,但新型号的有问题:
$prop = get_object_vars(new model);
foreach($prop as $k=>$v)
$this->{$k} = $v;
只需使用$this->fakeUser='some val'代码>内部构造函数。此外,在类实例化时,u可以有参数,并且可以在_construct()中使用这些值来设置值。我可以像您所说的那样更改属性,但我想在调用_construct()时设置默认值。您有两个选项:1。在声明属性时为其指定显式值-这些值将是其在\uu construct
或2上的默认值。声明\u构造方法主体中的值;e、 g:
$this->someProperty='default\u value'。每种方法之间没有功能上的差异。我自己倾向于选择1。此外,您还在
ALL_CAPS_和_下划线`中命名变量,这在PHP语法约定中通常被推荐为常量的命名方案。ok。现在我该如何恢复默认值?我该如何设置$fakeuser='user'@Pooya才能恢复默认值?您必须显式地为该属性重新分配一个值。您已将该属性定义为public
,因此您只需在类内部或外部使用:$m=newmodel()编写$this->fakeUser='user'
$m->fakeUser='新名称'$m->fakeUser='name'
等。问题是当我更改值时,我没有defalutvalue@Pooya考虑到你的问题,这本身不是问题。然而,我认为你想问的是“如何重新初始化”对象的属性?在这种情况下,我想象Andy上面编辑的答案完全符合您的要求:一个init()
方法,它为您的类属性分配默认值,这些属性可以随时调用(包括\u construct()
time)。
<?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);