Maintaining a well-organized the composer.json file helps keep PHP projects easier to manage. Sorting packages alphabetically in the require and require-dev sections improves readability and reduces unnecessary merge conflicts when...
Managing scripts from Composer-installed packages is a routine part of maintaining PHP projects. Many packages include executable scripts, such as testing frameworks, code analyzers, or build utilities, which are placed...
PHP offers a flexible ecosystem where extensions expand the core functionality with additional features. In some cases, it is necessary to inspect the configuration details of a specific extension...
Keeping track of software licenses is an important part of maintaining any PHP project. When working with third-party packages, it's essential to understand the licensing terms to ensure compliance and...
PHP provides the socket_set_timeout function, which has historically been used to define read and write timeouts for stream resources such as network connections. This function is an alias of the...
PHP provides a built-in XML parser extension that allows developers to process XML documents using event-based callbacks. Before PHP 8.0, XML parser was represented as a resource, and the xml_parser_free...
PHP provides the Fileinfo extension for detecting MIME types and file information. Before PHP 8.1, the finfo_close function was used to release a file info resource created by finfo_open. Since...
PHP provides the ob_start function, which accepts an optional output buffer handler function. When provided, the handler function receives the buffered output just before it is sent to the client...
First-class callable syntax in PHP (introduced in PHP 8.1) allows us to create an anonymous function (Closure) using the expression CallableExpr(...). It is safer and more refactor-friendly than using string...
Since PHP 8.5, static closures can be used in constant expressions. This includes default values of parameters and properties, constants, and attribute parameters.
Suppose we have a function that takes...