kelunik's blog

Parameter Type Widening in PHP 7.2


I have added “Parameter Type Widening” to PHP 7.2. The corresponding PR already got a lot of negative voices saying that it would break a lot of things. Recently there was another blog post saying how bad it is.

The Magic Behind Async PHP

php, amphp, async

Async PHP allows a massive speedup of applications by leveraging non-blocking I/O. It allows making multiple HTTP requests in parallel or any other way of I/O multiplexing. But what’s the magic behind it? How does it actually work?

An Introduction to Generators in PHP

php, amphp

Generators have been added to PHP in version 5.5, yet they have received rather low attention. The PHP 5.5 migration guide introduced them as way to implement simple iterators.

Running PHP tests with the highest and lowest dependencies

php, composer, tests, travis-ci, appveyor

Recently, we added support for the system configuration on Windows to amphp/dns. While we had Travis running for a long while, Travis doesn’t offer Windows builds. I knew AppVeyor was a thing, but I couldn’t find a good example for running PHP on it, so I had a look at a repository of Cees-Jan Kiewiet. Following that repository, we have running tests on Windows now.

Dynamic Developer Environments with Nginx

nginx, quicktip

Did you ever want multiple developer environments without ever changing URLs? Nginx can help you. Unlike Apache, Nginx can be configuered very dynamically. You can use map to map cookie values to document roots.

Typography and Design

css, design, typography

Typography plays an important role when designing, not only for the web. It’s most important for sites like blogs, where users are reading almost all the time.

Mocking Artax with PHPUnit

php, amphp, async, artax, mocking, phpunit, quicktip

Artax is an asynchronous HTTP/1.1 client built on the Amp concurrency framework. Mocking can be great to help testing, especially for testing error cases which can be hard to receive otherwise with real requests / responses.

Let's Encrypt with PHP

php, ssl, encryption, letsencrypt

Let’s Encrypt, the free and automated CA, started late last year into their public beta. They offer a pretty comprehensive client to automate the process of getting SSL clients and installing them. It will soon be moved to a new home at EFF.

Comment on Namecheap's SSL

ssl, encryption, comment

Namecheap published a blog post recently explaining the difference between Namecheap’s paid SSL and other free CAs. They said they want to cover the facts, so I’ll write about the actual facts here.

Getting Started with Aerys

php, amphp, async, aerys

Aerys is a new kind of server which has just become open source after years of work. It’s an application server completely written in PHP and based on the Amp Concurrency Framework. If you’re not familiar with Amp yet, you may want to read my previous blog post “Getting Started with Amp” first.

Getting Started with Aerys WebSockets

php, amphp, async, aerys, websocket

Modern web technology lets us create real time apps within the users browser. WebSockets make this communication dead simple, but traditionally, we couldn’t really write performant WebSocket apps in PHP, because of the single request / response model.

Getting Started with Amp

php, amphp, async, promises

amphp/amp is a non-blocking concurrency framework for PHP. It allows writing non-blocking asynchronous code in a performant and readable way.