我可能應該有,但我從來沒有見過。在查看Smarty插件的文檔時可以看到它。PHP中的符號我從來沒有遇到過
$smarty =& new Smarty;
= &特別注意。如果您在Google中輸入該內容,則會像其他搜索引擎一樣被忽略。這用於什麼?
同去的這個函數簽名:
function connect(&$smarty, $reset = false)
爲什麼&符號?
我可能應該有,但我從來沒有見過。在查看Smarty插件的文檔時可以看到它。PHP中的符號我從來沒有遇到過
$smarty =& new Smarty;
= &特別注意。如果您在Google中輸入該內容,則會像其他搜索引擎一樣被忽略。這用於什麼?
同去的這個函數簽名:
function connect(&$smarty, $reset = false)
爲什麼&符號?
也用於返回引用 – 2009-12-07 11:13:37
&符將分配一個對變量的引用,而不是對象的值。
&是PHP的參考運算符。它用於返回對象的引用。在這種情況下,「新Smarty」。
&
passes an argument by reference。以這種方式,connect()
可以操作$smarty
對象,以便調用函數可以檢索修改的對象。
類似地,=&
通過引用設置變量。
正如蒂姆所說,它是一個變量的參考。但是,如果您使用的是最新版本的PHP,那麼無論如何所有類對象都通過引用傳遞。如果您在傳遞數組或其他內置類型時仍然需要這個。
第一個示例是返回引用,第二個是傳遞引用。
你可以閱讀所有關於它在PHP manual
其實,這段代碼被寫入與PHP 4兼容的符號是PHP 5中無用的(如Tim說 - 因爲PHP 5,所有的對象都是通過參考傳遞)。
在PHP 4中,所有變量都是按值傳遞的。 如果你想通過引用傳遞它,你必須聲明引用賦值:
$ref_on_my_object =& new MyObject();
此代碼仍與PHP 5的默認配置所接受,但最好這樣寫:
$ref_on_my_object = new MyObject(); // Reference assignment is implicit
對於你的第二個問題,問題幾乎是一樣的...... 因爲PHP允許你聲明函數參數(響應類型),並且你不能爲返回值。 被接受的,但「不太好」的做法是避免該函數的聲明中引用聲明:
function foo($my_arg) {
// Some processing
}
並與參考調用...
$my_var;
$result = foo(&$my_var);
// $my_var may have changed because you sent the reference to the function
理想的聲明將更像:
function foo(& $my_input_arg) {
// Some processing
}
然後,呼叫失去與號:
$my_var;
$result = foo($my_var);
// $my_var may have changed because you sent the reference to the function
顯然是最好的答案。 – MiseryIndex 2009-12-07 13:29:38
一個與號運營商的主要用途之一是由通過內存地址。這通常是您想要更改變量但不返回時所做的事情。
function test_array(&$arr) { $varr[] = "test2"; } $var = array('test'); test_array($var); print_r($var); this should output array(test , test2);
這樣做的目的通常是當你需要實際的複製[存儲器地址]你正在使用的傳遞到另一個函數/對象。它通常用於緩解內存不足和加速性能,這是C/C++和其他一些低級語言的一個特性。
請注意,在第一個示例中,您只需要在PHP4中使用它。 – nickf 2009-12-07 11:24:49
單詞與Google一起工作,例如「等於& php」。 – GZipp 2009-12-07 15:02:52