我是OOP的新手并尝试定义一组可以在类的方法中访问的公共编写的SQL查询。到目前为止我发现的是,该类的其他公共变量不能插入另一个公共变量中。我完全愿意接受任何其他方式来做到这一点。以下是我要使用的代码:
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";
但我得到Parse错误:语法错误,意外'''
答案 0 :(得分:2)
我会进一步抽象它。创建获取您尝试获取的数据的公共方法,而不是包含常规sql语句的公共方法。
所以也许是retrieveAccounts
方法。这需要忽略一系列帐户。
在方法中,您可以添加被忽略的帐户。
很抱歉,澄清一下,让你当前的设置并不一定能提供OOP的所有优点(不是我下面的例子,但希望它会帮助你指导)
也许您的应用可以从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中执行此操作,并且您的程序根本不需要更改。