1.我定義了一個AR基類,裡面程式碼如下:
abstract class AR extends \PDO {
abstract public function from($tableName = '');
abstract public function where($condition = []);
abstract public function addWhere($condition = []);
abstract public function orderBy($orderBy = []);
abstract public function groupBy($groupBy = []);
abstract public function having($condition = []);
}
2.又寫了一個子類別DB,整合AR。
class db extends AR {
public function select($field = [])
{
// TODO: Implement select() method.
return $this;
}
public function from($tableName = '')
{
// TODO: Implement from() method.
return $this;
}
public function where($condition = [])
{
// TODO: Implement where() method.
return $this;
}
public function addWhere($condition = [])
{
// TODO: Implement andWhere() method.
return $this;
}
public function groupBy($groupBy = [])
{
// TODO: Implement groupBy() method.
return $this;
}
public function orderBy($orderBy = [])
{
// TODO: Implement orderBy() method.
return $this;
}
public function having($condition = [])
{
// TODO: Implement having() method.
return $this;
}
}
抽象方法的具體實作裡,都回到了本身。
3.現在我在控制器檔案裡實例化db類,發現能正常呼叫$this->db->select()->from()->where()->queryAll();
運作不報錯。 queryAll
裡可以進行操作。
phpstorm
裡面寫程式碼的時候,寫前面幾個方法,編輯器可以智慧提示,但是最後一個queryAll
就不提示了,如果把這個鏈,刪掉其中一個,就又可以提示了。感覺就像是最多只能提示到 第 4 個呼叫。 但是我用yii的時候,鍊式呼叫 7 次還是能提示的 。
phpStorm不能辨識queryAll方法回傳值,給不了提示。
添加註解後, phpstorm可以自動辨識
@order_c , 你說的方法都沒用,我試過。
無法貼圖,我在這裡給你發個圖吧
你看~