php

  • The dump-server keeps var_dump out of the response

    Dumping from inside a JSON endpoint, a queue worker or a middleware corrupts the output you were trying to inspect, so the debugging tool destroys the thing being…

  • hash_hmac is the one to reach for, not hash

    Signing a payload by hashing the secret and the message together is a construction with known weaknesses, and it keeps getting written because it looks obviously correct. HMAC…

  • Collections lazily, with chunk and cursor

    Model::all() on a table with four hundred thousand rows hydrates four hundred thousand objects and then the process dies, having done nothing. chunkById rather than chunk is the…

  • A macro is how you extend a framework class without extending it

    Adding a method to a collection or a response means subclassing, and subclassing a framework class means every place that constructs one has to know about your subclass.…

  • The Responsable interface removes a controller branch

    A controller returning either a view or JSON depending on the request ends up with the same conditional in every action, and the decision has nothing to do…

  • WooCommerce 3.0 deprecated direct property access

    Reading $product->id or $order->billing_email has worked since the plugin existed, because they were public properties on an object wrapping a post. 3.0 makes them private with a magic…

  • The service container resolves callables too

    The container is usually described in terms of constructor injection, so a method needing one dependency for one call ends up either taking it in the constructor or…

  • The 5.5 exception that renders itself

    Custom exceptions have always had to be translated into a response somewhere in the handler, which turns one file into a growing chain of instanceof checks. 5.5 lets…

  • A circuit breaker before the third-party outage

    A payment provider was slow and the whole site went down with it. A timeout bounds one request; it does nothing about how many are waiting at once.

  • Argument count errors are their own exception

    Calling a userland function with too few arguments used to be a warning that let execution continue with the parameter unset, which turned a call-site mistake into a…