| Server IP : 65.108.144.40 / Your IP : 216.73.217.165 Web Server : Apache/2.4.52 (Ubuntu) System : Linux ubuntu-8gb-hel1-1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 User : dev ( 1000) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/project-slim/app/Examples/ |
Upload File : |
<?php
/**
* Example demonstrating how to use the centralized message system
* in your project-slim application
*/
namespace App\Examples;
use App\Messages\MessageConstants;
use App\Messages\MessageHelper;
class MessageUsageExample
{
/**
* Example of using predefined constants
*/
public function useConstants()
{
// Using auth constants
$loginSuccess = MessageConstants::AUTH_LOGIN_SUCCESSFUL;
$invalidCredentials = MessageConstants::AUTH_INVALID_CREDENTIALS;
// Using validation constants
$userNotFound = MessageConstants::USER_NOT_FOUND;
$emailExists = MessageConstants::EMAIL_ALREADY_REGISTERED;
}
/**
* Example of using helper methods for dynamic messages
*/
public function useHelpers()
{
// Generate required field messages
$emailRequired = MessageHelper::required('email');
$passwordRequired = MessageHelper::required('password');
// Generate validation messages
$invalidEmail = MessageHelper::invalid('email format');
$userNotFound = MessageHelper::notFound('user');
$tokenExpired = MessageHelper::expired('verification token');
// Generate success messages
$userCreated = MessageHelper::created('user');
$profileUpdated = MessageHelper::updated('profile');
}
/**
* Example of generating validation errors for a form
*/
public function getLoginValidationErrors(array $data): array
{
$errors = [];
if (empty($data['email'])) {
$errors[MessageConstants::FIELD_EMAIL] = MessageHelper::required(MessageConstants::FIELD_EMAIL);
}
if (empty($data['password'])) {
$errors[MessageConstants::FIELD_PASSWORD] = MessageHelper::required(MessageConstants::FIELD_PASSWORD);
}
return $errors;
}
/**
* Example of using the helper method for multiple required fields
*/
public function getRequiredFieldsErrors(): array
{
$requiredFields = [
MessageConstants::FIELD_EMAIL,
MessageConstants::FIELD_PASSWORD,
'first_name',
'last_name'
];
return MessageHelper::getRequiredFieldErrors($requiredFields);
}
/**
* Example of using auth validation errors
*/
public function getAuthErrors(): array
{
$authErrors = MessageHelper::getAuthValidationErrors();
// Returns:
// [
// 'email' => 'Email is required',
// 'password' => 'Password is required',
// 'current_password' => 'Current password is required',
// 'new_password' => 'New password is required',
// 'token' => 'Token is required',
// 'refresh_token' => 'Refresh token is required'
// ]
return $authErrors;
}
/**
* Example of using specific validation error types
*/
public function getSpecificValidationError(): array
{
return [
'required' => MessageHelper::getValidationError('email', 'required'),
'invalid' => MessageHelper::getValidationError('email', 'invalid'),
'already_exists' => MessageHelper::getValidationError('email', 'already_exists'),
'not_found' => MessageHelper::getValidationError('user', 'not_found'),
'expired' => MessageHelper::getValidationError('token', 'expired'),
];
}
}
/**
* Usage in Controllers (Before vs After)
*/
// BEFORE (with hardcoded messages):
/*
return $this->validationErrorResponse($response, [
'email' => 'Email is required',
'password' => 'Password is required'
]);
return $this->unauthorizedResponse($response, 'Invalid credentials');
return $this->successResponse($response, $result, 'Login successful');
*/
// AFTER (with centralized messages):
/*
return $this->validationErrorResponse($response, [
MessageConstants::FIELD_EMAIL => MessageHelper::required(MessageConstants::FIELD_EMAIL),
MessageConstants::FIELD_PASSWORD => MessageHelper::required(MessageConstants::FIELD_PASSWORD)
]);
return $this->unauthorizedResponse($response, MessageConstants::AUTH_INVALID_CREDENTIALS);
return $this->successResponse($response, $result, MessageConstants::AUTH_LOGIN_SUCCESSFUL);
*/
/**
* Benefits of this approach:
*
* 1. Consistency: All messages are consistent across the application
* 2. Maintainability: Easy to update messages in one place
* 3. Reusability: Messages can be reused across different controllers
* 4. Internationalization ready: Easy to add multi-language support
* 5. Type safety: Constants prevent typos
* 6. Flexibility: Helper methods allow dynamic message generation
*/