2017-05-25 37 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'方法的数据库字段的类? –

相关问题