The essential news about content management systems and mobile technology. Powered by Perfect Publisher and XT Search for Algolia.
The News Site publishes posts to the following channels: Facebook, Instagram, Twitter, Telegram, Web Push, Tumblr, and Blogger.
Jamie Marsland has been preaching the WordPress gospel for over a decade and has trained thousands of people on blocks, plugins, and more. Through his popular YouTube channel and hands-on courses, Jamie provides incredible tutorials and breaks down the most common misconceptions about building with WordPress.
We’re happy to share that WordPress.com is partnering with Jamie over the next few months to create a series of videos that will show you how to get the most out of your website experience. From exciting new feature announcements to handy tips and tricks to Jamie’s mind-blowing “website re-creations,” we promise you’ll learn something new in every video.
Starting later this week, you’ll see those videos posted to both our own YouTube channel as well as this blog. Stay tuned!
Read more https://wordpress.com/blog/2024/03/12/build-and-beyond-jamie-marsland/
Laravel 11 is now released, including a minimum PHP v8.2, a new Laravel Reverb package, streamlined directory structure, and more...
Laravel Reverb is a new first-party WebSocket server for Laravel applications, bringing real-time communication between client and server. Some of the features of Reverb include.
Blazing Fast
Reverb is fine-tuned for speed. A single server can support thousands of connections and piping data without the delay and inefficiency of HTTP polling.
Seamless Integration
Develop with Laravel's broadcasting capabilities. Deploy with Reverb's first-party Laravel Forge integration. Monitor with baked-in support for Pulse.
Built for Scale
Infinitely increase capacity by utilizing Reverb's built-in support for horizontal scaling using Redis, allowing you to manage connections and channels across multiple servers.
Pusher
Reverb utilizes the Pusher protocol for WebSockets, making it immediately compatible with Laravel broadcasting and Laravel Echo.
On a fresh install, the file count has dropped by ~ 69 files. Nice.
Check out our post on this complete new Laravel 11 Directory Structure
Currently, Laravel includes nine middleware and many you would never customize. However, if you do want to customize them, that is moved to the App/ServiceProvider. For example:
public function boot(): void
{
EncryptCookies::except(['some_cookie']);
}
Most of the things you used to could do in the Kernel you can now do in the Bootstrap/App.
return Application::configure()
->withProviders ()
-›withRouting(
web: __DIR__.'/../routes/web.php'
commands: __DIR__.'/../routes/console.php',
)
->withMiddleware(function(Middleware Smiddleware) {
$middleware->web(append: LaraconMiddleware::class):
})
Model casts are now defined as a method instead of a property.
When defined as a method we can do other things, like call other
methods directly from the casts. Here is an example using a new
Laravel 11 AsEnumCollection
:
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'options'=› AsEnumCollection::of(UserOption::class),
];
}
This aims to streamline the core of the framework since multiple
classes currently have "dd" or "dump" methods. Plus you can use
this Dumpable
trait in your own classes:
class Stringable implements JsonSerializable, ArrayAccess
{
use Conditionable, Dumpable, Macroable, Tappable;
str('foo')->dd();
str('foo')->dump();
Read more about the new Dumpable Trait.
Laravel has a lot of config files, and Laravel 11 removes these,
and all config options cascade down. The .env
has been
expanded to include all the options you'd want to set.
Read more about the config changes.
Laravel 11 includes a new once helper method that ensures you'll always get the same value no matter how many times you call an object method. The once function is helpful when you have some code that you want to ensure only ever runs one time.
When you start a new Laravel app, it comes with some default migrations from 2014 and 2019. These now will come with the dates removed and moved into just two files.
Watch our Instagram Reel
By default, there will be only two route files, console.php and
web.php. API routes will now become opt-in via php artisan
install:api
, giving you the API routes file and Laravel
Sanctum.
The same with websocket broadcasting, php artisan
install:broadcasting
.
Laravel 11 will include a new /up
health route that fires a
DiagnosingHealthEvent
so you can better integrate with
up time monitoring.
In older versions of Laravel, if you changed your
APP_KEY
it could lead to broken data in the database.
Laravel 11 has a new graceful rotation which will NOT break old
encrypted data, using an APP_PREVIOUS_KEYS
comma-delimited list .env variable. It will auto re-encrypt the
data using new key.
The Console Kernel is being removed, and you'll be able to
instead define your console commands right in
routes/console.php
.
Named arguments are not covered by Laravel's backwards compatibility guidelines. They may choose to rename function arguments when necessary in order to improve the Laravel codebase. When calling Laravel methods using named arguments should be done cautiously and with the understanding that the parameter names may change in the future.
Laravel 11 integrates the code behind the "eager load limit" package:
User::select('id', 'name')->with([
'articles' => fn($query) => $query->limit(5)
])->get();
Read more about Eager Load Limit here.
New Artisan commands have been added to allow the quick creation of classes, enums, interfaces, and traits:
php artisan make:class
php artisan make:enum
php artisan make:interface
php artisan make:trait
Along with major updates to Laravel, we'll get a new welcome page when creating a new Laravel application.
Laravel 11 will be released on March 12, 2024
This was an early decision, but Laravel 11 apps require a minimum of PHP 8.2. If you are running an older version of PHP, now is a good time to get that upgraded.
If you use a SQLite database, then Laravel 11 will require SQLite 3.35.0 or greater.
Laravel is no longer dependent on the Doctrine DBAL and registering custom Doctrines types is no longer necessary for the proper creation and alteration of various column types that previously required custom types.
The easiest way to install Laravel 11 is to first set up the Laravel Installer
composer global require laravel/installer
Then run:
laravel new projectname
Laravel Shift is the easiest way to upgrade but you can also follow the upgrade guide in the Laravel docs
For all Laravel releases, bug fixes are provided for 18 months and security fixes are provided for 2 years. For all additional libraries, including Lumen, only the latest major release receives bug fixes.
Version | PHP (*) | Release | Bug Fixes Until | Security Fixes Until |
---|---|---|---|---|
Laravel 9 | 8.0 - 8.2 | February 8th, 2022 | August 8th, 2023 | February 6th, 2024 |
Laravel 10 | 8.1 - 8.2 | Q1 2023 | August 6th, 2024 | February 4th, 2025 |
Laravel 11 | 8.2 | Q1 2024 | August 5th, 2025 | February 3rd, 2026 |
So far, all these features are considered beta for Laravel 11 and are designed to improve your workflow. Things can and probably change, and we will keep this post updated as new features are announced.
The post Laravel 11 is now released! appeared first on Laravel News.
Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.
Read more https://laravel-news.com/laravel-11
Laravel 11 is now released, including a minimum PHP v8.2, a new Laravel Reverb package, streamlined directory structure, and more...
Laravel Reverb is a new first-party WebSocket server for Laravel applications, bringing real-time communication between client and server. Some of the features of Reverb include.
Blazing Fast
Reverb is fine-tuned for speed. A single server can support thousands of connections and piping data without the delay and inefficiency of HTTP polling.
Seamless Integration
Develop with Laravel's broadcasting capabilities. Deploy with Reverb's first-party Laravel Forge integration. Monitor with baked-in support for Pulse.
Built for Scale
Infinitely increase capacity by utilizing Reverb's built-in support for horizontal scaling using Redis, allowing you to manage connections and channels across multiple servers.
Pusher
Reverb utilizes the Pusher protocol for WebSockets, making it immediately compatible with Laravel broadcasting and Laravel Echo.
On a fresh install, the file count has dropped by ~ 69 files. Nice.
Check out our post on this complete new Laravel 11 Directory Structure
Currently, Laravel includes nine middleware and many you would never customize. However, if you do want to customize them, that is moved to the App/ServiceProvider. For example:
public function boot(): void
{
EncryptCookies::except(['some_cookie']);
}
Most of the things you used to could do in the Kernel you can now do in the Bootstrap/App.
return Application::configure()
->withProviders ()
-›withRouting(
web: __DIR__.'/../routes/web.php'
commands: __DIR__.'/../routes/console.php',
)
->withMiddleware(function(Middleware Smiddleware) {
$middleware->web(append: LaraconMiddleware::class):
})
Model casts are now defined as a method instead of a property.
When defined as a method we can do other things, like call other
methods directly from the casts. Here is an example using a new
Laravel 11 AsEnumCollection
:
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
'options'=› AsEnumCollection::of(UserOption::class),
];
}
This aims to streamline the core of the framework since multiple
classes currently have "dd" or "dump" methods. Plus you can use
this Dumpable
trait in your own classes:
class Stringable implements JsonSerializable, ArrayAccess
{
use Conditionable, Dumpable, Macroable, Tappable;
str('foo')->dd();
str('foo')->dump();
Read more about the new Dumpable Trait.
Laravel has a lot of config files, and Laravel 11 removes these,
and all config options cascade down. The .env
has been
expanded to include all the options you'd want to set.
Read more about the config changes.
Laravel 11 includes a new once helper method that ensures you'll always get the same value no matter how many times you call an object method. The once function is helpful when you have some code that you want to ensure only ever runs one time.
When you start a new Laravel app, it comes with some default migrations from 2014 and 2019. These now will come with the dates removed and moved into just two files.
Watch our Instagram Reel
By default, there will be only two route files, console.php and
web.php. API routes will now become opt-in via php artisan
install:api
, giving you the API routes file and Laravel
Sanctum.
The same with websocket broadcasting, php artisan
install:broadcasting
.
Laravel 11 will include a new /up
health route that fires a
DiagnosingHealthEvent
so you can better integrate with
up time monitoring.
In older versions of Laravel, if you changed your
APP_KEY
it could lead to broken data in the database.
Laravel 11 has a new graceful rotation which will NOT break old
encrypted data, using an APP_PREVIOUS_KEYS
comma-delimited list .env variable. It will auto re-encrypt the
data using new key.
The Console Kernel is being removed, and you'll be able to
instead define your console commands right in
routes/console.php
.
Named arguments are not covered by Laravel's backwards compatibility guidelines. They may choose to rename function arguments when necessary in order to improve the Laravel codebase. When calling Laravel methods using named arguments should be done cautiously and with the understanding that the parameter names may change in the future.
Laravel 11 integrates the code behind the "eager load limit" package:
User::select('id', 'name')->with([
'articles' => fn($query) => $query->limit(5)
])->get();
Read more about Eager Load Limit here.
New Artisan commands have been added to allow the quick creation of classes, enums, interfaces, and traits:
php artisan make:class
php artisan make:enum
php artisan make:interface
php artisan make:trait
Along with major updates to Laravel, we'll get a new welcome page when creating a new Laravel application.
Laravel 11 will be released on March 12, 2024
This was an early decision, but Laravel 11 apps require a minimum of PHP 8.2. If you are running an older version of PHP, now is a good time to get that upgraded.
If you use a SQLite database, then Laravel 11 will require SQLite 3.35.0 or greater.
Laravel is no longer dependent on the Doctrine DBAL and registering custom Doctrines types is no longer necessary for the proper creation and alteration of various column types that previously required custom types.
The easiest way to install Laravel 11 is to first set up the Laravel Installer
composer global require laravel/installer
Then run:
laravel new projectname
Laravel Shift is the easiest way to upgrade but you can also follow the upgrade guide in the Laravel docs
For all Laravel releases, bug fixes are provided for 18 months and security fixes are provided for 2 years. For all additional libraries, including Lumen, only the latest major release receives bug fixes.
Version | PHP (*) | Release | Bug Fixes Until | Security Fixes Until |
---|---|---|---|---|
Laravel 9 | 8.0 - 8.2 | February 8th, 2022 | August 8th, 2023 | February 6th, 2024 |
Laravel 10 | 8.1 - 8.2 | Q1 2023 | August 6th, 2024 | February 4th, 2025 |
Laravel 11 | 8.2 | Q1 2024 | August 5th, 2025 | February 3rd, 2026 |
So far, all these features are considered beta for Laravel 11 and are designed to improve your workflow. Things can and probably change, and we will keep this post updated as new features are announced.
The post Laravel 11 appeared first on Laravel News.
Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.
Read more https://laravel-news.com/laravel-11
Read more https://build.prestashop-project.org/news/2024/upcoming-live-update-march-2024/
One of my favorite features in Laravel 11 is the streamlined configuration files. During the development of Laravel 11 all configuration files were removed from the default Laravel installation. However, a few weeks before release, Taylor decided to re-include a slimmed version of the config files in a default Laravel install but left the option to remove any files or options you don't need.
Let's dig a little deeper to understand how this works to avoid mistakes and get the slimmest application possible. After all, the config files can add a lot of noise to your application. You also need to be careful to keep them up-to-date, as they are constantly changing. This combination is why I'm glad to see this feature in Laravel 11.
Internally, Laravel merges your configuration file with a
framework default. So, if your app has a
config/database.php
file, it will be merged with
Laravel's internal config/database.php
file.
What's interesting here is the merge. On the surface, this merges top-level options (a shallow merge). This means you can further slim your configuration files by removing any top-level options you do not use. Again, any options in your configuration file will automatically merge with the Laravel defaults.
Let's look at a quick example using the following
config/app.php
file within a Laravel 11
application:
<?php
return [
'timezone' => 'America/Kentucky/Louisville',
'custom_option' => 'foo'
];
The resulting configuration would be all of the core
app
configuration options (app.name
,
app.env
, app.debug
, etc) with
app.timezone
overwritten and your
app.custom_option
added.
This merge works well for files with top-level options. However, some of the configuration files have nested "driver" options.
Laravel does a bit more when performing this merge. Although it
is not recursive, Laravel will merge some common nested options.
For example, database.connections
,
filesystem.disks
, and more.
With this additional merge, instead of needing to include all
the drivers under database.connections
(since it's a
top-level option), you may slim this section to only the drivers
you use.
For example, if you use the default testing
and
mysql
database drivers but also have a custom
mysql_replica
driver in Laravel 11, your
config/database.php
file may be:
<?php
return [
'connections' => [
'mysql_replica' => [
'driver' => 'mysql',
'url' => env('DB_REPLICA_URL'),
'host' => env('DB_REPLICA_HOST', '127.0.0.1'),
'port' => env('DB_REPLICA_PORT', '3306'),
'database' => env('DB_DATABASE', 'laravel'),
'username' => env('DB_REPLICA_USERNAME', 'root'),
'password' => env('DB_REPLICA_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => env('DB_CHARSET', 'utf8mb4'),
'collation' => env('DB_COLLATION', 'utf8mb4_0900_ai_ci'),
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
]
];
Of course, you are welcome to preserve the entire set of default configuration files with all of their options. But if you like Laravel’s new, slimmer application structure and want to reduce the noise in your configuration files to your true customizations, this is the way to go.
The post Laravel 11 streamlined configuration files appeared first on Laravel News.
Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.
Read more https://laravel-news.com/laravel11-streamlined-configs
Page 15 of 1311