2010-03-16 101 views
1

當我讀笨的代碼,我發現寫了一些功能如下:函數參考有什麼好處?

function &get_instance() 
{ 
    global $CI, $OBJ; 

    if (is_object($CI)) 
    { 
     return $CI; 
    } 

    return $OBJ->load; 
} 

我能理解變量refrence,但我也很難得到這個through.Is有必要使用此功能,風格和任何?效益?

謝謝。

回答

6

在PHP的語法中,這意味着函數返回一個引用而不是一個值。例如:

<?php 

$foo = 'foo'; 

function & get_foo_ref() 
{ 
    global $foo; 
    return $foo; 
} 

// Get the reference to variable $foo stored into $bar 
$bar = & get_foo_ref(); 
$bar = 'bar'; 

echo $foo; // Outputs 'bar', since $bar references to $foo. 

?> 

在上面的例子中,去除功能decleration的&將使$ foo的變量仍然含有「富」,因爲只有值,而不是引用從函數返回。

這在PHP4中更常用,因爲它沒有通過引用傳遞對象,而是將它們克隆。因此,必須通過引用傳遞對象變量以避免不必要的克隆。這在PHP5中不再是這種情況,並且引用不應該用於此目的。

但是,返回引用的函數並不是完全無用的(或者當不用於替換對象引用時,不好的做法)。例如,我個人在創建一個將「路徑」傳遞給函數的腳本時使用了它們,該函數返回對該路徑中的變量的引用,以便爲其設置值並讀取該值。由於函數的遞歸性質,需要返回引用。

+0

+1爲質量答案 – user187291 2010-03-16 14:20:32

1

沒有,沒有好處。這對於php4是必要的,但在php5中這是一種不好的做法。