What does `if ($a) { echo "true"; } else label: { echo "false"; }` output? Both. The answer lies in PHP's grammar: a label by itself reduces to a statement, so the block after it is no longer part of the else branch.
with 0 CommentPHP 8 alpha1 is out, and the JIT is what everyone asks about: how to use it, what the four digits of opcache.jit mean, and how much faster it is. On Zend/bench.php the JIT cuts runtime by ~60% — plus how to inspect the generated assembly with opcache.jit_debug.
with 0 CommentPHP lowercases every class, function and method name lookup, so strtolower is on everyone's hot path. Here is how PHP 8's locale-independent strtolower uses SSE2 to convert 16 characters per batch — plus the single-comparison rotate trick I kept for Yaf.
with 0 CommentHow PHP objects changed from PHP5 to PHP7: the object's own refcount and handle indirection are gone, zend_object now carries a variable-length properties_table allocated with the object, custom objects must place zend_object last, and COW no longer applies to IS_OBJECT.
with 0 Comment
New in PHP 8: Attributes (Annotations)
PHP 8's attributes in one plain-language post: how doc comments used to require error-prone string parsing, how #[Name(args)] upgrades comments into structured annotations readable via Reflection, and how attribute classes with newInstance() enable "comments as configuration" designs.