Skip to content

Return type declarations in PHP7

Today the maintainers of PHP voted on whether they should add return type declarations in PHP7. And guess what, it passed!

So in PHP7 you can declare this function that guaranties that an array will be returned.


function foo(): array {
    return [];
}

You will be able to add a return type for closures, function, generators and class methods. Code which does not declare a return type will continue to work exactly as it currently does.

Read more

Join 9,500+ smart developers

Get my monthly newsletter with what I learn from running Spatie, building Oh Dear, and maintaining 300+ open source packages. Practical takes on Laravel, PHP, and AI that you can actually use.

No spam. Unsubscribe anytime. You can also follow me on X.

Why objects (usually) use less memory than arrays in PHP

Because the properties for the object are predefined PHP no longer has to store the data in a hashtable, but instead can say that `$foo` is property 0, `$bar` is property 1, `$baz` is property 2 and then just store the properties in a three-element C array.

This means that PHP only needs one hashtable in the class that does the property-name to offset mapping and uses a memory-efficient C-array in the individual objects. Arrays on the other hand need the hashtable for every array.

https://gist.github.com/nikic/5015323

Read more

HTTP based image manipulations

Glide is a wonderfully easy on-demand image manipulation library written in PHP. It’s straightforward API is exposed via HTTP, similar to cloud image processing services like Imgix and Cloudinary. Glide leverages powerful libraries like Intervention Image (for image handling and manipulation) and Flysystem (for file system abstraction).
http://glide.thephpleague.com/

It comes with the ability to secure image URL's using a private signing key. I'm a bit worried about flooding the server but the owner of the package states that

... the cache filesystem + caching in league/flystem (with Redis/Memcache) should (at least this is the case in my testing) result in a speedy response...
There's also a risk that over time your cache will become gigantic. The maintainers of the package are already discussing possible solutions.

Read more

Automating Laravel deployments using Capistrano

Capistrano is a server automation and deployment tool. It makes a whole bunch of servers simultaneously perform actions. This could be deploying our application, or clearing their cache.

Capistrano tells each of our servers to pull the latest branch from Git, perform any necessary build steps, and deploy the application on itself. Setting up this process is what we'll be detailing.

https://www.airpair.com/laravel/posts/automating-laravel-deployments-using-capistrano

If you want to use something simpler, take a look at Deployer.

Read more