Laravel 4.2
The full change list for this release by running the
php artisan changes
command from a 4.2 installation, or by
viewing
the change file on Github. These notes only cover the major
enhancements and changes for the release.
Note: During the 4.2 release cycle, many small bug fixes and enhancements were incorporated into the various Laravel 4.1 point releases. So, be sure to check the change list for Laravel 4.1 as well!
PHP 5.4 Requirement
Laravel 4.2 requires PHP 5.4 or greater. This upgraded PHP requirement allows us to use new PHP features such as traits to provide more expressive interfaces for tools like Laravel Cashier. PHP 5.4 also brings significant speed and performance improvements over PHP 5.3.
Laravel Forge
Laravel Forge, a new web based application, provides a simple way to create and manage PHP servers on the cloud of your choice, including Linode, DigitalOcean, Rackspace, and Amazon EC2. Supporting automated Nginx configuration, SSH key access, Cron job automation, server monitoring via NewRelic & Papertrail, "Push To Deploy", Laravel queue worker configuration, and more, Forge provides the simplest and most affordable way to launch all of your Laravel applications.
The default Laravel 4.2 installation's
app/config/database.php
configuration file is now
configured for Forge usage by default, allowing for more convenient
deployment of fresh applications onto the platform.
More information about Laravel Forge can be found on the official Forge website.
Laravel Homestead
Laravel Homestead is an official Vagrant environment for developing
robust Laravel and PHP applications. The vast majority of the boxes'
provisioning needs are handled before the box is packaged for
distribution, allowing the box to boot extremely quickly. Homestead
includes Nginx 1.6, PHP 5.6, MySQL, Postgres, Redis, Memcached,
Beanstalk, Node, Gulp, Grunt, & Bower. Homestead includes a simple
Homestead.yaml
configuration file for managing multiple
Laravel applications on a single box.
The default Laravel 4.2 installation now includes an
app/config/local/database.php
configuration file that is
configured to use the Homestead database out of the box, making Laravel
initial installation and configuration more convenient.
The official documentation has also been updated to include Homestead documentation.
Laravel Cashier
Laravel Cashier is a simple, expressive library for managing subscription billing with Stripe. With the introduction of Laravel 4.2, we are including Cashier documentation along with the main Laravel documentation, though installation of the component itself is still optional. This release of Cashier brings numerous bug fixes, multi-currency support, and compatibility with the latest Stripe API.
Daemon Queue Workers
The Artisan queue:work
command now supports a
--daemon
option to start a worker in "daemon mode", meaning
the worker will continue to process jobs without ever re-booting the
framework. This results in a significant reduction in CPU usage at the
cost of a slightly more complex application deployment process.
More information about daemon queue workers can be found in the queue documentation.
Mail API Drivers
Laravel 4.2 introduces new Mailgun and Mandrill API drivers for the
Mail
functions. For many applications, this provides a
faster and more reliable method of sending e-mails than the SMTP
options. The new drivers utilize the Guzzle 4 HTTP library.
Soft Deleting Traits
A much cleaner architecture for "soft deletes" and other "global scopes" has been introduced via PHP 5.4 traits. This new architecture allows for the easier construction of similar global traits, and a cleaner separation of concerns within the framework itself.
More information on the new SoftDeletingTrait
may be
found in the Eloquent
documentation.
Convenient Auth & Remindable Traits
The default Laravel 4.2 installation now uses simple traits for
including the needed properties for the authentication and password
reminder user interfaces. This provides a much cleaner default
User
model file out of the box.
"Simple Paginate"
A new simplePaginate
method was added to the query and
Eloquent builder which allows for more efficient queries when using
simple "Next" and "Previous" links in your pagination view.
Migration Confirmation
In production, destructive migration operations will now ask for
confirmation. Commands may be forced to run without any prompts using
the --force
command.
Laravel 4.1
Full Change List
The full change list for this release by running the
php artisan changes
command from a 4.1 installation, or by
viewing
the change file on Github. These notes only cover the major
enhancements and changes for the release.
New SSH Component
An entirely new SSH
component has been introduced with
this release. This feature allows you to easily SSH into remote servers
and run commands. To learn more, consult the SSH
component documentation.
The new php artisan tail
command utilizes the new SSH
component. For more information, consult the tail
command
documentation.
Boris In Tinker
The php artisan tinker
command now utilizes the Boris REPL if your system
supports it. The readline
and pcntl
PHP
extensions must be installed to use this feature. If you do not have
these extensions, the shell from 4.0 will be used.
Eloquent Improvements
A new hasManyThrough
relationship has been added to
Eloquent. To learn how to use it, consult the Eloquent documentation.
A new whereHas
method has also been introduced to allow
retrieving models based on
relationship constraints.
Database Read / Write Connections
Automatic handling of separate read / write connections is now available throughout the database layer, including the query builder and Eloquent. For more information, consult the documentation.
Queue Priority
Queue priorities are now supported by passing a comma-delimited list
to the queue:listen
command.
Failed Queue Job Handling
The queue facilities now include automatic handling of failed jobs
when using the new --tries
switch on
queue:listen
. More information on handling failed jobs can
be found in the queue
documentation.
Cache Tags
Cache "sections" have been superseded by "tags". Cache tags allow you to assign multiple "tags" to a cache item, and flush all items assigned to a single tag. More information on using cache tags may be found in the cache documentation.
Flexible Password Reminders
The password reminder engine has been changed to provide greater developer flexibility when validating passwords, flashing status messages to the session, etc. For more information on using the enhanced password reminder engine, consult the documentation.
Improved Routing Engine
Laravel 4.1 features a totally re-written routing layer. The API is the same; however, registering routes is a full 100% faster compared to 4.0. The entire engine has been greatly simplified, and the dependency on Symfony Routing has been minimized to the compiling of route expressions.
Improved Session Engine
With this release, we're also introducing an entirely new session engine. Similar to the routing improvements, the new session layer is leaner and faster. We are no longer using Symfony's (and therefore PHP's) session handling facilities, and are using a custom solution that is simpler and easier to maintain.
Doctrine DBAL
If you are using the renameColumn
function in your
migrations, you will need to add the doctrine/dbal
dependency to your composer.json
file. This package is no
longer included in Laravel by default.