我对构造函数很困惑。我需要将一个数组传递给一个类。我现在有2个数据传递给数组。
现在从这个数组中,我需要定义$this->m_id
和$this->community_type
,以便我可以在类中使用这些变量。以下是我的例子。
$arr = array('id'=>$u_id, 'community_type' => $community_type);
$rate = new Registration($arr);
class Registration{
protected $m_id;
protected $community_type;
public function __construct(array $arr = array())
{
foreach ($arr as $key => $value) {
$this->$key = $value;
}
}
}
我希望设置
$this->m_id = $m_id;
$this->community_type = $community_type;
我尝试使用for
循环,但我不知道出了什么问题。
任何人都可以帮助我
答案 0 :(得分:1)
您可以尝试$array[your_array_key]
,如下所示
public function __construct(array $arr = array())
{
$this->m_id = $arr['id'];
$this->community_type = $arr['community_type'];
}
你现有的代码应该可行,如果你正在尝试循环,只有我能注意到的问题是,
protected $m_id;
您需要将其更改为
protected $id;
因为,在你的循环中,你假设你的密钥是成员变量,实际上不是。
foreach ($arr as $key => $value) {
$this->$key = $value;
}
在你是数组中,你的第一个键是id
,其中成员变量被声明为m_id
,这是不匹配的。
答案 1 :(得分:1)
在终端中运行时,它显示对象的属性是按照预期动态创建的:
php > class Registration{
php { protected $m_id;
php { protected $community_type;
php {
php { public function __construct(array $arr = array())
php { {
php { foreach ($arr as $key => $value) {
php { $this->$key = $value;
php { }
php { }
php { }
php > $u_id = 'u_id value';
php > $community_type = 'community type value';
php >
php > $arr = array('id'=>$u_id, 'community_type' => $community_type);
php > $rate = new Registration($arr);
php >
php > var_dump($rate);
object(Registration)#1 (3) {
["m_id":protected]=>
NULL
["community_type":protected]=>
string(20) "community type value"
["id"]=>
string(10) "u_id value"
}
我认为有几个令人困惑的因素可能让你失望:
$u_id
和$community_type
变量?他们不在你的代码中。$m_id
vs $u_id
,['id']
vs $this->m_id
var_dump显示数组的键(['id']
和['community_type']
确实被指定为对象的属性。