我有一個應用程序有很多的查詢,在多個地方重複使用。什麼是最有效的方式來存儲這些?我的直覺是將它們存儲在數組中的一類,即:如何在PHP應用程序中高效地存儲sql?
$sql['report 1'] = "SELECT this FROM that WHERE expression";
$sql['report 2'] = "SELECT this FROM that WHERE expression2";
等
誰曾使用沒有開關情況下,對參與這個項目的另一個開發者:
switch($query){
case 'report 1':
$sql = "SELECT this FROM that WHERE expression1";
break;
case 'report 2':
$sql = "SELECT this FROM that WHERE expression2";
break;
}
$result = runquery($sql);
另一個我的想法是,每個報告應該是它自己的功能:
function report1(){
// run the query here
return result;
}
function report2(){
// run the query here
return $result;
}
我更喜歡陣列我因爲它看起來像更乾淨的代碼,但由於有大量的查詢,在內存使用方面是不是浪費?是不是所有的查詢都會保存在內存中?
開關盒的方法似乎有點笨拙。這些方法的優點和缺點是什麼?有沒有一種方法能夠突出這種「最佳方式」?或者也許另一種我沒有考慮過的方法?
不要「存儲」SQL查詢。在一個地方定義它們並調用該函數。 –
老實說,我也有很多查詢運行,我不保存在任何地方。我正在用一個querybuilder類編寫它們。例如。 '$ sql = querybuilder :: newInstance() - > table('settings') - > select(「*」); //返回PDOStatement對象。這看起來像是浪費了磁盤空間,但是如果您想要從該表中獲取更多指定或不同的數據,您現在會添加其他功能嗎?我只是將更多的方法添加到上面的列表中(或其他開發人員將只擴展sql字符串)。老實說,我沒有看到使用數組,開關或函數只返回SQL數據的親。 –
我同意@juergen。最好的方法是創建一個存儲庫類,其中包含如下方法:'public function getReport1()',它包含SQL查詢並獲取結果。然後很容易將存儲庫類與依賴注入等交換以用於測試/更改存儲。 –