将变量放在PHP中的公共变量中

时间:2012-05-15 15:04:06

标签: php oop

我是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错误:语法错误,意外'''

1 个答案:

答案 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中执行此操作,并且您的程序根本不需要更改。