调用属性时自动创建对象

时间:2010-12-10 17:09:04

标签: php

我想知道在调用属性时是否有办法自动创建对象。一个例子:

<?php
  echo $myObj->myProperty
?>

此代码当然会失败,因为我在读取属性之前没有启动$ myObj。 我正在寻找的是一种基于“myObj”自动启动$ myObj的方法。

类似的东西:

<?php
class myObj {
  public myProperty = 'BlaBla';
}
echo $myObj->myProperty; //outputs BlaBla instead of failing
?>

我知道__autoload($ classname),但这只能用于启动类代码,即include(),所以这不是后来的。

2 个答案:

答案 0 :(得分:1)

你可以使用魔术方法自动化这样的东西......

http://www.php.net/manual/en/language.oop5.magic.php

答案 1 :(得分:0)

关闭这个问题,这就是我最终做的事情:

preg_match_all("/\\\$(.*?)->/si", $code, $matches);

我循环从数据库中获取的代码,查找对象

等对象的任何引用
$xxxx->

然后我循环引用并创建对象

            foreach($matches[1] as $key=>$value) {
            $$value = Connector::loadConnector($value);
        }

“loadConnector是:

    public function loadConnector($connector, $params = NULL) {
    require_once $connector. ".php";
    $c_name = $connector;
    return new $c_name($params);    
}

这当然是基于我的文件结构,它也需要一些错误处理,但到目前为止看起来它解决了我的问题:)

BR /淑娜