# Requests

# Naming

To avoid naming collisions you should always suffix requests with Request.

Bad: Login or UpdatePost

Good: LoginRequest or UpdatePostRequest

# Use CRUD words

Request object used for CRUD actions should always be prefixed with CRUD name. For example, StorePostRequest, UpdateUserRequest

# Use resource names

When request object is used for a resource name of the request object should always include resource's name. Pattern should be like: {CRUD word}{Resource}Request. For example, for storing Event resource with request object, name for request object should be: StoreEventRequest.

# Rules

Rules should always use array syntax.

public function rules(): array
{
    return [
        // Bad
        'name' => 'required|string|max:255',
        
        // Good
        'name' => ['required', 'string', 'max:255'],
    ];
}

# Use snake_case for parameters

Request parameters usually correspond to database table columns. To make them easily mappable with columns request parameters should always use snake_case.

Bad: firstName or additionalEmail

Good: first_name or additional_email

# Use input()

Avoid using magic properties to access request parameters from request object. Use input().

// Bad
$request->first_name;

// Good
$request->input('first_name');