【问题标题】:Reuse method within a class在类中重用方法
【发布时间】:2010-03-07 08:01:12
【问题描述】:

我有一个基本上返回 mysql 查询结果的方法。

public function getStuff() {
$this->sort = "myColumn ASC";
$query = ... ORDER BY $this->sort;
return $data;
}

我想重用该结果,只是使用不同的排序顺序,而且似乎我应该能够通过调用原始方法以另一种方法获取该数据。像这样:

public function getMoreStuff() {
$this->sort = "anotherColumn DESC";
$this->getStuff();
}

但是,当“getStuff()”按预期返回数据时,“getMoreStuff()”不返回任何内容。我确信没有必要将整个查询复制到我的第二种方法中,但我不知道如何包含它。任何指导将不胜感激。谢谢!

【问题讨论】:

    标签: php mysql methods


    【解决方案1】:

    几个问题:

    1. 当 getMoreStuff() 调用时 getStuff(), $this->sort from getMoreStuff() 被覆盖 按 getStuff() 的排序顺序。 你可以给 getStuff() 一个默认值 使用getStuff($sort = "myColumn ASC") 进行排序,然后在需要时向 getStuff() 提供不同的排序顺序。

    2. getStuff() 将数据返回给 getMoreStuff(),然后它不会返回刚刚获得的数据。您需要使用return $this->getStuff();(或return $this->getStuff("anotherColumn DESC");

    【讨论】:

    • 打字速度慢——很抱歉复制了你的部分答案,chelmertz。
    【解决方案2】:

    一种方法:

    public function getStuff($sort = 'myColumn ASC') {
        $query = "... ORDER BY $sort";
    }
    

    使用变量$sort-values 从类外部调用它,或者使用定义的方法名称(如快捷方式)从类内部调用它。

    【讨论】:

    • 谢谢!这绝对适用于使用不同的 $sort 值,但你知道为什么一个查询不会在单独调用时返回一个值,但在作为另一个方法的一部分调用时不会返回一个值吗?我不明白为什么 $this->getStuff() 在我的第二种方法中调用时不起作用。
    猜你喜欢
    • 1970-01-01
    • 2021-01-14
    • 2016-05-25
    • 2019-05-18
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多