- 0. Documentation
1. Prologue
1. Release Notes
- 0. Release Notes
- 1. Versioning Scheme
- 1.1.1. Named Arguments
- 2. Support Policy
- 3. Laravel 11
- 3.2. PHP 8.2
2. Upgrade Guide
- 0. Upgrade Guide
- 1. High Impact Changes
- 2. Upgrading To 11.0 From 10.x
- 2.0.1. Estimated Upgrade Time: ?? Minutes
- 2.1. Updating Dependencies
- 2.1.1. PHP 8.2.0 Required
- 2.1.2. Composer Dependencies
3. Contribution Guide
- 0. Contribution Guide
- 1. Bug Reports
- 2. Support Questions
- 3. Core Development Discussion
- 4. Which Branch?
- 5. Compiled Assets
- 6. Security Vulnerabilities
- 7. Coding Style
- 7.1. PHPDoc
- 7.2. StyleCI
- 8. Code of Conduct
2. Getting Started
1. Installation
- 0. Installation
- 1. Meet Laravel
- 1.1. Why Laravel?
- 1.1.1. A Progressive Framework
- 1.1.2. A Scalable Framework
- 1.1.3. A Community Framework
- 2. Your First Laravel Project
- 3. Laravel & Docker
- 3.2. Getting Started On macOS
- 3.3. Getting Started On Windows
- 3.3.1. Developing Within WSL2
- 3.4. Getting Started On Linux
- 3.5. Choosing Your Sail Services
- 4. Initial Configuration
- 4.1. Environment Based Configuration
- 4.2. Databases & Migrations
- 5. Next Steps
- 5.1. Laravel The Full Stack Framework
- 5.2. Laravel The API Backend
2. Configuration
- 0. Configuration
- 1. Introduction
- 1.0.1. Application Overview
- 2. Environment Configuration
- 2.0.1. Environment File Security
- 2.0.2. Additional Environment Files
- 2.1. Environment Variable Types
- 2.2. Retrieving Environment Configuration
- 2.3. Determining The Current Environment
- 2.4. Encrypting Environment Files
- 2.4.1. Encryption
- 2.4.2. Decryption
- 3. Accessing Configuration Values
- 4. Configuration Caching
- 5. Debug Mode
- 6. Maintenance Mode
- 6.4.1. Bypassing Maintenance Mode
- 6.4.2. Pre-Rendering The Maintenance Mode View
- 6.4.3. Redirecting Maintenance Mode Requests
- 6.4.4. Disabling Maintenance Mode
- 6.4.5. Maintenance Mode & Queues
- 6.4.6. Alternatives To Maintenance Mode
3. Directory Structure
- 0. Directory Structure
- 1. Introduction
- 2. The Root Directory
- 2.1.1. The App Directory
- 2.1.2. The Bootstrap Directory
- 2.1.3. The Config Directory
- 2.1.4. The Database Directory
- 2.1.5. The Public Directory
- 2.1.6. The Resources Directory
- 2.1.7. The Routes Directory
- 2.1.8. The Storage Directory
- 2.1.9. The Tests Directory
- 2.1.10. The Vendor Directory
- 3. The App Directory
- 3.1.1. The Broadcasting Directory
- 3.1.2. The Console Directory
- 3.1.3. The Events Directory
- 3.1.4. The Exceptions Directory
- 3.1.5. The Http Directory
- 3.1.6. The Jobs Directory
- 3.1.7. The Listeners Directory
- 3.1.8. The Mail Directory
- 3.1.9. The Models Directory
- 3.1.10. The Notifications Directory
- 3.1.11. The Policies Directory
- 3.1.12. The Providers Directory
- 3.1.13. The Rules Directory
4. Frontend
- 0. Frontend
- 1. Introduction
- 2. Using PHP
- 2.1. PHP & Blade
- 2.1.1. Growing Expectations
- 2.2. Livewire
- 2.3. Starter Kits
- 3. Using Vue / React
- 3.1. Inertia
- 3.1.1. Server-Side Rendering
- 3.2. Starter Kits
- 4. Bundling Assets
5. Starter Kits
- 0. Starter Kits
- 1. Introduction
- 2. Laravel Breeze
- 2.1.1. Laravel Bootcamp
- 2.2. Installation
- 2.3. Breeze & Blade
- 2.3.1. Dark Mode
- 2.4. Breeze & React / Vue
- 2.4.1. Server-Side Rendering
- 2.5. Breeze & Next.js / API
- 2.5.1. Next.js Reference Implementation
- 3. Laravel Jetstream
6. Deployment
- 0. Deployment
- 1. Introduction
- 2. Server Requirements
- 3. Server Configuration
- 3.1. Nginx
- 4. Optimization
- 4.1. Autoloader Optimization
- 4.2. Optimizing Configuration Loading
- 4.3. Optimizing Route Loading
- 4.4. Optimizing View Loading
- 5. Debug Mode
- 6. Deploying With Forge / Vapor
- 6.0.1. Laravel Forge
- 6.0.2. Laravel Vapor
3. Architecture Concepts
1. Request Lifecycle
- 0. Request Lifecycle
- 1. Introduction
- 2. Lifecycle Overview
- 2.1. First Steps
- 2.2. HTTP / Console Kernels
- 2.3. Service Providers
- 2.4. Routing
- 2.5. Finishing Up
- 3. Focus On Service Providers
2. Service Container
- 0. Service Container
- 1. Introduction
- 1.1. Zero Configuration Resolution
- 1.2. When To Use The Container
- 2. Binding
- 2.1. Binding Basics
- 2.1.1. Simple Bindings
- 2.1.2. Binding A Singleton
- 2.1.3. Binding Scoped Singletons
- 2.1.4. Binding Instances
- 2.2. Binding Interfaces To Implementations
- 2.3. Contextual Binding
- 2.4. Binding Primitives
- 2.5. Binding Typed Variadics
- 2.5.1. Variadic Tag Dependencies
- 2.6. Tagging
- 2.7. Extending Bindings
- 3. Resolving
- 3.1. The `make` Method
- 3.2. Automatic Injection
- 4. Method Invocation & Injection
- 5. Container Events
- 6. PSR-11
3. Service Providers
- 0. Service Providers
- 1. Introduction
- 2. Writing Service Providers
- 2.1. The Register Method
- 2.1.1. The `bindings` And `singletons` Properties
- 2.2. The Boot Method
- 2.2.1. Boot Method Dependency Injection
- 3. Registering Providers
- 4. Deferred Providers
4. Facades
- 0. Facades
- 1. Introduction
- 1.1.1. Helper Functions
- 2. When To Use Facades
- 2.2. Facades Vs. Dependency Injection
- 2.3. Facades Vs. Helper Functions
- 3. How Facades Work
- 4. Real-Time Facades
- 5. Facade Class Reference
4. The Basics
1. Routing
- 0. Routing
- 1. Basic Routing
- 1.1.1. The Default Route Files
- 1.1.2. Available Router Methods
- 1.1.3. Dependency Injection
- 1.1.4. CSRF Protection
- 1.2. Redirect Routes
- 1.3. View Routes
- 1.4. The Route List
- 2. Route Parameters
- 2.1. Required Parameters
- 2.1.1. Parameters & Dependency Injection
- 2.2. Optional Parameters
- 2.3. Regular Expression Constraints
- 2.3.1. Global Constraints
- 2.3.2. Encoded Forward Slashes
- 3. Named Routes
- 3.3.1. Generating URLs To Named Routes
- 3.3.2. Inspecting The Current Route
- 4. Route Groups
- 4.4. Middleware
- 4.5. Controllers
- 4.6. Subdomain Routing
- 4.7. Route Prefixes
- 4.8. Route Name Prefixes
- 5. Route Model Binding
- 5.1. Implicit Binding
- 5.1.1. Soft Deleted Models
- 5.1.2. Customizing The Key
- 5.1.3. Custom Keys & Scoping
- 5.1.4. Customizing Missing Model Behavior
- 5.2. Implicit Enum Binding
- 5.3. Explicit Binding
- 5.3.1. Customizing The Resolution Logic
- 6. Fallback Routes
- 7. Rate Limiting
- 7.4. Defining Rate Limiters
- 7.4.1. Segmenting Rate Limits
- 7.4.2. Multiple Rate Limits
- 7.5. Attaching Rate Limiters To Routes
- 7.5.1. Throttling With Redis
- 8. Form Method Spoofing
- 9. Accessing The Current Route
- 10. Cross-Origin Resource Sharing (CORS)
- 11. Route Caching
2. Middleware
- 0. Middleware
- 1. Introduction
- 2. Defining Middleware
- 2.1.1. Middleware & Responses
- 3. Registering Middleware
- 3.2. Global Middleware
- 3.3. Assigning Middleware To Routes
- 3.3.1. Excluding Middleware
- 3.4. Middleware Groups
- 3.5. Sorting Middleware
- 4. Middleware Parameters
- 5. Terminable Middleware
3. CSRF Protection
- 0. CSRF Protection
- 1. Introduction
- 1.1.1. An Explanation Of The Vulnerability
- 2. Preventing CSRF Requests
- 2.2. CSRF Tokens & SPAs
- 2.3. Excluding URIs From CSRF Protection
- 3. X-CSRF-TOKEN
- 4. X-XSRF-TOKEN
4. Controllers
- 0. Controllers
- 1. Introduction
- 2. Writing Controllers
- 2.1. Basic Controllers
- 2.2. Single Action Controllers
- 3. Controller Middleware
- 4. Resource Controllers
- 4.0.1. Actions Handled By Resource Controller
- 4.0.2. Customizing Missing Model Behavior
- 4.0.3. Soft Deleted Models
- 4.0.4. Specifying The Resource Model
- 4.0.5. Generating Form Requests
- 4.1. Partial Resource Routes
- 4.1.1. API Resource Routes
- 4.2. Nested Resources
- 4.2.1. Scoping Nested Resources
- 4.2.2. Shallow Nesting
- 4.3. Naming Resource Routes
- 4.4. Naming Resource Route Parameters
- 4.5. Scoping Resource Routes
- 4.6. Localizing Resource URIs
- 4.7. Supplementing Resource Controllers
- 4.8. Singleton Resource Controllers
- 4.8.1. Creatable Singleton Resources
- 4.8.2. API Singleton Resources
- 5. Dependency Injection & Controllers
- 5.8.1. Constructor Injection
- 5.8.2. Method Injection
5. Requests
- 0. HTTP Requests
- 1. Introduction
- 2. Interacting With The Request
- 2.1. Accessing The Request
- 2.1.1. Dependency Injection & Route Parameters
- 2.2. Request Path, Host, & Method
- 2.2.1. Retrieving The Request Path
- 2.2.2. Inspecting The Request Path / Route
- 2.2.3. Retrieving The Request URL
- 2.2.4. Retrieving The Request Host
- 2.2.5. Retrieving The Request Method
- 2.3. Request Headers
- 2.4. Request IP Address
- 2.5. Content Negotiation
- 2.6. PSR-7 Requests
- 3. Input
- 3.1. Retrieving Input
- 3.1.1. Retrieving All Input Data
- 3.1.2. Retrieving An Input Value
- 3.1.3. Retrieving Input From The Query String
- 3.1.4. Retrieving JSON Input Values
- 3.1.5. Retrieving Stringable Input Values
- 3.1.6. Retrieving Boolean Input Values
- 3.1.7. Retrieving Date Input Values
- 3.1.8. Retrieving Enum Input Values
- 3.1.9. Retrieving Input Via Dynamic Properties
- 3.1.10. Retrieving A Portion Of The Input Data
- 3.2. Determining If Input Is Present
- 3.3. Merging Additional Input
- 3.4. Old Input
- 3.4.1. Flashing Input To The Session
- 3.4.2. Flashing Input Then Redirecting
- 3.4.3. Retrieving Old Input
- 3.5. Cookies
- 3.5.1. Retrieving Cookies From Requests
- 4. Input Trimming & Normalization
- 4.5.1. Disabling Input Normalization
- 5. Files
- 5.6. Retrieving Uploaded Files
- 5.6.1. Validating Successful Uploads
- 5.6.2. File Paths & Extensions
- 5.6.3. Other File Methods
- 5.7. Storing Uploaded Files
- 6. Configuring Trusted Proxies
- 6.0.1. Trusting All Proxies
- 7. Configuring Trusted Hosts
6. Responses
- 0. HTTP Responses
- 1. Creating Responses
- 1.1.1. Strings & Arrays
- 1.1.2. Response Objects
- 1.1.3. Eloquent Models & Collections
- 1.2. Attaching Headers To Responses
- 1.2.1. Cache Control Middleware
- 1.3. Attaching Cookies To Responses
- 1.3.1. Generating Cookie Instances
- 1.3.2. Expiring Cookies Early
- 1.4. Cookies & Encryption
- 2. Redirects
- 2.1. Redirecting To Named Routes
- 2.1.1. Populating Parameters Via Eloquent Models
- 2.2. Redirecting To Controller Actions
- 2.3. Redirecting To External Domains
- 2.4. Redirecting With Flashed Session Data
- 2.4.1. Redirecting With Input
- 3. Other Response Types
- 3.5. View Responses
- 3.6. JSON Responses
- 3.7. File Downloads
- 3.7.1. Streamed Downloads
- 3.8. File Responses
- 4. Response Macros
7. Views
- 0. Views
- 1. Introduction
- 1.1. Writing Views In React / Vue
- 2. Creating & Rendering Views
- 2.1. Nested View Directories
- 2.2. Creating The First Available View
- 2.3. Determining If A View Exists
- 3. Passing Data To Views
- 3.1. Sharing Data With All Views
- 4. View Composers
- 4.0.1. Attaching A Composer To Multiple Views
- 4.1. View Creators
- 5. Optimizing Views
8. Blade Templates
- 0. Blade Templates
- 1. Introduction
- 1.1. Supercharging Blade With Livewire
- 2. Displaying Data
- 2.1. HTML Entity Encoding
- 2.1.1. Displaying Unescaped Data
- 2.2. Blade & JavaScript Frameworks
- 2.2.1. Rendering JSON
- 2.2.2. The `@verbatim` Directive
- 3. Blade Directives
- 3.3. If Statements
- 3.3.1. Authentication Directives
- 3.3.2. Environment Directives
- 3.3.3. Section Directives
- 3.4. Switch Statements
- 3.5. Loops
- 3.6. The Loop Variable
- 3.7. Conditional Classes & Styles
- 3.8. Additional Attributes
- 3.9. Including Subviews
- 3.9.1. Rendering Views For Collections
- 3.10. The `@once` Directive
- 3.11. Raw PHP
- 3.12. Comments
- 4. Components
- 4.0.1. Manually Registering Package Components
- 4.1. Rendering Components
- 4.2. Passing Data To Components
- 4.2.1. Casing
- 4.2.2. Short Attribute Syntax
- 4.2.3. Escaping Attribute Rendering
- 4.2.4. Component Methods
- 4.2.5. Accessing Attributes & Slots Within Component Classes
- 4.2.6. Additional Dependencies
- 4.2.7. Hiding Attributes / Methods
- 4.3. Component Attributes
- 4.3.1. Default / Merged Attributes
- 4.3.2. Conditionally Merge Classes
- 4.3.3. Non-Class Attribute Merging
- 4.3.4. Retrieving & Filtering Attributes
- 4.4. Reserved Keywords
- 4.5. Slots
- 4.5.1. Scoped Slots
- 4.5.2. Slot Attributes
- 4.6. Inline Component Views
- 4.6.1. Generating Inline View Components
- 4.7. Dynamic Components
- 4.8. Manually Registering Components
- 4.8.1. Autoloading Package Components
- 5. Anonymous Components
- 5.9. Anonymous Index Components
- 5.10. Data Properties / Attributes
- 5.11. Accessing Parent Data
- 5.12. Anonymous Component Paths
- 6. Building Layouts
- 6.1. Layouts Using Components
- 6.1.1. Defining The Layout Component
- 6.1.2. Applying The Layout Component
- 6.2. Layouts Using Template Inheritance
- 6.2.1. Defining A Layout
- 6.2.2. Extending A Layout
- 7. Forms
- 7.3. CSRF Field
- 7.4. Method Field
- 7.5. Validation Errors
- 8. Stacks
- 9. Service Injection
- 10. Rendering Inline Blade Templates
- 11. Rendering Blade Fragments
- 12. Extending Blade
- 12.1. Custom Echo Handlers
- 12.2. Custom If Statements
9. Asset Bundling
- 0. Asset Bundling (Vite)
- 1. Introduction
- 1.0.1. Choosing Between Vite And Laravel Mix
- 1.0.2. Migrating Back To Mix
- 2. Installation & Setup
- 2.1. Installing Node
- 2.2. Installing Vite And The Laravel Plugin
- 2.3. Configuring Vite
- 2.3.1. Working With A Secure Development Server
- 2.4. Loading Your Scripts And Styles
- 3. Running Vite
- 4. Working With JavaScript
- 4.1. Aliases
- 4.2. Vue
- 4.3. React
- 4.4. Inertia
- 4.5. URL Processing
- 5. Working With Stylesheets
- 6. Working With Blade & Routes
- 6.1. Processing Static Assets With Vite
- 6.2. Refreshing On Save
- 6.3. Aliases
- 7. Custom Base URLs
- 8. Environment Variables
- 9. Disabling Vite In Tests
- 10. Server-Side Rendering (SSR)
- 11. Script & Style Tag Attributes
- 11.1. Content Security Policy (CSP) Nonce
- 11.2. Subresource Integrity (SRI)
- 11.3. Arbitrary Attributes
- 12. Advanced Customization
- 12.1. Correcting Dev Server URLs
10. URL Generation
- 0. URL Generation
- 1. Introduction
- 2. The Basics
- 2.1. Generating URLs
- 2.2. Accessing The Current URL
- 3. URLs For Named Routes
- 3.0.1. Eloquent Models
- 3.1. Signed URLs
- 3.1.1. Validating Signed Route Requests
- 3.1.2. Responding To Invalid Signed Routes
- 4. URLs For Controller Actions
- 5. Default Values
- 5.1.1. URL Defaults & Middleware Priority
11. Session
- 0. HTTP Session
- 1. Introduction
- 1.1. Configuration
- 1.2. Driver Prerequisites
- 1.2.1. Database
- 1.2.2. Redis
- 2. Interacting With The Session
- 2.3. Retrieving Data
- 2.3.1. The Global Session Helper
- 2.3.2. Retrieving All Session Data
- 2.3.3. Determining If An Item Exists In The Session
- 2.4. Storing Data
- 2.4.1. Pushing To Array Session Values
- 2.4.2. Retrieving & Deleting An Item
- 2.4.3. Incrementing & Decrementing Session Values
- 2.5. Flash Data
- 2.6. Deleting Data
- 2.7. Regenerating The Session ID
- 3. Session Blocking
- 4. Adding Custom Session Drivers
- 4.0.1. Implementing The Driver
- 4.0.2. Registering The Driver
12. Validation
- 0. Validation
- 1. Introduction
- 2. Validation Quickstart
- 2.1. Defining The Routes
- 2.2. Creating The Controller
- 2.3. Writing The Validation Logic
- 2.3.1. Stopping On First Validation Failure
- 2.3.2. A Note On Nested Attributes
- 2.4. Displaying The Validation Errors
- 2.4.1. Customizing The Error Messages
- 2.4.2. XHR Requests & Validation
- 2.4.3. The `@error` Directive
- 2.5. Repopulating Forms
- 2.6. A Note On Optional Fields
- 2.7. Validation Error Response Format
- 3. Form Request Validation
- 3.1. Creating Form Requests
- 3.1.1. Adding After Hooks To Form Requests
- 3.1.2. Stopping On First Validation Failure Attribute
- 3.1.3. Customizing The Redirect Location
- 3.2. Authorizing Form Requests
- 3.3. Customizing The Error Messages
- 3.3.1. Customizing The Validation Attributes
- 3.4. Preparing Input For Validation
- 4. Manually Creating Validators
- 4.0.1. Stopping On First Validation Failure
- 4.1. Automatic Redirection
- 4.2. Named Error Bags
- 4.3. Customizing The Error Messages
- 4.3.1. Specifying A Custom Message For A Given Attribute
- 4.3.2. Specifying Custom Attribute Values
- 4.4. After Validation Hook
- 5. Working With Validated Input
- 6. Working With Error Messages
- 6.0.1. Retrieving The First Error Message For A Field
- 6.0.2. Retrieving All Error Messages For A Field
- 6.0.3. Retrieving All Error Messages For All Fields
- 6.0.4. Determining If Messages Exist For A Field
- 6.1. Specifying Custom Messages In Language Files
- 6.1.1. Custom Messages For Specific Attributes
- 6.2. Specifying Attributes In Language Files
- 6.3. Specifying Values In Language Files
- 7. Available Validation Rules
- 7.0.1. accepted
- 7.0.2. accepted_if:anotherfield,value,...
- 7.0.3. active_url
- 7.0.4. after:_date_
- 7.0.5. after\_or\_equal:_date_
- 7.0.6. alpha
- 7.0.7. alpha_dash
- 7.0.8. alpha_num
- 7.0.9. array
- 7.0.10. ascii
- 7.0.11. bail
- 7.0.12. before:_date_
- 7.0.13. before\_or\_equal:_date_
- 7.0.14. between:_min_,_max_
- 7.0.15. boolean
- 7.0.16. confirmed
- 7.0.17. current_password
- 7.0.18. date
- 7.0.19. date_equals:_date_
- 7.0.20. date_format:_format_,...
- 7.0.21. decimal:_min_,_max_
- 7.0.22. declined
- 7.0.23. declined_if:anotherfield,value,...
- 7.0.24. different:_field_
- 7.0.25. digits:_value_
- 7.0.26. digits_between:_min_,_max_
- 7.0.27. dimensions
- 7.0.28. distinct
- 7.0.29. doesnt_start_with:_foo_,_bar_,...
- 7.0.30. doesnt_end_with:_foo_,_bar_,...
- 7.0.31. email
- 7.0.32. ends_with:_foo_,_bar_,...
- 7.0.33. enum
- 7.0.34. exclude
- 7.0.35. exclude_if:_anotherfield_,_value_
- 7.0.36. exclude_unless:_anotherfield_,_value_
- 7.0.37. exclude_with:_anotherfield_
- 7.0.38. exclude_without:_anotherfield_
- 7.0.39. exists:_table_,_column_
- 7.0.40. Basic Usage Of Exists Rule
- 7.0.41. Specifying A Custom Column Name
- 7.0.42. file
- 7.0.43. filled
- 7.0.44. gt:_field_
- 7.0.45. gte:_field_
- 7.0.46. image
- 7.0.47. in:_foo_,_bar_,...
- 7.0.48. in_array:_anotherfield_.*
- 7.0.49. integer
- 7.0.50. ip
- 7.0.51. ipv4
- 7.0.52. ipv6
- 7.0.53. json
- 7.0.54. lt:_field_
- 7.0.55. lte:_field_
- 7.0.56. lowercase
- 7.0.57. mac_address
- 7.0.58. max:_value_
- 7.0.59. max_digits:_value_
- 7.0.60. mimetypes:_text/plain_,...
- 7.0.61. mimes:_foo_,_bar_,...
- 7.0.62. Basic Usage Of MIME Rule
- 7.0.63. min:_value_
- 7.0.64. min_digits:_value_
- 7.0.65. multiple_of:_value_
- 7.0.66. missing
- 7.0.67. not_in:_foo_,_bar_,...
- 7.0.68. not_regex:_pattern_
- 7.0.69. nullable
- 7.0.70. numeric
- 7.0.71. password
- 7.0.72. present
- 7.0.73. prohibited
- 7.0.74. prohibited_if:_anotherfield_,_value_,...
- 7.0.75. prohibited_unless:_anotherfield_,_value_,...
- 7.0.76. prohibits:_anotherfield_,...
- 7.0.77. regex:_pattern_
- 7.0.78. required
- 7.0.79. required_if:_anotherfield_,_value_,...
- 7.0.80. required_unless:_anotherfield_,_value_,...
- 7.0.81. required_with:_foo_,_bar_,...
- 7.0.82. required_with_all:_foo_,_bar_,...
- 7.0.83. required_without:_foo_,_bar_,...
- 7.0.84. required_without_all:_foo_,_bar_,...
- 7.0.85. required_array_keys:_foo_,_bar_,...
- 7.0.86. same:_field_
- 7.0.87. size:_value_
- 7.0.88. starts_with:_foo_,_bar_,...
- 7.0.89. string
- 7.0.90. timezone
- 7.0.91. unique:_table_,_column_
- 7.0.92. uppercase
- 7.0.93. url
- 7.0.94. ulid
- 7.0.95. uuid
- 8. Conditionally Adding Rules
- 8.0.1. Skipping Validation When Fields Have Certain Values
- 8.0.2. Validating When Present
- 8.0.3. Complex Conditional Validation
- 8.0.4. Complex Conditional Array Validation
- 9. Validating Arrays
- 9.1. Validating Nested Array Input
- 9.1.1. Accessing Nested Array Data
- 9.2. Error Message Indexes & Positions
- 10. Validating Files
- 10.0.1. File Types
- 11. Validating Passwords
- 11.0.1. Defining Default Password Rules
- 12. Custom Validation Rules
- 12.1. Using Rule Objects
- 12.1.1. Translating Validation Messages
- 12.1.2. Accessing Additional Data
- 12.2. Using Closures
- 12.3. Implicit Rules
13. Error Handling
- 0. Error Handling
- 1. Introduction
- 2. Configuration
- 3. The Exception Handler
- 3.1. Reporting Exceptions
- 3.1.1. Global Log Context
- 3.1.2. Exception Log Context
- 3.1.3. The `report` Helper
- 3.2. Exception Log Levels
- 3.3. Ignoring Exceptions By Type
- 3.4. Rendering Exceptions
- 3.5. Reportable & Renderable Exceptions
- 4. HTTP Exceptions
- 4.1. Custom HTTP Error Pages
- 4.1.1. Fallback HTTP Error Pages
14. Logging
- 0. Logging
- 1. Introduction
- 2. Configuration
- 2.1.1. Configuring The Channel Name
- 2.2. Available Channel Drivers
- 2.3. Channel Prerequisites
- 2.3.1. Configuring The Single and Daily Channels
- 2.3.2. Configuring The Papertrail Channel
- 2.3.3. Configuring The Slack Channel
- 2.4. Logging Deprecation Warnings
- 3. Building Log Stacks
- 3.0.1. Log Levels
- 4. Writing Log Messages
- 4.1. Contextual Information
- 4.2. Writing To Specific Channels
- 4.2.1. On-Demand Channels
- 5. Monolog Channel Customization
- 5.3. Customizing Monolog For Channels
- 5.4. Creating Monolog Handler Channels
- 5.4.1. Monolog Formatters
- 5.5. Creating Custom Channels Via Factories
5. Digging Deeper
1. Artisan Console
- 0. Artisan Console
- 1. Introduction
- 1.0.1. Laravel Sail
- 1.1. Tinker (REPL)
- 1.1.1. Installation
- 1.1.2. Usage
- 1.1.3. Command Allow List
- 1.1.4. Classes That Should Not Be Aliased
- 2. Writing Commands
- 2.2. Generating Commands
- 2.3. Command Structure
- 2.4. Closure Commands
- 2.4.1. Type-Hinting Dependencies
- 2.4.2. Closure Command Descriptions
- 2.5. Isolatable Commands
- 2.5.1. Lock Expiration Time
- 3. Defining Input Expectations
- 3.6. Arguments
- 3.7. Options
- 3.7.1. Options With Values
- 3.7.2. Option Shortcuts
- 3.8. Input Arrays
- 3.8.1. Option Arrays
- 3.9. Input Descriptions
- 4. Command I/O
- 4.1. Retrieving Input
- 4.2. Prompting For Input
- 4.2.1. Asking For Confirmation
- 4.2.2. Auto-Completion
- 4.2.3. Multiple Choice Questions
- 4.3. Writing Output
- 4.3.1. Tables
- 4.3.2. Progress Bars
- 5. Registering Commands
- 6. Programmatically Executing Commands
- 6.3.1. Passing Array Values
- 6.3.2. Passing Boolean Values
- 6.3.3. Queueing Artisan Commands
- 6.4. Calling Commands From Other Commands
- 7. Signal Handling
- 8. Stub Customization
- 9. Events
2. Broadcasting
- 0. Broadcasting
- 1. Introduction
- 1.1.1. Supported Drivers
- 2. Server Side Installation
- 2.2. Configuration
- 2.2.1. Broadcast Service Provider
- 2.2.2. Queue Configuration
- 2.3. Pusher Channels
- 2.3.1. Open Source Pusher Alternatives
- 2.4. Ably
- 2.5. Open Source Alternatives
- 2.5.1. PHP
- 2.5.2. Node
- 3. Client Side Installation
- 3.6. Pusher Channels
- 3.6.1. Using An Existing Client Instance
- 3.7. Ably
- 4. Concept Overview
- 4.1. Using An Example Application
- 4.1.1. The `ShouldBroadcast` Interface
- 4.1.2. Authorizing Channels
- 4.1.3. Listening For Event Broadcasts
- 5. Defining Broadcast Events
- 5.2. Broadcast Name
- 5.3. Broadcast Data
- 5.4. Broadcast Queue
- 5.5. Broadcast Conditions
- 5.5.1. Broadcasting & Database Transactions
- 6. Authorizing Channels
- 6.6. Defining Authorization Routes
- 6.6.1. Customizing The Authorization Endpoint
- 6.6.2. Customizing The Authorization Request
- 6.7. Defining Authorization Callbacks
- 6.7.1. Authorization Callback Model Binding
- 6.7.2. Authorization Callback Authentication
- 6.8. Defining Channel Classes
- 7. Broadcasting Events
- 7.1. Only To Others
- 7.1.1. Configuration
- 7.2. Customizing The Connection
- 8. Receiving Broadcasts
- 8.1. Listening For Events
- 8.1.1. Stop Listening For Events
- 8.2. Leaving A Channel
- 8.3. Namespaces
- 9. Presence Channels
- 9.1. Authorizing Presence Channels
- 9.2. Joining Presence Channels
- 9.3. Broadcasting To Presence Channels
- 10. Model Broadcasting
- 10.0.1. Customizing Model Broadcasting Event Creation
- 10.1. Model Broadcasting Conventions
- 10.1.1. Channel Conventions
- 10.1.2. Event Conventions
- 10.2. Listening For Model Broadcasts
- 11. Client Events
- 12. Notifications
3. Cache
- 0. Cache
- 1. Introduction
- 2. Configuration
- 2.1. Driver Prerequisites
- 2.1.1. Database
- 2.1.2. Memcached
- 2.1.3. Redis
- 2.1.4. DynamoDB
- 3. Cache Usage
- 3.2. Obtaining A Cache Instance
- 3.2.1. Accessing Multiple Cache Stores
- 3.3. Retrieving Items From The Cache
- 3.3.1. Checking For Item Existence
- 3.3.2. Incrementing / Decrementing Values
- 3.3.3. Retrieve & Store
- 3.3.4. Retrieve & Delete
- 3.4. Storing Items In The Cache
- 3.4.1. Store If Not Present
- 3.4.2. Storing Items Forever
- 3.5. Removing Items From The Cache
- 3.6. The Cache Helper
- 4. Cache Tags
- 4.1. Storing Tagged Cache Items
- 4.2. Accessing Tagged Cache Items
- 4.3. Removing Tagged Cache Items
- 4.4. Pruning Stale Cache Tags
- 5. Atomic Locks
- 5.1. Driver Prerequisites
- 5.1.1. Database
- 5.2. Managing Locks
- 5.3. Managing Locks Across Processes
- 6. Adding Custom Cache Drivers
- 6.1. Writing The Driver
- 6.2. Registering The Driver
- 7. Events
4. Collections
- 0. Collections
- 1. Introduction
- 1.1. Creating Collections
- 1.2. Extending Collections
- 1.2.1. Macro Arguments
- 2. Available Methods
- 3. Method Listing
- 3.2.1. `all()` {.collection-method .first-collection-method}
- 3.2.2. `average()` {.collection-method}
- 3.2.3. `avg()` {.collection-method}
- 3.2.4. `chunk()` {.collection-method}
- 3.2.5. `chunkWhile()` {.collection-method}
- 3.2.6. `collapse()` {.collection-method}
- 3.2.7. `collect()` {.collection-method}
- 3.2.8. `combine()` {.collection-method}
- 3.2.9. `concat()` {.collection-method}
- 3.2.10. `contains()` {.collection-method}
- 3.2.11. `containsOneItem()` {.collection-method}
- 3.2.12. `containsStrict()` {.collection-method}
- 3.2.13. `count()` {.collection-method}
- 3.2.14. `countBy()` {.collection-method}
- 3.2.15. `crossJoin()` {.collection-method}
- 3.2.16. `dd()` {.collection-method}
- 3.2.17. `diff()` {.collection-method}
- 3.2.18. `diffAssoc()` {.collection-method}
- 3.2.19. `diffKeys()` {.collection-method}
- 3.2.20. `doesntContain()` {.collection-method}
- 3.2.21. `dump()` {.collection-method}
- 3.2.22. `duplicates()` {.collection-method}
- 3.2.23. `duplicatesStrict()` {.collection-method}
- 3.2.24. `each()` {.collection-method}
- 3.2.25. `eachSpread()` {.collection-method}
- 3.2.26. `every()` {.collection-method}
- 3.2.27. `except()` {.collection-method}
- 3.2.28. `filter()` {.collection-method}
- 3.2.29. `first()` {.collection-method}
- 3.2.30. `firstOrFail()` {.collection-method}
- 3.2.31. `firstWhere()` {.collection-method}
- 3.2.32. `flatMap()` {.collection-method}
- 3.2.33. `flatten()` {.collection-method}
- 3.2.34. `flip()` {.collection-method}
- 3.2.35. `forget()` {.collection-method}
- 3.2.36. `forPage()` {.collection-method}
- 3.2.37. `get()` {.collection-method}
- 3.2.38. `groupBy()` {.collection-method}
- 3.2.39. `has()` {.collection-method}
- 3.2.40. `hasAny()` {.collection-method}
- 3.2.41. `implode()` {.collection-method}
- 3.2.42. `intersect()` {.collection-method}
- 3.2.43. `intersectByKeys()` {.collection-method}
- 3.2.44. `isEmpty()` {.collection-method}
- 3.2.45. `isNotEmpty()` {.collection-method}
- 3.2.46. `join()` {.collection-method}
- 3.2.47. `keyBy()` {.collection-method}
- 3.2.48. `keys()` {.collection-method}
- 3.2.49. `last()` {.collection-method}
- 3.2.50. `lazy()` {.collection-method}
- 3.2.51. `macro()` {.collection-method}
- 3.2.52. `make()` {.collection-method}
- 3.2.53. `map()` {.collection-method}
- 3.2.54. `mapInto()` {.collection-method}
- 3.2.55. `mapSpread()` {.collection-method}
- 3.2.56. `mapToGroups()` {.collection-method}
- 3.2.57. `mapWithKeys()` {.collection-method}
- 3.2.58. `max()` {.collection-method}
- 3.2.59. `median()` {.collection-method}
- 3.2.60. `merge()` {.collection-method}
- 3.2.61. `mergeRecursive()` {.collection-method}
- 3.2.62. `min()` {.collection-method}
- 3.2.63. `mode()` {.collection-method}
- 3.2.64. `nth()` {.collection-method}
- 3.2.65. `only()` {.collection-method}
- 3.2.66. `pad()` {.collection-method}
- 3.2.67. `partition()` {.collection-method}
- 3.2.68. `pipe()` {.collection-method}
- 3.2.69. `pipeInto()` {.collection-method}
- 3.2.70. `pipeThrough()` {.collection-method}
- 3.2.71. `pluck()` {.collection-method}
- 3.2.72. `pop()` {.collection-method}
- 3.2.73. `prepend()` {.collection-method}
- 3.2.74. `pull()` {.collection-method}
- 3.2.75. `push()` {.collection-method}
- 3.2.76. `put()` {.collection-method}
- 3.2.77. `random()` {.collection-method}
- 3.2.78. `range()` {.collection-method}
- 3.2.79. `reduce()` {.collection-method}
- 3.2.80. `reduceSpread()` {.collection-method}
- 3.2.81. `reject()` {.collection-method}
- 3.2.82. `replace()` {.collection-method}
- 3.2.83. `replaceRecursive()` {.collection-method}
- 3.2.84. `reverse()` {.collection-method}
- 3.2.85. `search()` {.collection-method}
- 3.2.86. `shift()` {.collection-method}
- 3.2.87. `shuffle()` {.collection-method}
- 3.2.88. `skip()` {.collection-method}
- 3.2.89. `skipUntil()` {.collection-method}
- 3.2.90. `skipWhile()` {.collection-method}
- 3.2.91. `slice()` {.collection-method}
- 3.2.92. `sliding()` {.collection-method}
- 3.2.93. `sole()` {.collection-method}
- 3.2.94. `some()` {.collection-method}
- 3.2.95. `sort()` {.collection-method}
- 3.2.96. `sortBy()` {.collection-method}
- 3.2.97. `sortByDesc()` {.collection-method}
- 3.2.98. `sortDesc()` {.collection-method}
- 3.2.99. `sortKeys()` {.collection-method}
- 3.2.100. `sortKeysDesc()` {.collection-method}
- 3.2.101. `sortKeysUsing()` {.collection-method}
- 3.2.102. `splice()` {.collection-method}
- 3.2.103. `split()` {.collection-method}
- 3.2.104. `splitIn()` {.collection-method}
- 3.2.105. `sum()` {.collection-method}
- 3.2.106. `take()` {.collection-method}
- 3.2.107. `takeUntil()` {.collection-method}
- 3.2.108. `takeWhile()` {.collection-method}
- 3.2.109. `tap()` {.collection-method}
- 3.2.110. `times()` {.collection-method}
- 3.2.111. `toArray()` {.collection-method}
- 3.2.112. `toJson()` {.collection-method}
- 3.2.113. `transform()` {.collection-method}
- 3.2.114. `undot()` {.collection-method}
- 3.2.115. `union()` {.collection-method}
- 3.2.116. `unique()` {.collection-method}
- 3.2.117. `uniqueStrict()` {.collection-method}
- 3.2.118. `unless()` {.collection-method}
- 3.2.119. `unlessEmpty()` {.collection-method}
- 3.2.120. `unlessNotEmpty()` {.collection-method}
- 3.2.121. `unwrap()` {.collection-method}
- 3.2.122. `value()` {.collection-method}
- 3.2.123. `values()` {.collection-method}
- 3.2.124. `when()` {.collection-method}
- 3.2.125. `whenEmpty()` {.collection-method}
- 3.2.126. `whenNotEmpty()` {.collection-method}
- 3.2.127. `where()` {.collection-method}
- 3.2.128. `whereStrict()` {.collection-method}
- 3.2.129. `whereBetween()` {.collection-method}
- 3.2.130. `whereIn()` {.collection-method}
- 3.2.131. `whereInStrict()` {.collection-method}
- 3.2.132. `whereInstanceOf()` {.collection-method}
- 3.2.133. `whereNotBetween()` {.collection-method}
- 3.2.134. `whereNotIn()` {.collection-method}
- 3.2.135. `whereNotInStrict()` {.collection-method}
- 3.2.136. `whereNotNull()` {.collection-method}
- 3.2.137. `whereNull()` {.collection-method}
- 3.2.138. `wrap()` {.collection-method}
- 3.2.139. `zip()` {.collection-method}
- 4. Higher Order Messages
- 5. Lazy Collections
- 5.3. Introduction
- 5.4. Creating Lazy Collections
- 5.5. The Enumerable Contract
- 5.6. Lazy Collection Methods
- 5.6.1. `takeUntilTimeout()` {.collection-method}
- 5.6.2. `tapEach()` {.collection-method}
- 5.6.3. `remember()` {.collection-method}
5. Contracts
- 0. Contracts
- 1. Introduction
- 1.1. Contracts Vs. Facades
- 2. When To Use Contracts
- 3. How To Use Contracts
- 4. Contract Reference
6. Events
- 0. Events
- 1. Introduction
- 2. Registering Events & Listeners
- 2.1. Generating Events & Listeners
- 2.2. Manually Registering Events
- 2.2.1. Queueable Anonymous Event Listeners
- 2.2.2. Wildcard Event Listeners
- 2.3. Event Discovery
- 2.3.1. Event Discovery In Production
- 3. Defining Events
- 4. Defining Listeners
- 4.3.1. Stopping The Propagation Of An Event
- 5. Queued Event Listeners
- 5.3.1. Customizing The Queue Connection & Queue Name
- 5.3.2. Conditionally Queueing Listeners
- 5.4. Manually Interacting With The Queue
- 5.5. Queued Event Listeners & Database Transactions
- 5.6. Handling Failed Jobs
- 5.6.1. Specifying Queued Listener Maximum Attempts
- 6. Dispatching Events
- 7. Event Subscribers
- 7.7. Writing Event Subscribers
- 7.8. Registering Event Subscribers
- 8. Testing
- 8.1. Faking A Subset Of Events
- 8.2. Scoped Event Fakes
7. File Storage
- 0. File Storage
- 1. Introduction
- 2. Configuration
- 2.1. The Local Driver
- 2.2. The Public Disk
- 2.3. Driver Prerequisites
- 2.3.1. S3 Driver Configuration
- 2.3.2. FTP Driver Configuration
- 2.3.3. SFTP Driver Configuration
- 2.4. Scoped & Read-Only Filesystems
- 2.5. Amazon S3 Compatible Filesystems
- 2.5.1. MinIO
- 3. Obtaining Disk Instances
- 3.6. On-Demand Disks
- 4. Retrieving Files
- 4.1. Downloading Files
- 4.2. File URLs
- 4.2.1. Temporary URLs
- 4.2.2. URL Host Customization
- 4.3. File Metadata
- 4.3.1. File Paths
- 5. Storing Files
- 5.3.1. Failed Writes
- 5.4. Prepending & Appending To Files
- 5.5. Copying & Moving Files
- 5.6. Automatic Streaming
- 5.7. File Uploads
- 5.7.1. Specifying A File Name
- 5.7.2. Specifying A Disk
- 5.7.3. Other Uploaded File Information
- 5.8. File Visibility
- 5.8.1. Local Files & Visibility
- 6. Deleting Files
- 7. Directories
- 7.8.1. Get All Files Within A Directory
- 7.8.2. Get All Directories Within A Directory
- 7.8.3. Create A Directory
- 7.8.4. Delete A Directory
- 8. Testing
- 9. Custom Filesystems
8. Helpers
- 0. Helpers
- 1. Introduction
- 2. Available Methods
- 2.1. Arrays & Objects
- 2.2. Paths
- 2.3. Strings
- 2.4. Fluent Strings
- 2.5. URLs
- 2.6. Miscellaneous
- 3. Method Listing
- 4. Arrays & Objects
- 4.0.1. `Arr::accessible()` {.collection-method .first-collection-method}
- 4.0.2. `Arr::add()` {.collection-method}
- 4.0.3. `Arr::collapse()` {.collection-method}
- 4.0.4. `Arr::crossJoin()` {.collection-method}
- 4.0.5. `Arr::divide()` {.collection-method}
- 4.0.6. `Arr::dot()` {.collection-method}
- 4.0.7. `Arr::except()` {.collection-method}
- 4.0.8. `Arr::exists()` {.collection-method}
- 4.0.9. `Arr::first()` {.collection-method}
- 4.0.10. `Arr::flatten()` {.collection-method}
- 4.0.11. `Arr::forget()` {.collection-method}
- 4.0.12. `Arr::get()` {.collection-method}
- 4.0.13. `Arr::has()` {.collection-method}
- 4.0.14. `Arr::hasAny()` {.collection-method}
- 4.0.15. `Arr::isAssoc()` {.collection-method}
- 4.0.16. `Arr::isList()` {.collection-method}
- 4.0.17. `Arr::join()` {.collection-method}
- 4.0.18. `Arr::keyBy()` {.collection-method}
- 4.0.19. `Arr::last()` {.collection-method}
- 4.0.20. `Arr::map()` {.collection-method}
- 4.0.21. `Arr::only()` {.collection-method}
- 4.0.22. `Arr::pluck()` {.collection-method}
- 4.0.23. `Arr::prepend()` {.collection-method}
- 4.0.24. `Arr::prependKeysWith()` {.collection-method}
- 4.0.25. `Arr::pull()` {.collection-method}
- 4.0.26. `Arr::query()` {.collection-method}
- 4.0.27. `Arr::random()` {.collection-method}
- 4.0.28. `Arr::set()` {.collection-method}
- 4.0.29. `Arr::shuffle()` {.collection-method}
- 4.0.30. `Arr::sort()` {.collection-method}
- 4.0.31. `Arr::sortDesc()` {.collection-method}
- 4.0.32. `Arr::sortRecursive()` {.collection-method}
- 4.0.33. `Arr::toCssClasses()` {.collection-method}
- 4.0.34. `Arr::undot()` {.collection-method}
- 4.0.35. `Arr::where()` {.collection-method}
- 4.0.36. `Arr::whereNotNull()` {.collection-method}
- 4.0.37. `Arr::wrap()` {.collection-method}
- 4.0.38. `data_fill()` {.collection-method}
- 4.0.39. `data_get()` {.collection-method}
- 4.0.40. `data_set()` {.collection-method}
- 4.0.41. `head()` {.collection-method}
- 4.0.42. `last()` {.collection-method}
- 5. Paths
- 5.0.1. `app_path()` {.collection-method}
- 5.0.2. `base_path()` {.collection-method}
- 5.0.3. `config_path()` {.collection-method}
- 5.0.4. `database_path()` {.collection-method}
- 5.0.5. `lang_path()` {.collection-method}
- 5.0.6. `mix()` {.collection-method}
- 5.0.7. `public_path()` {.collection-method}
- 5.0.8. `resource_path()` {.collection-method}
- 5.0.9. `storage_path()` {.collection-method}
- 6. Strings
- 6.0.1. `__()` {.collection-method}
- 6.0.2. `class_basename()` {.collection-method}
- 6.0.3. `e()` {.collection-method}
- 6.0.4. `preg_replace_array()` {.collection-method}
- 6.0.5. `Str::after()` {.collection-method}
- 6.0.6. `Str::afterLast()` {.collection-method}
- 6.0.7. `Str::ascii()` {.collection-method}
- 6.0.8. `Str::before()` {.collection-method}
- 6.0.9. `Str::beforeLast()` {.collection-method}
- 6.0.10. `Str::between()` {.collection-method}
- 6.0.11. `Str::betweenFirst()` {.collection-method}
- 6.0.12. `Str::camel()` {.collection-method}
- 6.0.13. `Str::contains()` {.collection-method}
- 6.0.14. `Str::containsAll()` {.collection-method}
- 6.0.15. `Str::endsWith()` {.collection-method}
- 6.0.16. `Str::excerpt()` {.collection-method}
- 6.0.17. `Str::finish()` {.collection-method}
- 6.0.18. `Str::headline()` {.collection-method}
- 6.0.19. `Str::inlineMarkdown()` {.collection-method}
- 6.0.20. `Str::is()` {.collection-method}
- 6.0.21. `Str::isAscii()` {.collection-method}
- 6.0.22. `Str::isJson()` {.collection-method}
- 6.0.23. `Str::isUlid()` {.collection-method}
- 6.0.24. `Str::isUuid()` {.collection-method}
- 6.0.25. `Str::kebab()` {.collection-method}
- 6.0.26. `Str::lcfirst()` {.collection-method}
- 6.0.27. `Str::length()` {.collection-method}
- 6.0.28. `Str::limit()` {.collection-method}
- 6.0.29. `Str::lower()` {.collection-method}
- 6.0.30. `Str::markdown()` {.collection-method}
- 6.0.31. `Str::mask()` {.collection-method}
- 6.0.32. `Str::orderedUuid()` {.collection-method}
- 6.0.33. `Str::padBoth()` {.collection-method}
- 6.0.34. `Str::padLeft()` {.collection-method}
- 6.0.35. `Str::padRight()` {.collection-method}
- 6.0.36. `Str::password()` {.collection-method}
- 6.0.37. `Str::plural()` {.collection-method}
- 6.0.38. `Str::pluralStudly()` {.collection-method}
- 6.0.39. `Str::random()` {.collection-method}
- 6.0.40. `Str::remove()` {.collection-method}
- 6.0.41. `Str::replace()` {.collection-method}
- 6.0.42. `Str::replaceArray()` {.collection-method}
- 6.0.43. `Str::replaceFirst()` {.collection-method}
- 6.0.44. `Str::replaceLast()` {.collection-method}
- 6.0.45. `Str::reverse()` {.collection-method}
- 6.0.46. `Str::singular()` {.collection-method}
- 6.0.47. `Str::slug()` {.collection-method}
- 6.0.48. `Str::snake()` {.collection-method}
- 6.0.49. `Str::squish()` {.collection-method}
- 6.0.50. `Str::start()` {.collection-method}
- 6.0.51. `Str::startsWith()` {.collection-method}
- 6.0.52. `Str::studly()` {.collection-method}
- 6.0.53. `Str::substr()` {.collection-method}
- 6.0.54. `Str::substrCount()` {.collection-method}
- 6.0.55. `Str::substrReplace()` {.collection-method}
- 6.0.56. `Str::swap()` {.collection-method}
- 6.0.57. `Str::title()` {.collection-method}
- 6.0.58. `Str::toHtmlString()` {.collection-method}
- 6.0.59. `Str::ucfirst()` {.collection-method}
- 6.0.60. `Str::ucsplit()` {.collection-method}
- 6.0.61. `Str::upper()` {.collection-method}
- 6.0.62. `Str::ulid()` {.collection-method}
- 6.0.63. `Str::uuid()` {.collection-method}
- 6.0.64. `Str::wordCount()` {.collection-method}
- 6.0.65. `Str::words()` {.collection-method}
- 6.0.66. `str()` {.collection-method}
- 6.0.67. `trans()` {.collection-method}
- 6.0.68. `trans_choice()` {.collection-method}
- 7. Fluent Strings
- 7.0.1. `after` {.collection-method}
- 7.0.2. `afterLast` {.collection-method}
- 7.0.3. `append` {.collection-method}
- 7.0.4. `ascii` {.collection-method}
- 7.0.5. `basename` {.collection-method}
- 7.0.6. `before` {.collection-method}
- 7.0.7. `beforeLast` {.collection-method}
- 7.0.8. `between` {.collection-method}
- 7.0.9. `betweenFirst` {.collection-method}
- 7.0.10. `camel` {.collection-method}
- 7.0.11. `classBasename` {.collection-method}
- 7.0.12. `contains` {.collection-method}
- 7.0.13. `containsAll` {.collection-method}
- 7.0.14. `dirname` {.collection-method}
- 7.0.15. `excerpt` {.collection-method}
- 7.0.16. `endsWith` {.collection-method}
- 7.0.17. `exactly` {.collection-method}
- 7.0.18. `explode` {.collection-method}
- 7.0.19. `finish` {.collection-method}
- 7.0.20. `headline` {.collection-method}
- 7.0.21. `inlineMarkdown` {.collection-method}
- 7.0.22. `is` {.collection-method}
- 7.0.23. `isAscii` {.collection-method}
- 7.0.24. `isEmpty` {.collection-method}
- 7.0.25. `isNotEmpty` {.collection-method}
- 7.0.26. `isJson` {.collection-method}
- 7.0.27. `isUlid` {.collection-method}
- 7.0.28. `isUuid` {.collection-method}
- 7.0.29. `kebab` {.collection-method}
- 7.0.30. `lcfirst` {.collection-method}
- 7.0.31. `length` {.collection-method}
- 7.0.32. `limit` {.collection-method}
- 7.0.33. `lower` {.collection-method}
- 7.0.34. `ltrim` {.collection-method}
- 7.0.35. `markdown` {.collection-method}
- 7.0.36. `mask` {.collection-method}
- 7.0.37. `match` {.collection-method}
- 7.0.38. `matchAll` {.collection-method}
- 7.0.39. `newLine` {.collection-method}
- 7.0.40. `padBoth` {.collection-method}
- 7.0.41. `padLeft` {.collection-method}
- 7.0.42. `padRight` {.collection-method}
- 7.0.43. `pipe` {.collection-method}
- 7.0.44. `plural` {.collection-method}
- 7.0.45. `prepend` {.collection-method}
- 7.0.46. `remove` {.collection-method}
- 7.0.47. `replace` {.collection-method}
- 7.0.48. `replaceArray` {.collection-method}
- 7.0.49. `replaceFirst` {.collection-method}
- 7.0.50. `replaceLast` {.collection-method}
- 7.0.51. `replaceMatches` {.collection-method}
- 7.0.52. `rtrim` {.collection-method}
- 7.0.53. `scan` {.collection-method}
- 7.0.54. `singular` {.collection-method}
- 7.0.55. `slug` {.collection-method}
- 7.0.56. `snake` {.collection-method}
- 7.0.57. `split` {.collection-method}
- 7.0.58. `squish` {.collection-method}
- 7.0.59. `start` {.collection-method}
- 7.0.60. `startsWith` {.collection-method}
- 7.0.61. `studly` {.collection-method}
- 7.0.62. `substr` {.collection-method}
- 7.0.63. `substrReplace` {.collection-method}
- 7.0.64. `swap` {.collection-method}
- 7.0.65. `tap` {.collection-method}
- 7.0.66. `test` {.collection-method}
- 7.0.67. `title` {.collection-method}
- 7.0.68. `trim` {.collection-method}
- 7.0.69. `ucfirst` {.collection-method}
- 7.0.70. `ucsplit` {.collection-method}
- 7.0.71. `upper` {.collection-method}
- 7.0.72. `when` {.collection-method}
- 7.0.73. `whenContains` {.collection-method}
- 7.0.74. `whenContainsAll` {.collection-method}
- 7.0.75. `whenEmpty` {.collection-method}
- 7.0.76. `whenNotEmpty` {.collection-method}
- 7.0.77. `whenStartsWith` {.collection-method}
- 7.0.78. `whenEndsWith` {.collection-method}
- 7.0.79. `whenExactly` {.collection-method}
- 7.0.80. `whenNotExactly` {.collection-method}
- 7.0.81. `whenIs` {.collection-method}
- 7.0.82. `whenIsAscii` {.collection-method}
- 7.0.83. `whenIsUlid` {.collection-method}
- 7.0.84. `whenIsUuid` {.collection-method}
- 7.0.85. `whenTest` {.collection-method}
- 7.0.86. `wordCount` {.collection-method}
- 7.0.87. `words` {.collection-method}
- 8. URLs
- 8.0.1. `action()` {.collection-method}
- 8.0.2. `asset()` {.collection-method}
- 8.0.3. `route()` {.collection-method}
- 8.0.4. `secure_asset()` {.collection-method}
- 8.0.5. `secure_url()` {.collection-method}
- 8.0.6. `to_route()` {.collection-method}
- 8.0.7. `url()` {.collection-method}
- 9. Miscellaneous
- 9.0.1. `abort()` {.collection-method}
- 9.0.2. `abort_if()` {.collection-method}
- 9.0.3. `abort_unless()` {.collection-method}
- 9.0.4. `app()` {.collection-method}
- 9.0.5. `auth()` {.collection-method}
- 9.0.6. `back()` {.collection-method}
- 9.0.7. `bcrypt()` {.collection-method}
- 9.0.8. `blank()` {.collection-method}
- 9.0.9. `broadcast()` {.collection-method}
- 9.0.10. `cache()` {.collection-method}
- 9.0.11. `class_uses_recursive()` {.collection-method}
- 9.0.12. `collect()` {.collection-method}
- 9.0.13. `config()` {.collection-method}
- 9.0.14. `cookie()` {.collection-method}
- 9.0.15. `csrf_field()` {.collection-method}
- 9.0.16. `csrf_token()` {.collection-method}
- 9.0.17. `decrypt()` {.collection-method}
- 9.0.18. `dd()` {.collection-method}
- 9.0.19. `dispatch()` {.collection-method}
- 9.0.20. `dump()` {.collection-method}
- 9.0.21. `encrypt()` {.collection-method}
- 9.0.22. `env()` {.collection-method}