2011-03-10 94 views
1

我很想知道開發人員如何管理項目不可知的代碼/庫?管理不依賴項目的代碼庫

例如,假設這兩個函數:

function array_exclude_keys(Array $array, Array $keys){ 
    foreach($keys as $key){ 
     unset($array[$key]); 
    } 
    return $array; 
} 

function array_order_to_assoc(Array $array){ 
    do{ 
     $return[current($array)] = next($array); 
    }while(next($array)); 
    return !empty($return) ? $return : null; 
} 

這些有一個非常普遍的應用。在我目前正在研究的項目中,至少在兩個地方需要array_exclude功能,至少需要一個array_order_to_assoc。我甚至可以想到其他將從這些語義上受益的項目。

現在,我們可以簡單地將它們修改爲庫,並將它們寫入項目中的庫中,而不是將它們寫入必要類(非DRY)的方法中。但是,現在需要這些功能的類完全依賴於它們。沒有這種依賴關係,我在這個項目中的類實際上是「複製,粘貼,包含和實例化」,這就是我想要保留它們的方式。

我很想知道其他人如何處理這種情況。

回答

1

如果我正確理解你的問題,這聽起來像你應該看着php的spl_autoload功能。

這裏是一個教程:http://www.phpro.org/tutorials/SPL-Autoload.html

+0

**感謝vicTROLLA; **這不正是我上一下,我已經在使用的核心'__autoload()'對自動加載(而SPL爲更強大,這在這個項目中根本就沒有必要)這個項目中的一些類可以完全獨立運行,也許是最好的鬆耦合。我的'路由器'是其中之一,但是需要上述功能,但其他類也是如此。我看到它的選擇,是在每個課程中重複必要的方法,或將它們加載到外部庫中。我只是對保持鬆散耦合的替代品感到好奇。 – Dan 2011-03-11 03:44:11