2012-05-15 75 views
1

我是OOP的新手,並試圖定義一組公開的SQL查詢,這些查詢可以在類的方法中訪問。到目前爲止我發現的是,該類的其他公共變量不能插入到另一個公共變量中。我完全接受任何其他方式來做到這一點。下面是我在尋找使用代碼:在PHP中放置公共變量中的變量

class baseQuery 
{ 
    public static $ignoreAccounts = "(1, 2, 3, 4)"; 
    public $preparedQuery = "SELECT COUNT(?) FROM ? WHERE removed != 1 AND accountid NOT IN static::$ignoreaccounts AND ? BETWEEN $dateAfter AND $dateBefore"; 

但我發現瞭解析錯誤:語法錯誤,意想不到的「'

+0

如果preparedQuery不是靜態的,你應該在構造函數中實例化它。 – allaire

回答

2

我倒是抽象甚至進一步創建得到公衆的方法。你想獲得的數據,不包含一般的SQL語句。

所以也許retrieveAccounts方法。這需要賬目的陣列,不容忽視。

在裏面你可以添加忽略帳號的方法。

對不起,澄清,讓您的當前設置不一定能提供面向對象的所有優點(不是我下面的例子會那樣做,但希望它會幫助你的方向)

也許你的應用程序可以從受益AccountManager

class AccountManager { 
    public $retrieveAccounts($startDate, $endDate, $ignoredAccounts = array()) { 
    return "SELECT COUNT(?) FROM ? WHERE removed != 1 AND accountid NOT IN $ignoreaccounts AND ? BETWEEN $dateAfter AND $dateBefore"; 

    } 

$am = new AccountManager(); 
$accounts = $am->retrieveAccounts($startDate, $endDate); 

也許你的AccountManager類應該有一個addAcount方法呢?我不知道。 我認爲這是一個很好的習慣,可以從你的課堂上存在「消費者」角度來思考,即使那個人是你。消費者不需要知道您如何獲取您的帳戶信息。他們只需要能夠做到這一點。就像我說的,這不一定是做它的方式,但它的更強的抽象。

因此,根據我上面的建議,如果由於某種原因想要從文件,或postgres或mongodb中提取帳號,該怎麼辦。你可以使用這個類來構建一個程序,並且如果你需要改變你從哪裏獲取賬戶,可以在AccountManager中完成,你的程序根本不需要改變。

+0

我不太關注。如何在不包含SQL語句的情況下「獲取我試圖獲取的數據」? – bswinnerton

+0

@bswinnerton更新,以澄清我想說的更多一點 – dm03514