Laravel
   HOME

TheInfoList



OR:

Laravel is a
free and open-source Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
PHP
web framework A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build an ...
, created by Taylor Otwell and intended for the development of web applications following the
model–view–controller Model–view–controller (MVC) is a software architectural pattern commonly used for developing user interfaces that divide the related program logic into three interconnected elements. This is done to separate internal representations of info ...
(MVC)
architectural pattern An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. The architectural patterns address various issues in software engineering, such as computer hardware perfor ...
and based on
Symfony Symfony is a free and open-source PHP web application framework and a set of reusable PHP component libraries. It was published as free software on October 18, 2005, and released under the MIT license. Goal Symfony aims to speed up the cre ...
. Some of the features of Laravel are a modular packaging system with a dedicated dependency manager, different ways for accessing
relational database A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relati ...
s, utilities that aid in
application deployment Software deployment is all of the activities that make a software system available for use. The general deployment process consists of several interrelated activities with possible transitions between them. These activities can occur on the ...
and maintenance, and its orientation toward
syntactic sugar In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express. It makes the language "sweeter" for human use: things can be expressed more clearly, more concisely, or in an ...
. The
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the ...
of Laravel is hosted on
GitHub GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, cont ...
and licensed under the terms of
MIT License The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license comp ...
.


History

Taylor Otwell created Laravel as an attempt to provide a more advanced alternative to the
CodeIgniter CodeIgniter is an open-source software rapid development web framework, for use in building dynamic web sites with PHP. Popularity CodeIgniter is loosely based on the popular model–view–controller (MVC) development pattern. While controller c ...
framework, which did not provide certain features such as built-in support for user
authentication Authentication (from ''authentikos'', "real, genuine", from αὐθέντης ''authentes'', "author") is the act of proving an assertion, such as the identity of a computer system user. In contrast with identification, the act of indicatin ...
and authorization. Laravel's first beta release was made available on June 9, 2011, followed by the Laravel 1 release later in the same month. Laravel 1 included built-in support for authentication, localisation,
models A model is an informative representation of an object, person or system. The term originally denoted the plans of a building in late 16th-century English, and derived via French and Italian ultimately from Latin ''modulus'', a measure. Models c ...
, views, sessions, routing and other mechanisms, but lacked support for controllers that prevented it from being a true MVC framework. Laravel 2 was released in September 2011, bringing various improvements from the author and community. Major new features included the support for controllers, which made Laravel 2 a fully MVC-compliant framework, built-in support for the
inversion of control In software engineering, inversion of control (IoC) is a design pattern in which custom-written portions of a computer program receive the flow of control from a generic framework. A software architecture with this design inverts control as co ...
(IoC) principle, and a templating system called ''Blade''. As a downside, support for third-party packages was removed in Laravel 2. Laravel 3 was released in February 2012 with a set of new features including the cmd
command-line interface A command-line interpreter or command-line processor uses a command-line interface (CLI) to receive commands from a user in the form of lines of text. This provides a means of setting parameters for the environment, invoking executables and pro ...
(CLI) named ''Artisan'', built-in support for more
database management system In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases ...
s, database migrations as a form of
version control In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
for database layouts, support for handling events, and a packaging system called ''Bundles''. An increase of Laravel's userbase and popularity lined up with the release of Laravel 3. Laravel 4, codenamed ''Illuminate'', was released in May 2013. It was made as a complete rewrite of the Laravel framework, migrating its layout into a set of separate packages distributed through
Composer A composer is a person who writes music. The term is especially used to indicate composers of Western classical music, or those who are composers by occupation. Many composers are, or were, also skilled performers of music. Etymology and Def ...
, which serves as an application-level package manager. Such a layout improved the extensibility of Laravel 4, which was paired with its official regular release schedule spanning six months between minor point releases. Other new features in the Laravel 4 release include
database seeding Database seeding is populating a database with an initial set of data. It's common to load seed data such as initial user accounts or dummy data upon initial setup of an application. Entity Framework \Migrations\Configuration.cs public class A ...
for the initial population of databases, support for
message queue In computer science, message queues and mailboxes are software-engineering components typically used for inter-process communication (IPC), or for inter- thread communication within the same process. They use a queue for messaging – the ...
s, built-in support for sending different types of email, and support for delayed deletion of database records called ''soft deletion''. Laravel 5 was released in February 2015 as a result of internal changes that ended up in renumbering the then-future Laravel 4.3 release. New features in the Laravel 5 release include support for scheduling periodically executed tasks through a package called ''Scheduler'', an abstraction layer called ''Flysystem'' that allows remote storage to be used in the same way as local
file system In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one larg ...
s, improved handling of package assets through ''Elixir'', and simplified externally handled authentication through the optional ''Socialite'' package. Laravel 5 also introduced a new internal directory tree structure for developed applications. Lumen 5.0 is the initial release of the Lumen framework, a light derivative of Laravel optimized for speed. This initial release is based on the Laravel 5.x series of PHP components, and following versions reflect the Laravel versions with which it shares common infrastructure. As of 2022, authors no longer recommend the use of Lumen for gaining these advantages, and promote Laravel Ocotone instead. Laravel 5.1, released in June 2015, was the first release of Laravel to receive
long-term support Long-term support (LTS) is a product lifecycle management policy in which a stable release of computer software is maintained for a longer period of time than the standard edition. The term is typically reserved for open-source software, where i ...
(LTS). New LTS versions were planned for one every two years. Laravel 5.3 was released on August 23, 2016. The new features in 5.3 are focused on improving developer speed by adding additional out of the box improvements for common tasks. Laravel 5.4 was released on January 24, 2017, with many new features like Laravel Dusk, Laravel Mix, Blade Components and Slots, Markdown Emails, Automatic Facades, Route Improvements, Higher Order Messaging for Collections, and many others. Laravel 6 was released on September 3, 2019, shift blueprint code generation, introducing semantic versioning, compatibility with Laravel Vapor, improved authorization responses, improved job middleware, lazy collections, and sub-query improvements. The frontend scaffolding was removed from the main package and moved into the laravel/ui package. Laravel 7 was released on March 3, 2020, with new features like Laravel Sanctum, Custom Eloquent Casts, Blade Component Tags, Fluent String Operations and Route Model Binding Improvements. Laravel 8 was released on September 8, 2020, with new features like Laravel Jetstream, model factory classes, migration squashing, Tailwind CSS for pagination views and other usability improvements. The latest Laravel version is version 9, which was released on February 8, 2022.


Release history

Versions designated LTS are supported with bug fixes for 2 years and security fixes for 3 years. Other releases are supported with bug fixes for 6 months and security fixes for 1 year. Source: Laravel


Features

The following features serve as Laravel's key design points (where not specifically noted, descriptions refer to the features of Laravel 3): * ''Bundles'' provide a modular packaging system since the release of Laravel 3, with bundled features already available for easy addition to applications. Furthermore, Laravel 4 uses Composer as a dependency manager to add framework-agnostic and Laravel-specific PHP packages available from the Packagist repository. * ''Eloquent ORM'' ( object-relational mapping) is an advanced PHP implementation of the
active record pattern In software engineering, the active record pattern is an architectural pattern. It is found in software that stores in-memory object data in relational databases. It was named by Martin Fowler in his 2003 book ''Patterns of Enterprise Application ...
, providing at the same time internal methods for enforcing constraints on the relationships between
database In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases ...
objects. Following the active record pattern, Eloquent ORM presents database tables as classes, with their object instances tied to single
table row In the context of a relational database, a row—also called a tuple—represents a single, implicitly structured data item in a table. In simple terms, a database table can be thought of as consisting of ''rows'' and columns.SQL queries The SQL SELECT statement returns a result set of records, from one or more Table (database), tables. A SELECT statement retrieves zero or more rows from one or more Database Tables, database tables or database View (database), views. In most appli ...
to be written directly, Laravel's query builder provides a set of classes and
methods Method ( grc, μέθοδος, methodos) literally means a pursuit of knowledge, investigation, mode of prosecuting such inquiry, or system. In recent centuries it more often means a prescribed process for completing a task. It may refer to: *Scien ...
capable of building queries programmatically. It also allows selectable caching of the results of executed queries. * ''Application logic'' is an integral part of developed applications, implemented either by using controllers or as part of the route declarations. The
syntax In linguistics, syntax () is the study of how words and morphemes combine to form larger units such as phrases and sentences. Central concerns of syntax include word order, grammatical relations, hierarchical sentence structure ( constituenc ...
used to define application logic is similar to the one used by Sinatra framework. * ''Reverse routing'' defines a relationship between the links and routes, making it possible for later changes to routes to be automatically propagated into relevant links. When the links are created by using names of existing routes, the appropriate
uniform resource identifier A Uniform Resource Identifier (URI) is a unique sequence of characters that identifies a logical or physical resource used by web technologies. URIs may be used to identify anything, including real-world objects, such as people and places, conc ...
s (URIs) are automatically created by Laravel. * ''Restful controllers'' provide an optional way for separating the logic behind serving HTTP GET and POST requests. * ''Class auto loading'' provides automated loading of PHP classes without the need for manual maintenance of inclusion paths. On-demand loading prevents inclusion of unnecessary components, so only the actually used components are loaded. * '' View composers'' serve as customizable logical code units that can be executed when a view is loaded. * ''Blade'' templating engine combines one or more templates with a
data model A data model is an abstract model that organizes elements of data and standardizes how they relate to one another and to the properties of real-world entities. For instance, a data model may specify that the data element representing a car be c ...
to produce resulting views, doing that by transpiling the templates into cached PHP code for improved performance. Blade also provides a set of its own control structures such as conditional statements and loops, which are internally mapped to their PHP counterparts. Furthermore, Laravel services may be called from Blade templates, and the templating engine itself can be extended with custom directives. * ''IoC containers'' make it possible for new objects to be generated by following the
inversion of control In software engineering, inversion of control (IoC) is a design pattern in which custom-written portions of a computer program receive the flow of control from a generic framework. A software architecture with this design inverts control as co ...
(IoC) principle, in which the framework calls into the application- or task-specific code, with optional instantiating and referencing of new objects as singletons. * ''Migrations'' provide a
version control In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
system for
database schema The database schema is the structure of a database described in a formal language supported by the database management system (DBMS). The term "schema" refers to the organization of data as a blueprint of how the database is constructed (divi ...
s, making it possible to associate changes in the application's codebase and required changes in the database layout. As a result, this feature simplifies the
deployment Deployment may refer to: Engineering and software Concepts * Blue-green deployment, a method of installing changes to a web, app, or database server by swapping alternating production and staging servers * Continuous deployment, a software e ...
and updating of Laravel-based applications. * ''
Database seeding Database seeding is populating a database with an initial set of data. It's common to load seed data such as initial user accounts or dummy data upon initial setup of an application. Entity Framework \Migrations\Configuration.cs public class A ...
'' provides a way to populate database tables with selected default data that can be used for application
testing An examination (exam or evaluation) or test is an educational assessment intended to measure a test-taker's knowledge, skill, aptitude, physical fitness, or classification in many other topics (e.g., beliefs). A test may be administered verba ...
or be performed as part of the initial application setup. * '' Unit testing'' is provided as an integral part of Laravel, which itself contains unit tests that detect and prevent regressions in the framework. Unit tests can be run through the provided
command-line utility A console application is a computer program designed to be used via a text-only computer interface, such as a text terminal, the command-line interface of some operating systems ( Unix, DOS, etc.) or the text-based interface included with mo ...
. * ''Automatic pagination'' simplifies the task of implementing pagination, replacing the usual manual implementation approaches with automated methods integrated into Laravel. * ''Form request'' is a feature of Laravel 5 that serves as the base for
form Form is the shape, visual appearance, or configuration of an object. In a wider sense, the form is the way something happens. Form also refers to: *Form (document), a document (printed or electronic) with spaces in which to write or enter data * ...
input validation by internally binding
event Event may refer to: Gatherings of people * Ceremony, an event of ritual significance, performed on a special occasion * Convention (meeting), a gathering of individuals engaged in some common interest * Event management, the organization of ev ...
listeners, resulting in automated invoking of the form validation methods and generation of the actual form. *''Homestead'' - a Vagrant
virtual machine In computing, a virtual machine (VM) is the virtualization/ emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized h ...
that provides Laravel developers with all the tools necessary to develop Laravel straight out of the box, including,
Ubuntu Ubuntu ( ) is a Linux distribution based on Debian and composed mostly of free and open-source software. Ubuntu is officially released in three editions: '' Desktop'', ''Server'', and ''Core'' for Internet of things devices and robots. All ...
, Gulp, Bower and other development tools that are useful in developing full scale web applications. *Lazy Collection - This feature of the PHP framework Laravel primarily enables you to deal with heavy loads of data, while keeping the memory usage low. Moreover, when you switch from all ( _ to cursor ( ), just one expressive model is moved within the memory at a time as cursor ( ) makes use of the LazyCollection instance.


First-party packages

Ready-to-use packages provided by Laravel through Composer and Packagist include the following: * ''Cashier'', introduced in Laravel 4.2, provides an interface for managing subscription billing services provided by
Stripe Stripe, striped, or stripes may refer to: Decorations *Stripe (pattern), a line or band that differs in colour or tone from an adjacent surface *Racing stripe, a vehicle decoration *Service stripe, a decoration of the U.S. military Entertainment ...
, such as handling coupons and generating
invoice An invoice, bill or tab is a commercial document issued by a seller to a buyer relating to a sale transaction and indicating the products, quantities, and agreed-upon prices for products or services the seller had provided the buyer. Paym ...
s. * ''Envoy'', introduced in Laravel 4.2, provides a clean, minimal syntax for defining common tasks you run on your remote servers. Using Blade style syntax, you can easily setup tasks for deployment, Artisan commands, and more. * ''Socialite'', provides simplified mechanisms for authentication with different
OAuth OAuth (short for "Open Authorization") is an open standard for access delegation, commonly used as a way for internet users to grant websites or applications access to their information on other websites but without giving them the passwords. T ...
providers, including
Facebook Facebook is an online social media and social networking service owned by American company Meta Platforms. Founded in 2004 by Mark Zuckerberg with fellow Harvard College students and roommates Eduardo Saverin, Andrew McCollum, Dust ...
,
Twitter Twitter is an online social media and social networking service owned and operated by American company Twitter, Inc., on which users post and interact with 280-character-long messages known as "tweets". Registered users can post, like, and ...
,
Google Google LLC () is an American Multinational corporation, multinational technology company focusing on Search Engine, search engine technology, online advertising, cloud computing, software, computer software, quantum computing, e-commerce, ar ...
,
GitHub GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, cont ...
and Bitbucket. * ''Passport'', introduced in Laravel 5.3, provides a full
OAuth2 OAuth (short for "Open Authorization") is an open standard for access delegation, commonly used as a way for internet users to grant websites or applications access to their information on other websites but without giving them the passwords. Th ...
server implementation for your Laravel application in a matter of minutes. * ''Scout'', introduced in Laravel 5.3, provides a simple, driver based solution for adding full-text search to your Eloquent models. * ''Dusk'', introduced in Laravel 5.4, provides an expressive, easy-to-use browser automation and testing API. * ''Horizon'', introduced in Laravel 5.5, provides a visual dashboard and code-driven configuration for your Laravel powered
Redis Redis (; Remote Dictionary Server) is an in-memory data structure store, used as a distributed, in-memory key–value database, cache and message broker, with optional durability. Redis supports different kinds of abstract data structures, s ...
queues. * ''Telescope'', introduced in Laravel 5.7, provides insight into the requests coming into your application, exceptions, log entries, database queries, queued jobs, mail, notifications, cache operations, scheduled tasks, variable dumps and more. * ''Sanctum'', introduced in Laravel 7.0, provides a featherweight authentication system for SPAs (single page applications), mobile applications, and simple, token based APIs. Firstly called Laravel Airlock, it has been renamed due to a trademark dispute regarding the name ‘Airlock.' * ''Jetstream'', introduced in Laravel 8.0, this providing an application scaffold for Laravel. This package effectively builds on the idea of the UI tools built into past Laravel applications allowing the user to pick between two options, Livewire + Blade or Inertia.js + Vue. This package works with Laravel Fortify. There was some controversy with Taylor Otwell and Laravel users shortly after Laravel's release due to some believing old application scaffolds were being deprecated in favour of Jetstream. It has since been clarified this is not the case. * ''Fortify'', introduced in Laravel 8.0, providing an application scaffold for Laravel. Fortify is used to handle the manage of typical user tasks, building upon typical authentication to provide things like teams and two-factor authentication mechanisms. The package works closely with Laravel Jetstream. Fortify is somewhat based on features which were originally created for Laravel Spark. *''Breeze,'' Laravel Breeze is a minimal, simple implementation of all of Laravel's authentication features, including login, registration, password reset, email verification, and password confirmation. Laravel Breeze's default view layer is made up of simple Blade templates styled with Tailwind CSS. Breeze provides a wonderful starting point for beginning a fresh Laravel application. Laravel's
command-line interface A command-line interpreter or command-line processor uses a command-line interface (CLI) to receive commands from a user in the form of lines of text. This provides a means of setting parameters for the environment, invoking executables and pro ...
(CLI), called ''Artisan'', was initially introduced in Laravel 3 with a limited set of capabilities. Laravel's later migration to a Composer-based architecture allowed Artisan to incorporate different components from the
Symfony Symfony is a free and open-source PHP web application framework and a set of reusable PHP component libraries. It was published as free software on October 18, 2005, and released under the MIT license. Goal Symfony aims to speed up the cre ...
framework, resulting in the availability of additional Artisan features in Laravel 4. The features of Artisan are mapped to different subcommands of the command-line utility, providing functionality that aids in managing and building Laravel-based applications. Common uses of Artisan include managing database migrations and seeding, publishing package assets, and generating
boilerplate code In computer programming, boilerplate code, or simply boilerplate, are sections of code that are repeated in multiple places with little to no variation. When using languages that are considered ''verbose'', the programmer must write a lot of boile ...
for new controllers and migrations; the latter frees the developer from creating proper code
skeletons A skeleton is the structural frame that supports the body of an animal. There are several types of skeletons, including the exoskeleton, which is the stable outer shell of an organism, the endoskeleton, which forms the support structure insid ...
. The functionality and capabilities of Artisan can also be expanded by implementing new custom commands, which, for example, may be used to automate application-specific recurring tasks.


Conferences

''Laracon'' is the official Laravel conference centered around the Laravel framework, covering its development, uses, and related general
software development Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development invo ...
topics. Laracon has taken place in the
United States The United States of America (U.S.A. or USA), commonly known as the United States (U.S. or US) or America, is a country Continental United States, primarily located in North America. It consists of 50 U.S. state, states, a Washington, D.C., ...
,
Europe Europe is a large peninsula conventionally considered a continent in its own right because of its great physical size and the weight of its history and traditions. Europe is also considered a Continent#Subcontinents, subcontinent of Eurasia ...
and online in the past. Typically, the conference happens in the
United States The United States of America (U.S.A. or USA), commonly known as the United States (U.S. or US) or America, is a country Continental United States, primarily located in North America. It consists of 50 U.S. state, states, a Washington, D.C., ...
and
Europe Europe is a large peninsula conventionally considered a continent in its own right because of its great physical size and the weight of its history and traditions. Europe is also considered a Continent#Subcontinents, subcontinent of Eurasia ...
every year. 2017 was the first year a Laracon was held as an online event only. 2018 was the first year a Laracon was held in Australia. Each year the conference has a different variety of sponsors and organizers, but Laravel, Laravel News and UserScape are usually the primary organizers. While the numerous Laracon conferences are officially run, a number of other conferences are run under the name of Laravel Live. Currently, there are yearly held Laravel Live UK and Laravel Live India conferences. While these are not officially run, they have the permission of Taylor Otwell to use the name Laravel.


See also

*
Comparison of web frameworks Two comparisons of web frameworks are available: * Comparison of JavaScript-based web frameworks (front-end) * Comparison of server-side web frameworks This is a comparison of notable web frameworks, software used to build and deploy web applic ...
*
Comparison of web template engines The following table lists the various web template engines used in Web template systems and a brief rundown of their features. See also * Template processor * Web template system * JavaScript templating * :Template engines Java template e ...
*
October October is the tenth month of the year in the Julian and Gregorian calendars and the sixth of seven months to have a length of 31 days. The eighth month in the old calendar of Romulus , October retained its name (from Latin and Greek ''ôct ...
, a
content management system A content management system (CMS) is computer software used to manage the creation and modification of digital content ( content management).''Managing Enterprise Content: A Unified Content Strategy''. Ann Rockley, Pamela Kostur, Steve Manning. New ...
built upon Laravel * Vue.js, a front-end framework that's shipped by default within Laravel
How to create a contact us form in Laravel 9 and store the form data in MySQL database


References


Further reading

* Laravel Design Patterns and Best Practices, Packt, , July 2014, by Arda Kılıçdağı and H. İbrahim Yilmaz


External links

* {{Web frameworks Free software programmed in PHP PHP frameworks Software using the MIT license Web frameworks