2017-05-25 57 views
-1

我正在PHP中開發Telegram Bot。在我的所有項目中,我需要檢查用戶註冊狀態,如果未註冊,請存儲用戶信息。對於每個項目,我一次又一次地寫下這一步。PHP - 如何編寫可在其他項目中使用的用戶類?

有沒有什麼方法可以編寫一個在其他項目中可用(稍微改變一點)的用戶類並避免這種重複?

這是我的代碼。

// File: index.php 

$user = User::isRegistered($this->telegram->UserID()); 
if ($user === false) { 
    $this->user = User::register($this->telegram); 
} else 
    $this->user = $user; 

這我的User類

// File: User.php 

class User 
{ 
    public static function isRegistered($telegram_id) 
    { 
     $user = SlmUsers::find()->where(['telegram_id' => $telegram_id])->one(); 
     if ($user) 
      return $user; 
     return FALSE; 
    } 

    public static function register(\Telegram $telegram) 
    { 
     $nickname = $telegram->FirstName() . ' ' . $telegram->LastName(); 
     $nickname = mb_substr($nickname,0,128); 

     $user = new SlmUsers(); 
     $user->telegram_id = $telegram->UserID(); 
     $user->nickname = $nickname; 
     $user->telegram_username = $telegram->Username(); 
     $user->message_id = 0; 
     $user->updated_at = date('U'); 
     $user->last_request = 'new'; 
     $user->save(); 

     return $user; 
    } 
} 

但申請表格的用戶在每個項目不同,因此在其他項目中儲存新的用戶我應該改變的User::register所有領域。我該如何避免這種情況?我想寫一個類做這個工作原點類(User.php)的最低變化。

+0

向我們展示,您正在重複寫什麼? –

+0

已更新,已添加示例代碼。 –

回答

0

創建一個類文件並定義您將在此類文件中重複使用的函數。 將此文件導入到您要使用此功能的文件中,並使用此類文件的對象調用該功能

+0

這個怎麼樣? '每個項目提交的用戶表是不同的,所以爲了在其他項目中存儲新用戶,我應該改變用戶::寄存器的所有字段' –

+0

是的,你可以這樣做.. bt確保將文件導入到任何你要使用該功能的地方 – Satish51

+0

我正在尋找方式不會編輯原始類。有沒有辦法編寫一個不需要在新項目中編輯'register'方法的數據庫字段的類? –

相關問題