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

PHP方法位置

WBOY
發布: 2016-08-18 09:15:46
原創
1156 人瀏覽過

我們在使用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裡將數據整合。

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板