Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 构造对象时如何设置属性的默认值_Php_Oop - Fatal编程技术网

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);