我们开始在工作中的PHP中使用OO。当我开始使用它时,我发现为什么我一直在思考我最近编程的一些应用程序时遇到问题:我已经习惯了在Perl中使用OO框架。突然间,用PHP编程变得容易多了。
但是,有一些不同之处。看来您不能在对象属性中传递对象,然后像这样引用它们:
$object->db>query($sql)
PHP不喜欢那种语法(至少在4.x版中不喜欢)。相反,您必须在属性中传递对对象的引用,然后在您希望使用它时为该引用设置一个临时变量:
$object->db =& $db; ... $db = $object->db; $res = $db->query($sql);
如果你想继承另一个类并扩展其中一个方法怎么办?换句话说,你想使用父类的方法,但你想用它做一些额外的事情?简单:使用parent
:
function method1() { /* do some pre-processing */ parent::method1(); // Do the parent's version of the method /* do some more stuff here */ }
更新:
实际上,当对象是另一个对象的属性时,您可以引用它们;您只需要以正确的顺序定义引用:
$db =& DB::connect('dsn'); $this->db =& $db; ... $res = $this->db->query($sql);
我已经用PEAR的DB和Smarty测试了上述语法,它可以正常工作。