我想使用构造函数将数据加载到对象的实例,然后编写
$this->property=$row["colname"]
每个属性的每次。
mysql_fetch_object函数将数据作为对象获取,但我不确定是否可以从内部将对象的实例分配给某个对象。我会用
__construct($object) { $this=$object; } //doesn't give any syntax error
也许我应该研究属性的迭代并使用
foreach($object as $key => $value) $value=$object[$key];
或者我可以指定
$this=$object;
在构造函数中?
答案 0 :(得分:0)
您无法将任何内容分配给$this
,否则您将收到错误。
我会做这样的事情:
class SomeObject
{
function __construct($base = null)
{
if ($base != null)
{
$this->load($base);
}
// continue construction as you normally would
}
function load($object)
{
foreach ($object as $key => $value)
{
$this->$key = $value;
}
}
}
然后您可以选择在构建时将数组加载到对象中,或者在构建之后通过load()
加载数组。
$rows = array('id' => 1, 'name' => 'Foo');
// create an empty SomeObject instance
$obj = new SomeObject();
var_dump($obj);
// load $rows into the object
$obj->load($rows);
var_dump($obj);
// create an instance of SomeObject based on $rows
$rows2 = array('id' => 2, 'name' => 'Bar');
$obj2 = new SomeObject($rows2);
var_dump($obj2);