app/ # ΠΡΠ½ΠΎΠ²Π½Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
βββ Console/ # ΠΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
β βββ Mattermost/ # ΠΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost
β βββ SyncChannelsCommand.php # ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ² (ΡΠ°ΡΠΎΠ²)
β βββ SyncCommandCommand.php # ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
β βββ SyncCommandsCommand.php # ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄
β βββ SyncTeamsCommand.php # ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²
β βββ SyncUsersCommand.php # ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Mattermost
βββ Contracts/ # ΠΠΎΠ½ΡΡΠ°ΠΊΡΡ (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ)
β βββ Mattermost/ # ΠΠΎΠ½ΡΡΠ°ΠΊΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost
β βββ ActionContract.php # ΠΠΎΠ½ΡΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost Action Hook
β βββ DialogServiceContract.php # ΠΠΎΠ½ΡΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost Dialog Hook
β βββ CommandContract.php # ΠΠΎΠ½ΡΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Mattermost
β βββ CommandServiceContract.php # ΠΠΎΠ½ΡΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ (CRUD) Mattermost
β βββ PostServiceContract.php # ΠΠΎΠ½ΡΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΡΠ°ΠΌΠΈ (ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ) Mattermost
β βββ TeamServiceContract.php # ΠΠΎΠ½ΡΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ Mattermost
β βββ UserServiceContract.php # ΠΠΎΠ½ΡΡΠ°ΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Mattermost
βββ DTO/ # Data Transfer Objects (ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
)
β βββ Jenkins/ # DTO Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Jenkins Webhook
βββ Enums/ # ΠΠ»Π°ΡΡΡ-ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ
β βββ Jenkins/ # ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Jenkins Webhook
βββ Exceptions/ # ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
β βββ Mattermost/ # ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost
β βββ ServiceException.php # ΠΠ°Π·ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost
βββ Filament/ # Π Π΅ΡΡΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ Filament
βββ Handlers/ # ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ
β βββ Jenkins/ # ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Jenkins Webhook
β βββ Mattermost/ # ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost
β βββ SyncChannelsHandler.php # ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ² (ΡΠ°ΡΠΎΠ²)
β βββ SyncCommandHandler.php # ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
β βββ SyncCommandsHandler.php # ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄
β βββ SyncDataHandler.php # ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΅Ρ
ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ Mattermost
β βββ SyncTeamsHandler.php # ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² Mattermost
β βββ SyncUsersHandler.php # ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Mattermost
βββ Http/ # HTTP-ΡΠ»ΠΎΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
β βββ Controllers/ # ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ
β β βββ Commands/ # ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ
β β β βββ Mattermost/ # ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π΄Π»Ρ Mattermost
β β β βββ CommandController.php # ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Mattermost
β β βββ Webhook/ # ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Webhook
β β β βββ Jenkins/ # ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Jenkins Webhook
β β β βββ Mattermost/ # ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost Webhook
β β β βββ ActionController.php # ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost Action Hook
βββ Livewire/ # ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Livewire
βββ Models/ # ΠΠΎΠ΄Π΅Π»ΠΈ Eloquent
β βββ Mattermost/ # ΠΠΎΠ΄Π΅Π»ΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost
β βββ Channel.php # ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ (ΡΠ°ΡΠ°ΠΌΠΈ)
β βββ ChannelProject.php # ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ² Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ
β βββ Command.php # ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ
β βββ ProjectUser.php # ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ
β βββ Team.php # ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ
β βββ User.php # ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ
βββ Policies/ # ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈ (Π΄ΠΎΡΡΡΠΏ) Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ Filament
βββ Providers/ # Π‘Π΅ΡΠ²ΠΈΡ-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ
β βββ Mattermost/ # ΠΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ Π΄Π»Ρ Mattermost
β βββ ServiceProvider.php # ΠΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ Mattermost
βββ Services/ # Π‘Π΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΡΠ»ΠΎΠΉ
β βββ Mattermost/ # Π‘Π΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost
β βββ ChannelService.php # Π‘Π΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ (ΡΠ°ΡΠ°ΠΌΠΈ) Mattermost
β βββ CommandService.php # Π‘Π΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Mattermost
β βββ DialogService.php # Π‘Π΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΠΈΠ°Π»ΠΎΠ³Π°ΠΌΠΈ (ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠΌΠΈ ΠΎΠΊΠ½Π°ΠΌΠΈ) Mattermost
β βββ PostService.php # Π‘Π΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΡΡΠ°ΠΌΠΈ (ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ) Mattermost
β βββ TeamService.php # Π‘Π΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ Mattermost
β βββ UserService.php # Π‘Π΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Mattermost
βββ Traits/ # Π’ΡΠ΅ΠΉΡΡ (ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°)
β βββ Mattermost/ # Π’ΡΠ΅ΠΉΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost
β β βββ CallEndpointMethod.php # Π’ΡΠ΅ΠΉΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠΎΠ² Mattermost
β βββ ConfigTrait.php # Π’ΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ
β βββ LocalizationTrait.php # Π’ΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ
β βββ ResponseTrait.php # Π’ΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ HTTP-ΠΎΡΠ²Π΅ΡΠ°ΠΌΠΈ
- Mattermost/Channel.php - ΡΠ°Π±Π»ΠΈΡΠ°:
mattermost_channels, ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ (ΡΠ°ΡΠ°ΠΌΠΈ) - Mattermost/ChannelProject.php - ΡΠ°Π±Π»ΠΈΡΠ°:
mattermost_channels_projects, ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ² Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ - Mattermost/Command.php - ΡΠ°Π±Π»ΠΈΡΠ°:
mattermost_commands, ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ - Mattermost/ProjectUser.php - ΡΠ°Π±Π»ΠΈΡΠ°:
mattermost_projects_users, ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ - Mattermost/Team.php - ΡΠ°Π±Π»ΠΈΡΠ°:
mattermost_teams, ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ - Mattermost/User.php - ΡΠ°Π±Π»ΠΈΡΠ°:
mattermost_users, ΠΠΎΠ΄Π΅Π»Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ: ΠΠΎΠ³ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, Π ΠΎΠ»ΠΈ
- Mattermost: Π§Π°ΡΡ (Channel), ΠΠΎΠΌΠ°Π½Π΄Ρ (Command), ΠΡΠΎΠ΅ΠΊΡΡ (ChannelProject), ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° (Team), ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ (User)
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ config/mattermost.php
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Mattermost Server Name
|--------------------------------------------------------------------------
|
| Here you cam specify which server you wish to use as your
| default Mattermost server.
|
*/
'default' => env('MATTERMOST_SERVER', 'login'),
/*
|--------------------------------------------------------------------------
| Mattermost Servers
|--------------------------------------------------------------------------
|
| Here you can configure a list of different Mattermost servers
| to use within your application.
|
| You can authenticate in two ways: passing a Bearer Token or
| passing Username and Password. The allowed values for the "auth"
| option are: "default", "bearer".
|
*/
'servers' => [
// ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Mattermost, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
'login' => [
'auth' => env('MATTERMOST_AUTH', 'login'),
'host' => env('MATTERMOST_HOST', 'localhost'),
'login' => env('MATTERMOST_LOGIN', 'login'),
'password' => env('MATTERMOST_PASSWORD', 'password'),
'api' => env('MATTERMOST_API', '/api/v4'),
'timeout' => env('MATTERMOST_TIMEOUT', 5),
],
],
];ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΡΠ°ΠΈΜΠ²Π΅Ρ MattermostDriver
composer require rocketfirm/mattermost-driverphp artisan vendor:publishΠ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°Ρ
Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Mattermost. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² Services/Mattermost. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π² Providers/Mattermost/ServiceProvider.php
ΠΠ½ΠΎΠΏΠΊΠΈ Π² ΠΏΠΎΡΡΠ°Ρ
(ActionContract.php)
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΏΠΎΡΡΠ°Ρ
ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±Ρ
ΡΠΊ ActionController.php, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ActionContract.php
/** @var \App\Http\Requests\Mattermost\ActionHookRequest $request */
$request = app()->make(\App\Http\Requests\Mattermost\ActionHookRequest::class);
/** @var \App\Contracts\Mattermost\ActionContract $contract */
$contract = app()->make(\App\Contracts\Mattermost\ActionContract::class);
$contract->do($request->getDto());ΠΡΠΊΡΡΡΠΈΠ΅ Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠ° Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π² Mattermost (ChannelServiceContract.php)
ΠΠ΅ΡΠΎΠ΄ direct Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ/ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ°Ρ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ (senderId - ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ, receiverId - ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ)
$senderId = 'senderId'; // ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Mattermost
$receiverId = 'receiverId'; // ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Mattermost
/** @var \App\Contracts\Mattermost\ChannelServiceContract $service */
$service = app()->make(\App\Contracts\Mattermost\ChannelServiceContract::class);
$channel = $service->direct($senderId, $receiverId);
$channel->id; // ID ΡΠ°ΡΠ°ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (CommandServiceContract.php)
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΡΠ°ΡΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±Ρ
ΡΠΊ CommandController.php, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ CommandContract.php
/** @var \App\Http\Requests\Mattermost\CommandRequest $request */
$request = app()->make(\App\Http\Requests\Mattermost\CommandRequest::class);
/** @var \App\Contracts\Mattermost\CommandContract $contract */
$contract = app()->make(\App\Contracts\Mattermost\CommandContract::class);
$contract->call($request->getDto());Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ (CommandServiceContract.php)
use Rocketfirm\MattermostDriver\Requests\Command\CreateRequest;
use Rocketfirm\MattermostDriver\Enums\Command\Method;
use Rocketfirm\MattermostDriver\Requests\Command\IndexRequest;
use Rocketfirm\MattermostDriver\Requests\Command\UpdateRequest;
/** @var \App\Contracts\Mattermost\CommandServiceContract $service */
$service = app()->make(\App\Contracts\Mattermost\CommandServiceContract::class);
// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
$command = $service->createCommand(new CreateRequest(
teamId: 'teamId', // ID ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π² Mattermost
method: Method::POST, // HTTP ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±Ρ
ΡΠΊ
trigger: 'command', // Π’ΡΠΈΠ³Π³Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
url: 'http://localhost', // URL Π²Π΅Π±Ρ
ΡΠΊΠ° Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ
));
// Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
$service->updateCommand(new UpdateRequest(
id: $command->id, // ID ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Mattermost
token: $command->token, // Π’ΠΎΠΊΠ΅Π½ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
createAt: $command->createAt, // ΠΠ°ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
updateAt: $command->updateAt, // ΠΠ°ΡΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
deleteAt: $command->deleteAt, // ΠΠ°ΡΠ° ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
creatorId: $command->creatorId, // ID ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
teamId: $command->teamId, // ID ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π² Mattermost
trigger: $command->trigger, // Π’ΡΠΈΠ³Π³Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
method: $command->method, // HTTP ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±Ρ
ΡΠΊ
username: $command->username, // ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Mattermost
iconUrl: $command->iconUrl, // URL ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Mattermost
autoComplete: $command->autoComplete, // ΠΠ²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
autoCompleteDesc: $command->autoCompleteDesc, // ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
autoCompleteHint: $command->autoCompleteHint, // ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° Π°Π²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
displayName: $command->displayName, // ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ΅ ΠΈΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
description: $command->description, // ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
url: $command->url, // URL Π²Π΅Π±Ρ
ΡΠΊΠ° Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ
));
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
$commands = $service->getCommands(new IndexRequest(
teamId: 'teamId', // ID ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π² Mattermost
customOnly: false, // ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
));
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
$command = $service->showCommand($command->id);
// Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
$service->deleteCommand($command->id);ΠΡΠ·ΠΎΠ² Π΄ΠΈΠ°Π»ΠΎΠ³Π° (ΠΌΠΎΠ΄Π°Π»ΠΊΠΈ) (DialogServiceContract.php)
ΠΡΠ·ΠΎΠ² Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±Ρ
ΡΠΊ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ DialogServiceContract.php
/** @var \App\Http\Requests\Mattermost\DialogRequest $request */
$request = app()->make(\App\Http\Requests\Mattermost\DialogRequest::class);
/** @var \App\Contracts\Mattermost\DialogServiceContract $contract */
$contract = app()->make(\App\Contracts\Mattermost\DialogServiceContract::class);
$contract->open($request->getDto());Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°ΠΌΠΈ (ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ) (PostServiceContract.php)
use Rocketfirm\MattermostDriver\Collections\AttachmentCollection;
use Rocketfirm\MattermostDriver\Entities\Props;
use Rocketfirm\MattermostDriver\Requests\Post\CreateRequest;
use Rocketfirm\MattermostDriver\Requests\Post\UpdateRequest;
/** @var \App\Contracts\Mattermost\PostServiceContract $contract */
$contract = app()->make(\App\Contracts\Mattermost\PostServiceContract::class);
// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°
$post = $contract->createPost(new CreateRequest(
setOnline: true, // ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ°ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΠ½Π»Π°ΠΈΜΠ½
channelId: 'channelId', // ID ΠΊΠ°Π½Π°Π»Π°
message: 'Text message', // Π’Π΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
rootId: 'rootId', // ID ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
fileIds: ['fileId1', 'fileId2'], // ID ΡΠ°ΠΈΜΠ»ΠΎΠ²
props: new Props(
props: [ // ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°
'key1' => 'value1',
'key2' => 'value2',
],
attachmentCollection: AttachmentCollection::make(), // ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ)
)
));
// Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°
$contract->updatePost(new UpdateRequest(
id: $post->id, // ID ΠΏΠΎΡΡΠ° Π² Mattermost
isPinned: true, // ΠΠ°ΠΊΡΠ΅ΠΏΠΈΡΡ ΠΏΠΎΡΡ
message: 'Updated message', // Π’Π΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
hasReactions: false, // Π£Π΄Π°Π»ΠΈΡΡ ΡΠ΅Π°ΠΊΡΠΈΠΈ
props: new Props(
props: [ // ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°
'key1' => 'value1',
'key2' => 'value2',
],
attachmentCollection: AttachmentCollection::make(), // ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ (ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ)
)
));Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ (TeamServiceContract.php)
use Rocketfirm\MattermostDriver\Requests\Team\ChannelsRequest;
use Rocketfirm\MattermostDriver\Requests\Team\IndexRequest;
/** @var \App\Contracts\Mattermost\TeamServiceContract $service */
$service = app()->make(\App\Contracts\Mattermost\TeamServiceContract::class);
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²
$teams = $service->getTeams(new IndexRequest(
page: 0, // ΠΠΎΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ
perPage: 60, // ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
includeTotalCount: true, // ΠΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
excludePolicyConstrained: true, // ΠΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΎΠΉ
));
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
ΠΊΠ°Π½Π°Π»ΠΎΠ² (ΡΠ°ΡΠΎΠ²)
$publicChannels = $service->getPublicChannels(new ChannelsRequest(
teamId: 'teamId', // ID ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
page: 0, // ΠΠΎΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ
perPage: 60, // ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
));
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ
ΠΊΠ°Π½Π°Π»ΠΎΠ² (ΡΠ°ΡΠΎΠ²)
$privateChannels = $service->getPrivateChannels(new ChannelsRequest(
teamId: 'teamId', // ID ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
page: 0, // ΠΠΎΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ
perPage: 60, // ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
));Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ (UserServiceContract.php)
use Rocketfirm\MattermostDriver\Requests\User\IndexRequest;
use Rocketfirm\MattermostDriver\Enums\Post\Sort;
/** @var \App\Contracts\Mattermost\UserServiceContract $service */
$service = app()->make(\App\Contracts\Mattermost\UserServiceContract::class);
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
$users = $service->index(new IndexRequest(
page: 0, // ΠΠΎΠΌΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ
perPage: 60, // ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
inTeam: 'teamId', // ID ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
notInTeam: 'teamId', // ID ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
inChannel: 'channelId', // ID ΠΊΠ°Π½Π°Π»Π°
notInChannel: 'channelId', // ID ΠΊΠ°Π½Π°Π»Π°
inGroup: 'groupId', // ID Π³ΡΡΠΏΠΏΡ
groupConstrained: true, // ΠΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ
Π³ΡΡΠΏΠΏΠΎΠΉ
withoutTeam: false, // ΠΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π±Π΅Π· ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
active: true, // ΠΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ
inactive: true, // ΠΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ
role: 'role', // Π ΠΎΠ»Ρ
sort: Sort::CREATE_AT, // Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
roles: ['role1', 'role2'], // Π ΠΎΠ»ΠΈ
channelRoles: ['channelRole1', 'channelRole2'], // Π ΠΎΠ»ΠΈ ΠΊΠ°Π½Π°Π»Π°
teamRoles: ['teamRole1', 'teamRole2'], // Π ΠΎΠ»ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
));
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅
$allUsers = $service->all(
inTeamId: 'teamId', // ID ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
notInTeamId: 'teamId', // ID ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°
);- PHP 8.2
- Laravel 11.9
- PostgreSQL Latest
- Nginx Latest Alpine
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Laravel Pint ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² pint.json
- ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°:
vendor/bin/pint --test --dirty --config pint.json- ΠΠ»Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°:
vendor/bin/pint --config pint.jsonΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° PHPStan ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² phpstan.neon
- ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°:
vendor/bin/phpstan analyse -c phpstan.neonΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° L5-Swagger
ΠΠΎΠ½ΡΠΈΠ³ΠΈ Π² ΡΠ°ΠΉΠ»Π΅ l5-swagger.php
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Π² Controller
UI Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ ΠΏΡΡΠΈ http://blog.localhost/api/documentation
JSON ΡΠ°ΠΉΠ» Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ ΠΏΡΡΠΈ http://blog.localhost/docs/api-docs.json
Π‘Π°ΠΌΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ storage/api-docs/api-docs.json
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°:
php artisan l5-swagger:generateΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° PHPUnit
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅ phpunit.xml
Unit ΡΠ΅ΡΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Unit Feature ΡΠ΅ΡΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Feature
Π’Π°ΠΊ ΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΡΠ΅ΡΡΠΎΠ² ΠΊ Π·Π°ΠΏΡΡΠΊΡ (Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠΏΠΈΡΠ°Π½Π° Π² ΡΡΠ΅ΠΉΡΠ΅ CreatesApplication).
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠ΅ΡΡΠΎΠ² Π² TestCase
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°:
vendor/bin/phpunit




