首頁 >後端開發 >php教程 >PHP方法位置

PHP方法位置

WBOY
WBOY原創
2016-08-18 09:15:461149瀏覽

我們在使用PHP的時候遇到一個問題
比如我現在有三張表
用戶表: User
商品表: Goods
代金券: Ticket
用戶地址: Address
由此就對應了三個對象
User, Goods, Ticket, Address
我現在有幾個功能:取得用戶的代金券, 取得用戶的可用代金券, 取得用戶的地址列表, 取得用戶所購買的商品
我現在是這麼做的

<code class="php">class User extends Model{
    public function oder()
    {
        return OrderRepository::getByUserId($this->id);
    }
    public function successOrder()
    {
        return OrderRepository::getSuccessByUserId($this->id);
    }
    public function cancelOrder()
    {
        return OrderRepository::getCancelByUserId($this->id);
    }
    public function address()
    {
        return AddressRepository::getByUserId($this->id);
    }
    ...
}</code>

為什麼這樣做呢, 我覺得和用戶緊密相關的操作放到用戶對像中比較合理! 單這個感覺冗餘的挺多的, 大家一般都是怎麼整理的呢!感覺也有可能會造成User類過大!
大家通常都是怎麼處理的呢?

回覆內容:

我們在使用PHP的時候遇到一個問題
比如我現在有三張表
用戶表: User
商品表: Goods
代金券: Ticket
用戶地址: Address
由此就對應了三個對象
User, Goods, Ticket, Address
我現在有幾個功能:取得用戶的代金券, 取得用戶的可用代金券, 取得用戶的地址列表, 取得用戶所購買的商品
我現在是這麼做的

<code class="php">class User extends Model{
    public function oder()
    {
        return OrderRepository::getByUserId($this->id);
    }
    public function successOrder()
    {
        return OrderRepository::getSuccessByUserId($this->id);
    }
    public function cancelOrder()
    {
        return OrderRepository::getCancelByUserId($this->id);
    }
    public function address()
    {
        return AddressRepository::getByUserId($this->id);
    }
    ...
}</code>

為什麼這樣做呢, 我覺得和用戶緊密相關的操作放到用戶對像中比較合理! 單這個感覺冗餘的挺多的, 大家一般都是怎麼整理的呢!感覺也有可能會造成User類過大!
大家通常都是怎麼處理的呢?

model分類:
user model 只放使用者相關的
order model 只放訂單相關的

注意業務要拆分,解耦合

也可以拆分為Logic邏輯層、model資料層、service服務層這樣的

各個表獲取數據的方法寫在各自的Model類別裡,要從多個數據表中取數據的話,在控制器裡分別實例化表對應的Model,並分別調用各自的方法獲取數據,在Controller裡將數據整合。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn