Я занимаюсь разработкой 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;
А это мой пользовательский класс
// 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).
создайте один файл класса и определите функцию, которую вы собираетесь использовать в этом файле класса.
Импортируйте этот файл в файл, где вы хотите использовать эту функцию, и вызовите эту функцию, используя объект этого файла класса
Других решений пока нет …