2017-05-25 6 views
-1

Je développe Telegram Bot en PHP. Dans Tous mes projets, j'ai besoin de vérifier le statut de l'utilisateur et, s'il n'est pas enregistré, de stocker les informations utilisateur. pour chaque projet, j'ai écrit cette étape encore et encore.PHP - Comment écrire une classe User utilisable dans d'autres projets?

Existe-t-il des moyens d'écrire une classe d'utilisateurs utilisable (avec un peu de changement) dans d'autres projets et d'éviter cette répétition?

Ceci est mon code.

// File: index.php 

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

Et cette ma classe 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; 
    } 
} 

, mais les utilisateurs tableau déposé sont différents dans chaque projet afin de stocker un nouvel utilisateur dans d'autres projets que je dois changer tous les champs de User::register. comment je peux éviter cela? je veux écrire une classe cela fonctionne avec le changement le plus bas dans la classe d'origine (User.php).

+0

Montrez-nous ce que vous écrivez à plusieurs reprises? –

+0

Mise à jour, exemples de codes ajoutés. –

Répondre

0

Créez un fichier de classe et définissez la fonction que vous allez utiliser à plusieurs reprises dans ce fichier de classe. Importez ce fichier dans le fichier où vous voulez utiliser cette fonction et appelez cette fonction en utilisant l'objet de ce fichier de classe

+0

qu'en est-il de cela? 'table d'utilisateurs classés sont différents dans chaque projet donc pour stocker un nouvel utilisateur dans d'autres projets je devrais changer tous les champs de User :: register' –

+0

Oui, vous pouvez le faire .. bt assurez-vous d'importer les fichiers partout où vous allez utiliser cette fonction – Satish51

+0

Je cherche moyen ne modifie pas la classe d'origine. est-il possible d'écrire une classe qui n'a pas besoin d'éditer les champs de base de données de la méthode 'register' dans les nouveaux projets? –