Команда make:class
Команда make:class создаёт новый PHP-класс в указанном пространстве имён. Эта команда полезна, когда вам нужно создать класс, который не относится к стандартным типам (модели, контроллеры, миграции и т.д.). Команда принимает имя класса в качестве аргумента и опционально позволяет указать пространство имён через опцию --namespace. По умолчанию класс создаётся в директории app/Classes.
Синтаксис
php artisan make:class ClassName [--namespace=Namespace]
Пример
Создадим простой класс для работы с пользовательскими данными:
<?php
namespace App\Classes;
class UserData
{
public function getUserInfo($userId)
{
return [
'id' => $userId,
'name' => 'User ' . $userId,
'email' => 'user' . $userId . '@example.com'
];
}
public function formatUserData($data)
{
return 'User: ' . $data['name'] . ' (' . $data['email'] . ')';
}
}
?>
Результат выполнения команды:
"INFO Class created successfully."
Пример
Создадим класс в кастомном пространстве имён с помощью опции --namespace:
php artisan make:class PaymentProcessor --namespace=App\Services
<?php
namespace App\Services;
class PaymentProcessor
{
private $paymentMethods = ['card', 'paypal', 'crypto'];
public function processPayment($amount, $method)
{
if (!in_array($method, $this->paymentMethods)) {
return ['status' => 'error', 'message' => 'Invalid payment method'];
}
return [
'status' => 'success',
'amount' => $amount,
'method' => $method,
'transaction_id' => 'TX_' . uniqid()
];
}
public function getAvailableMethods()
{
return $this->paymentMethods;
}
}
?>
Результат выполнения команды:
"INFO Class created successfully."
Пример
Использование созданного класса в контроллере:
<?php
namespace App\Http\Controllers;
use App\Classes\UserData;
class UserController extends Controller
{
public function show($id)
{
$userData = new UserData();
$info = $userData->getUserInfo($id);
$formatted = $userData->formatUserData($info);
return $formatted;
}
}
?>
Результат выполнения кода:
"User: User 5 (user5@example.com)"
Пример
Создадим абстрактный класс для работы с данными:
<?php
namespace App\Classes;
abstract class DataHandler
{
protected $data = [];
abstract public function processData($input);
public function setData($data)
{
$this->data = $data;
return $this;
}
public function getData()
{
return $this->data;
}
protected function validateData($input)
{
return is_array($input) && !empty($input);
}
}
?>
Результат выполнения команды:
"INFO Class created successfully."
Смотрите также
-
команда
make:controller,
которая создаёт новый контроллер -
команда
make:model,
которая создаёт новую модель Eloquent -
команда
make:command,
которая создаёт новую консольную команду -
команда
make:job,
которая создаёт новый класс задачи для очереди