2010-06-02 71 views
7

我有一个类中的方法试图返回一个指针:PHP - 可以返回一个指针吗?

<?php 
public function prepare($query) { 
    // bla bla bla 

    return &$this->statement; 
} 
?> 

但它产生以下错误:

解析错误:语法错误,意想不到的“&”在/家/ realst34 /的public_html/s98_fw /班/在线sql.php

此代码,但是,工作原理:

<?php 
public function prepare($query) { 
    // bla bla bla 

    $statement = &$this->statement; 
    return $statement; 
} 
?> 

这是PHP的本质还是我做错了什么?

+0

什么版本的PHP? 4或5? – 2010-06-03 00:00:53

+2

他使用“public”,所以它是5.而PHP 4已经死了。 – johannes 2010-06-03 00:05:46

+0

@johannes - 好点。 – 2010-06-03 01:08:55

回答

13

PHP没有指针。 PHP有参考。 PHP中的引用是一个真正的别名。但你不需要他们。对象通过句柄传递(因此他们感觉像引用)用于其他数据PHP使用写时复制机制,因此不存在内存/性能损失。在使用引用时,性能会受到影响,因为它们会禁用写入时复制以及引擎中的所有优化。

如果你真的想返回参考挥霍todeclare它的签名:

public function &prepare($query) { 
    // bla bla bla 

    return $this->statement; 
} 

但正如说:如果$这个 - >语句是一个对象,也没有必要。

另请参见http://php.net/references

+0

谢谢!我一定要看看指针/引用/别名等的区别。我只是返回对象(它是一个对象)。 – 2010-06-03 00:23:56