Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 类中的重用方法_Php_Mysql_Methods - Fatal编程技术网

Php 类中的重用方法

Php 类中的重用方法,php,mysql,methods,Php,Mysql,Methods,我有一个基本上返回mysql查询结果的方法 public function getStuff() { $this->sort = "myColumn ASC"; $query = ... ORDER BY $this->sort; return $data; } 我想重用这个结果,只是使用不同的排序顺序,而且似乎我应该能够在另一个方法中获取数据,只需调用原始方法。像这样: public function getMoreStuff() { $this->sort = "anot

我有一个基本上返回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()”不返回任何内容。我确信没有必要将整个查询复制到我的第二个方法中,但是我不知道如何包含它。任何指导都将不胜感激。谢谢

一种方法:

public function getStuff($sort = 'myColumn ASC') {
    $query = "... ORDER BY $sort";
}
使用变量
$sort
-值从类外部调用它,或使用已定义的方法名称(如快捷方式)从类内部调用它。

两个问题:

  • 当getMoreTuff()调用 getStuff(),$this->sort from GetMoreTuff()正在被覆盖 按照getStuff()中的排序顺序。 可以为getStuff()设置默认值 使用
    getStuff($sort)进行排序=
    “myColumn ASC”)
    ,然后在需要时向getStuff()提供不同的排序顺序

  • getStuff()将数据返回给GetMoreSuff(),然后GetMoreSuff()将不返回刚获取的数据。您需要使用
    return$this->getStuff()
    (或
    返回$this->getStuff(“另一列描述”);


  • 谢谢!这当然适用于使用不同的$sort值,但是您知道为什么一个查询不会在单独调用同一个方法时返回值,而在作为另一个方法的一部分调用时不会返回值吗?我不明白为什么$this->getStuff()作为我第二种方法的一部分调用时不起作用。慢速打字机-很抱歉复制了你的部分答案,chelmertz。