Fact-checked by Grok 2 weeks ago

Zend Engine

The Zend Engine is an open-source general-purpose scripting engine that forms the core of the programming language, acting as its and environment to execute PHP code efficiently through interpretation. Developed by Zeev Suraski and Andi Gutmans, it was first released in mid-1999 as the foundational component for PHP 4, replacing earlier PHP engines and providing substantial performance improvements via optimized compilation into an intermediate format executed by a . Subsequent versions have evolved to support advanced features like enhancements, just-in-time () compilation, and significant optimizations, making it integral to PHP's widespread use in . The engine's architecture includes key components such as the Zend Compiler, which parses and compiles into opcodes; the Zend Executor (or ), which interprets and runs these opcodes; and extensions like OPcache for bytecode caching to boost repeated execution speed. Zend Engine 1, used in 4 (released May 2000), introduced and better error handling, enabling PHP's expansion into dynamic web applications. In 2004, Zend Engine 2 debuted with 5, adding robust object-oriented support including visibility modifiers, abstract classes, and interfaces, while improving overall efficiency and extensibility through the Zend API for third-party extensions. A major overhaul came with Zend Engine 3 in 7 (released December 2015), driven by the phpng project led by Dmitry Stogov, Xinchen Hui, and Nikita Popov, which delivered up to twice the performance of 5 via compact data structures, reduced memory usage, and engine refactoring for faster execution—demonstrated by nearly 100% gains in benchmarks by July 2014. This version maintained while laying groundwork for future enhancements. By 8 (initial release November 2020), the engine advanced to version 4, incorporating compilation for dynamic optimization of hot code paths, attributes for metadata, types, and match expressions, further elevating 's speed and expressiveness in modern applications. As of 2025, Zend Engine 4 continues to underpin active versions like 8.3 and 8.4, supporting secure, scalable across global web infrastructures.

History

Origins and Development

The Zend Engine originated from the efforts of Andi Gutmans and Suraski, who were students at the when they began contributing to in 1997 and subsequently initiated a comprehensive rewrite of its core in late 1998 to address performance limitations and enhance modularity for more complex applications. The name "Zend Engine" is a portmanteau of their first names, Zeev and Andi. This rewrite culminated in the first version of the Zend Engine, released in mid-1999 and integrated into 4.0 in May 2000, which fully replaced the original 3 interpreter and introduced a more efficient, object-oriented scripting backend written in C. In parallel, Gutmans and Suraski established Zend Technologies in 1999 to commercialize -related tools, provide support, and maintain ongoing development of the engine. The engine was initially licensed under the Zend Engine License (version 2.00), a permissive open-source agreement that allowed free redistribution and use, with its source code made freely available through php.net to foster community contributions and adoption.

Evolution Through PHP Versions

The Zend Engine 1 was introduced with PHP 4.0 in May 2000, marking a significant advancement as a highly optimized, modular back-end written in C that improved parsing and execution efficiency over previous PHP implementations. This version supported key features such as sessions for state management and output buffering for controlling data flow, enabling more robust web application development. The PHP 4 series, powered by Zend Engine 1, was supported until its end-of-life on August 7, 2008. Zend Engine 2 debuted in 5.0 on July 13, 2004, bringing substantial enhancements to , including visibility modifiers, abstract classes, and interfaces for better code organization. It introduced to manage errors more gracefully and refined the with improvements like type hinting in functions, laying the foundation for modern OOP paradigms. This engine supported the 5.x series from 2004 until the transition to PHP 7, with the final PHP 5.6 branch reaching end-of-life on December 31, 2018. Released alongside PHP 7.0 on December 3, 2015—as part of the phpng project—Zend Engine 3 delivered approximately double the performance of PHP 5.6 through optimizations like improved handling and compact data structures that reduced usage. It incorporated scalar type declarations for function parameters and return values, enhancing code reliability without breaking in most cases. The engine powered PHP 7.x versions through 2020, with notable branches like PHP 7.4 (using Zend Engine 3.4) ending security support on November 28, 2022. Zend Engine 4 arrived with 8.0 on November 26, 2020, introducing just-in-time () compilation to further boost performance, particularly for computationally intensive tasks. It added union types for more flexible parameter and return value specifications, along with attributes for annotation without overhead. This version underpins the ongoing 8.x series, including up to 8.4 released in November 2024, with security support for 8.1 scheduled to conclude on December 31, 2025.

Architecture

Core Components

The Zend Engine's core components form the foundational infrastructure for processing and executing scripts, enabling the language's interpretive capabilities through a . These elements work in concert to handle code analysis, transformation, and runtime execution, ensuring efficient operation within PHP's embedded server environment. The Zend Parser serves as the initial stage in code processing, tokenizing and constructing an (AST) that represents the script's syntactic structure. This component breaks down the input into meaningful tokens—such as keywords, operators, and identifiers—and builds a hierarchical tree to capture relationships between elements, facilitating subsequent analysis without preserving the original linear format. In Zend Engine 3, introduced with 7, the parser was enhanced to support AST-based for improved , though with a modest increase in memory usage during parsing. The Zend Compiler takes the AST generated by the parser and translates it into intermediate opcodes, which are low-level, machine-independent instructions stored in op_arrays. These opcodes define the operations to be performed, including literals for constants and references to variables, optimized for efficient storage and access. The compiler's output enables platform-agnostic execution, with optimizations applied during this phase to minimize redundant instructions. At the heart of the runtime is the Zend Virtual Machine (ZVM), a central interpretive environment that orchestrates the execution of opcodes within a simulated computational . The ZVM maintains the script's execution context, including symbol tables and runtime data, allowing PHP code to run as if on a dedicated while integrating seamlessly with the host operating system. It interprets sequentially, handling dynamic behaviors inherent to PHP such as variable scoping and type juggling. Complementing the ZVM, the Zend Executor functions as the virtual CPU, processing individual opcodes from the op_array to manage , function invocations, and data manipulations. It steps through instructions, updating the execution state with each operation—such as arithmetic computations or conditional branches—and ensures proper handling of exceptions and errors during runtime. This component's design emphasizes thread-safety in multi-request environments, particularly in web server integrations. The Extension API, also known as the Zend Function Module Interface (ZFMI), provides a standardized mechanism for integrating C-based extensions into the , allowing developers to add custom functions, classes, and hooks without altering core code. It defines structures like zend_module_entry for registration, including callbacks for startup, shutdown, and per-request initialization, enabling extensions to interact directly with the parser, , and executor. This interface supports both extensions and deeper extensions, facilitating features like caching or custom data types.

Compilation and Execution Process

The Zend Engine processes PHP scripts through a multi-phase workflow that transforms human-readable source code into executable operations, ensuring efficient interpretation within the PHP runtime. This process begins with the input of a PHP script file or string, which is loaded into memory for analysis. The engine's design separates concerns into distinct stages—parsing, compilation, and execution—to optimize performance and maintainability, as implemented in the core Zend Virtual Machine (VM). In the parsing phase, the lexer scans the source code character by character, breaking it down into a sequence of tokens such as keywords, identifiers, operators, and literals. These tokens are then fed into the parser, which constructs an (AST) representing the syntactic structure of the code, including expressions, statements, and control flows. This AST serves as an that captures the program's logic without yet considering execution details. Errors encountered during parsing, such as syntax violations, are reported immediately to halt further processing and provide diagnostic feedback. The compilation phase takes the and applies optimizations before generating executable . The traverses the to emit an array of (operation codes), known as an op_array, where each represents a low-level with operands referencing variables, constants, or literals stored in a dedicated table. An optimizer can then perform peephole analysis and other transformations on these , such as or removal, to eliminate redundancies and improve efficiency. For instance, a simple variable assignment like $x = 5; compiles to an ASSIGN , where the result operand points to the slot and the source operand references the constant literal 5. Similarly, an addition expression like $result = $a + $b; generates an ADD with operands for $a and $b, followed by an ASSIGN to store the outcome. Control structures, such as loops, may include JMP for unconditional jumps to specified offsets within the op_array. This is platform-independent, allowing the same compiled form to run across different environments without recompilation each time. During the execution phase, the Zend VM's executor iterates sequentially through the op_array, interpreting each opcode and performing the corresponding operation. The executor maintains an execution context with stacks for operands, calls, and variables, dispatching operations like arithmetic (via ADD) or assignments (via ASSIGN) by manipulating these structures. Jumps (via JMP) alter the instruction pointer to enable conditional and looping behaviors. As execution proceeds, output is generated incrementally—for example, through opcodes handling echo or print statements—and sent to the client or buffered as needed. Runtime errors, such as undefined variables or type mismatches, are caught and managed via exception handlers or fatal error signals integrated into the executor loop. Additionally, memory management occurs throughout execution: reference counting tracks object lifecycles, and garbage collection is triggered periodically when cycle detection identifies unreachable references, freeing resources to prevent leaks. This iterative interpretation ensures the script runs to completion, producing the final HTTP response or command-line output.

Key Features

Performance Optimizations

The Zend Engine incorporates several built-in mechanisms to enhance the speed and efficiency of script execution, primarily through optimizations applied during compilation and interpretation. These include peephole optimizations that simplify during the compilation phase, reducing the complexity of opcodes executed by the . For instance, transforms expressions like the addition of two literals (e.g., 2 + 3) into a single literal value (5), eliminating unnecessary operations at . Opcode caching via the extension, introduced in 5.5 with 2, stores precompiled op_arrays in , bypassing the and steps for subsequent requests to the same . This mechanism significantly reduces overhead for repeated executions, as the retrieves and executes the cached directly. Enhancements in 3 ( 7) further refined with better , while preloading capabilities added in 7.4 allow scripts to be loaded into memory proactively. Just-In-Time (JIT) compilation, added in Zend Engine 4 with 8.0, extends OPcache by converting frequently executed ("hot") sequences of opcodes into native at runtime, after a configurable number of executions based on . This approach yields speedups of 20-50% in CPU-intensive workloads, such as numerical computations or algorithmic processing, by avoiding repeated interpretation. JIT operates as an optional layer atop the interpreter, configurable via OPcache settings for tracing or function-level compilation. To minimize memory overhead and accelerate lookups, the Zend Engine employs interned strings, where identical string literals are stored once in a global pool and referenced thereafter, avoiding redundant allocations during compilation. PHP 7's Zend Engine 3 introduced this for more expressions, reducing duplication in op_arrays. Complementing this, the redesigned implementation in PHP 7 optimizes collision resolution and iteration, using a more efficient probing strategy that cuts lookup times and by up to 20% in array-heavy operations compared to PHP 5.6. These optimizations culminated in substantial gains with PHP 7's Zend Engine 3, which delivered up to twice the execution speed of PHP 5.6 across benchmarks involving web applications and synthetic loads, attributed to combined improvements in the , memory handling, and efficiency.

Memory Management and Extensions

The Zend Engine employs as its primary mechanism for , where each value is stored in a zval container that tracks the number of references pointing to it. When the reference count reaches zero, the memory is automatically freed. This approach ensures efficient deallocation without manual intervention for most cases. To optimize performance, the engine implements (COW) semantics, particularly for immutable data types like and arrays. Under COW, multiple can share the same underlying as long as it remains unmodified; a copy is created only upon the first write operation, minimizing unnecessary duplication. For example, assigning a to another does not immediately allocate new , but modifying one triggers a copy of the affected portion. This technique significantly reduces allocation overhead in common scenarios involving read-heavy operations. The Zend Memory Manager (ZendMM) oversees all dynamic allocations within a request, providing a separate from the system's libc allocator to better suit PHP's short-lived, request-bound execution model. It operates on an arena-based system, pre-allocating fixed-size chunks (typically 2 MB each) from the operating system and subdividing them into pages of 4096 bytes for internal use. Small allocations (under 3072 bytes) are served from segregated free lists or "bins" within these arenas to avoid fragmentation and reduce the frequency of system calls like malloc; larger blocks use dedicated pages, while oversized requests fall back to for direct mapping. At the end of a request, all arena-allocated is released in bulk, further enhancing efficiency by batching deallocations. For handling circular references—which reference counting alone cannot resolve, as they prevent counts from reaching zero—the Zend Engine includes a supplementary collector introduced in 5.3. This collector maintains a root buffer to track potential cycles among zvals (such as arrays or objects referencing each other) and periodically scans for collectible when the buffer exceeds a threshold (default: 10,000 elements). Collections are triggered automatically during script execution, with functions like gc_collect_cycles() allowing invocation; however, this process incurs CPU overhead and does not constitute a full mark-and-sweep , focusing solely on cycles to complement the primary refcounting system. Enhancements in 7.3 added statistics for via gc_status(), while 8.3 further expanded these with additional fields for collection times and buffer details, though core limitations in handling non-cyclic leaks persist without explicit developer intervention. The extension system in the Zend Engine enables modular extensibility by allowing third-party or core modules to integrate seamlessly with the . Extensions can be loaded dynamically at using the dl() , which loads shared libraries (.so or .dll files), or statically at by linking them into the binary. Once loaded, extensions register new , classes, constants, and even custom to extend the engine's ; for instance, the extension adds database-specific operations like mysqli_connect() and mysqli_query(), which interface with servers via native C calls. This architecture supports both extensions (user-facing) and deeper Zend extensions (engine hooks for tasks like manipulation), ensuring while permitting performance-critical features to bypass interpreted code. Resources in the Zend Engine represent opaque handles to external entities, such as open , database connections, or network sockets, managed as special zval types to abstract low-level details. Each resource type is registered with a cleanup handler via zend_register_list_destructors_ex(), ensuring automatic release when the script terminates or the resource goes out of —preventing leaks from unclosed handles. For example, a resource created by fopen() is automatically closed at request end if not explicitly fclose()'d, while database connections (e.g., via ) follow similar lifecycle rules, with persistent variants optionally retained across requests for efficiency. This managed approach integrates with the engine's refcounting, where the resource's handle is decremented and freed upon zero references, though developers must avoid circular holds to ensure timely cleanup.

Current Status and Future

Integration with Modern PHP

The Zend Engine 4.x serves as the core interpreter for modern versions, including PHP 8.3, released on November 23, 2023, and PHP 8.4, released on November 21, 2024. These versions receive active support through December 31, 2025, for PHP 8.3 and December 31, 2026, for PHP 8.4, followed by security updates for an additional year in line with the project's branches. This ongoing maintenance ensures stability for production environments running contemporary PHP applications. PHP code written for version 7 remains largely backward-compatible with PHP 8.x under the Zend Engine, allowing many legacy applications to execute without modification, though updates are often required to leverage or avoid conflicts with new language features such as attributes (introduced in PHP 8.0) and match expressions (also PHP 8.0). The engine's design prioritizes gradual migration, minimizing disruptions for developers transitioning from older PHP 7 codebases while encouraging adoption of modern syntax for improved performance and . Deployment of the Zend Engine occurs seamlessly within popular distributions, including , which bundles alongside and for local development, and official binaries available for Windows, , and macOS from the project's site. The complete , encompassing the Zend Engine, is maintained at github.com/php/php-src, enabling custom builds and contributions from the open-source community. As of November 2025, the Zend Engine powers approximately 73.1% of websites with known server-side programming languages, underscoring its dominance in . It forms the foundational runtime for major frameworks such as and , which rely on its execution model to handle , , and object-oriented features in large-scale applications. The engine's licensing has evolved to support both open-source and commercial use, operating under the dual License version 3.01 for the broader distribution and the Zend Engine License, which permits commercial extensions while imposing restrictions on derivative works to protect . This structure, inherited from earlier PHP versions, balances accessibility with safeguards for enterprise deployments.

Ongoing Developments

As of late 2025, the Zend Engine continues to evolve through targeted enhancements in PHP 8.5, which was released in and builds on Zend Engine 4 with optimizations for execution speed and memory handling. Key additions include the pipe operator for chaining method calls, enabling more readable patterns, and new functions such as array_first() and array_last() for efficient data retrieval without loops. These features address code expressiveness while maintaining , with the engine's caching via OPcache further refined to reduce compilation overhead in production environments. Community-driven improvements are facilitated through the PHP Request for Comments (RFC) process, where contributors propose and vote on changes to the Zend Engine. Recent RFCs propose updates to the PHP and Zend Engine licenses, adopting the Modified BSD License (BSD-3-Clause) for greater compatibility with open-source ecosystems starting in PHP 9.0. Additionally, efforts to integrate OPcache more tightly with the core engine aim to simplify maintenance by making it a required component, eliminating optional build configurations. Maintenance efforts involve collaboration between the PHP Development Team and , emphasizing security patches for vulnerabilities in components like OPcache. For instance, 2021.4.3 incorporated fixes for CVEs such as CVE-2025-1735 and CVE-2025-6491 through updated distributions, ensuring stable runtime protection against exploitation. The 2025 PHP Landscape Report highlights ongoing focus on CVE management, with organizations prioritizing upgrades to mitigate risks in legacy deployments. To bridge concurrency gaps in the synchronous , extensions like Swoole provide asynchronous support through coroutine-based processing, allowing non-blocking I/O for high-performance applications without altering the core runtime. Swoole integrates via PECL, enabling task workers for background processing and handling, which has been adopted for scalable services. Looking ahead, discussions around PHP 9.0 suggest potential advancements in the Zend Engine, including refined just-in-time (JIT) compilation and improved async models to enhance concurrency, though no official Zend Engine 5 designation has been announced. Experimental projects exploring PHP compilation to indicate possibilities for edge deployment, but core integration remains exploratory.

References

  1. [1]
    History of PHP and Related Projects - Manual
    Because of the significant changes, the reworked Zend Engine was called Zend Engine 3, succeeding Zend Engine 2 used in PHP 5. Because of the major internal ...History of PHP · Books about PHP · Publications about PHP
  2. [2]
    General Information - Manual - PHP
    PHP 8 is the current generation of PHP, which uses the Zend engine 4 which, among other things, offers many additional OOP features. Can I run several ...
  3. [3]
    Zend engine - PHP Internals Book
    The Zend engine is a set of components that make PHP what it is. The most important Zend engine component is the Zend Virtual Machine.
  4. [4]
    History of PHP - Manual
    The new engine, dubbed 'Zend Engine' (comprised of their first names, Zeev and Andi), met these design goals successfully, and was first introduced in mid 1999.Php Tools, Fi, Construction... · Php 3 ¶ · Php 4 ¶
  5. [5]
    Interview - Zeev Suraski and Andi Gutmans - David Mytton
    Apr 2, 2020 · Zend Technologies was founded in November 1999, about 4.5 years ago (now I feel old!) The plans to develop deployment and performance solutions ...Missing: origins | Show results with:origins
  6. [6]
    Current PHP Versions | The Evolution & History of PHP - Zend
    PHP 5.X Versions. Powered by Zend Engine II, PHP 5 introduced a variety of new features, and offered substantial performance improvements for PHP applications.
  7. [7]
    PHP pioneers Zend Technologies acquired by Rogue Wave Software
    Oct 6, 2015 · They also developed the Zend Engine, an open-source scripting engine that first appeared for PHP 4 in 1999, the same year that Zend Technologies ...
  8. [8]
    PHP License, version 3.0
    This product includes the Zend Engine, freely available at <http://www.zend.com>.Missing: free | Show results with:free
  9. [9]
    Zend License v2.0 | Software Package Data Exchange (SPDX)
    The Zend Engine License, version 2.00 Copyright (c) 1999-2002 Zend Technologies Ltd. All rights reserved. Redistribution and use in source and binary forms.Missing: initial | Show results with:initial
  10. [10]
    Unsupported Branches - PHP
    This page lists the end of life date for each unsupported branch of PHP. If you are using these releases, you are strongly urged to upgrade to a current version ...
  11. [11]
    PHP 7.0.0 Release Announcement
    The PHP development team announces the immediate availability of PHP 7.0.0. This release marks the start of the new major PHP 7 series.Missing: code free
  12. [12]
    PHP: PHP 8.0.0 Release Announcement
    ### Summary of PHP 8.0.0 Features
  13. [13]
    Supported Versions - PHP
    Once the four years of support are completed, the branch reaches its end of life and is no longer supported. A table of end of life branches is available.
  14. [14]
    internals:engine - PHP Wiki
    Apr 3, 2025 · The Zend Engine uses op-arrays with literals, and op-code operands point to thistable. Memory management requires cleanup, and proper resource ...
  15. [15]
    PHP RFC: Abstract syntax tree
    Jul 28, 2014 · This RFC proposes the introduction of an Abstract Syntax Tree (AST) as an intermediary structure in our compilation process.Missing: internals | Show results with:internals
  16. [16]
    PHP and Zend Engine Internals - PHPBuilder
    Apr 28, 2014 · The Zend engine consists of multiple components e.g. a compiler, ZFMI (Zend Function Module Interface) and a virtual CPU or an executor.Missing: core | Show results with:core
  17. [17]
    internals:extensions - PHP Wiki
    Apr 3, 2025 · This sheet explains how extensions work internally in the engine. We'll see how the get loaded, and what different hooks they provide.
  18. [18]
    [PDF] Optimizing PHP Bytecode using Type-Inferred SSA Form - nikic's Blog
    The currently existing optimization pipeline is relatively simplistic: It performs a num- ber of peephole optimizations and additionally also compacts the ...<|control11|><|separator|>
  19. [19]
    OPcache - Manual - PHP
    OPcache ¶. Introduction · Installing/Configuring · Installation · Runtime Configuration · Preloading · OPcache Functions.Opcache_compile_file · Introduction · Installing/Configuring · Installation
  20. [20]
    rfc:jit - PHP
    Jan 28, 2019 · We propose to include JIT in PHP 8 and provide additional efforts to increase its performance and usability.
  21. [21]
    PHP's new hashtable implementation - nikic's Blog
    Dec 22, 2014 · In this article I will provide an overview of the new hashtable implementation and show why it is more efficient than the previous implementation.
  22. [22]
    Zend Engine Performance Improvements - rfc - PHP Wiki
    Apr 13, 2010 · This RFC offers several Zend Engine changes which together make up to 20% performance improvement on synthetic benchmarks and some real-life ...
  23. [23]
    Reference Counting Basics - Manual - PHP
    This second piece of additional information, called "refcount", contains how many variable names (also called symbols) point to this one zval container.Missing: Zend | Show results with:Zend
  24. [24]
    debug_zval_dump - Manual - PHP
    `debug_zval_dump` dumps a string representation of an internal zval structure, useful for debugging Zend Engine or PHP extension implementation details.<|control11|><|separator|>
  25. [25]
    8. Basic PHP Structures - Zend
    The PHP engine doesn't need to perform any reference counting at all. Such strings are used only for reading and may be destroyed only at the end of request ...
  26. [26]
    Zend Memory Manager - PHP Internals Book
    Jun 9, 2017 · Zend Memory Manager, often abbreviated as ZendMM or ZMM, is a C layer that aims to provide abilities to allocate and release dynamic request-bound memory.Missing: arena- | Show results with:arena-
  27. [27]
    11. PHP Memory Management | Zend
    The PHP Memory Manager API looks very much like classical libc malloc API, but it uses separate heap and it is especially optimized for PHP requirements.Missing: Engine | Show results with:Engine<|separator|>
  28. [28]
    PHP: Garbage Collection - Manual
    ### Summary of PHP Garbage Collection
  29. [29]
    Collecting Cycles - Manual - PHP
    Memory leak: meaning you keep a reference to it thus preventing the GC from collecting it. +add a note · Garbage Collection · Reference Counting Basics ...
  30. [30]
    What Is Garbage Collection in PHP And How Do You Make The ...
    Oct 29, 2019 · Incremental Garbage Collection in Ruby 2.2 · What is reference counting · GC Improvements in PHP 7.3.0 · GC improvement (php/php-src).Missing: Engine | Show results with:Engine
  31. [31]
    dl - Manual - PHP
    Loads the PHP extension given by the parameter extension_filename. Use extension_loaded() to test whether a given extension is already available or not.
  32. [32]
    Zend Extensions - PHP Internals Book
    Zend extensions are more complex than PHP extensions, as they got more hooks, and those are much closer to the Zend engine and its Virtual Machine.
  33. [33]
    MySQLi - Manual - PHP
    MySQLi is a PHP extension for MySQL, offering dual procedural and object-oriented interfaces, and functions like `mysqli::begin_transaction` and `mysqli:: ...The mysqli Extension and... · Mysqli · Mysqli::query · Introduction
  34. [34]
    Resources - Manual - PHP
    As resource variables hold special handles to opened files, database connections, image canvas areas and the like, converting to a resource makes no sense.Missing: managed cleanup
  35. [35]
    The Resource type: zend_resource - PHP Internals Book
    The type is used to regroup resources of the same type together. This is about the way resources get destroyed and how they are fetched back from their handle.
  36. [36]
    Persistent Database Connections - Manual - PHP
    Persistent connections are links that do not close when the execution of your script ends. When a persistent connection is requested, PHP checks if there's ...
  37. [37]
    PHP: PHP 8.3.0 Release Announcement
    PHP 8.3 is a major update of the PHP language. It contains many new features, such as explicit typing of class constants, deep-cloning of readonly properties.
  38. [38]
    PHP: PHP 8.4 Release Announcement
    Released! PHP 8.4 is a major update of the PHP language. It contains many new features, such as property hooks, asymmetric visibility, an updated DOM API, ...
  39. [39]
    PHP - endoflife.date
    Oct 25, 2025 · PHP ; 8.3, 1 year and 11 months ago. (23 Nov 2023). Ends in 1 month and 3 weeks. (31 Dec 2025) ; 8.2, 2 years and 11 months ago. (08 Dec 2022).
  40. [40]
    Backward Incompatible Changes - Manual - PHP
    Code that must be compatible with both PHP 7 and PHP 8 can use the following signatures to be compatible with both versions: ReflectionClass::newInstance ...
  41. [41]
    Download XAMPP
    Download. XAMPP is an easy to install Apache distribution containing MariaDB, PHP, and Perl. Just download and start the installer.
  42. [42]
    php/php-src: The PHP Interpreter - GitHub
    For Windows, the PHP binaries can be obtained from windows.php.net. After extracting the archive the *.exe files are ready to use. For other systems, see the ...Pull requests 672 · Issues · Activity · Releases 25
  43. [43]
    Usage statistics of PHP for websites - W3Techs
    PHP is used by 73.1% of all the websites whose server-side programming language we know. Versions of PHP. This diagram shows the percentages of websites using ...PHP version 7 · Ranking · Technology Changes · Content Management
  44. [44]
    Laravel vs. Symfony: Which Is Right for Your Web App? - Zend
    Feb 24, 2025 · In this blog, I compare Laravel vs. Symfony, beginning with an overview of each framework. I then examine the key similarities and differences.
  45. [45]
    PHP License, version 3.01
    Redistribution and use in source and binary forms, with or without modification, is permitted provided that the following conditions are met: 1. Redistributions ...
  46. [46]
    Introducing the PHP Pipe Operator in PHP 8.5 | Zend
    Oct 16, 2025 · The PHP pipe operator is a new feature in PHP 8.5, which releases in November 2025, and it introduces a simpler, more readable way to chain ...
  47. [47]
    What's New in PHP 8.5: A Comprehensive Overview - SensioLabs
    Jun 23, 2025 · Key New Features at a Glance · 1. New Array Functions: array_first() and array_last() · 2. Pipe Operator ( |> ) · 3. New Error and Exception ...<|separator|>
  48. [48]
  49. [49]
    PHP Version History: Timeline & Latest Versions (2025) - Cloudways
    Oct 30, 2025 · Introduction of Zend Engine, improving performance and modularity. PHP 4 (May 2000) – Enhanced Runtime & Superglobals. PHP 4 brought ...<|control11|><|separator|>
  50. [50]
    rfc:php_license_update - PHP
    Jul 10, 2025 · This proposal addresses a longstanding issue within the open source community by publishing new versions of the PHP License and the Zend Engine ...
  51. [51]
    PHP RFC: Make OPcache a non-optional part of PHP
    May 19, 2025 · The main goal of this RFC is simplifying maintenance of PHP by allowing a tighter integration of OPcache and the Zend Engine, avoiding the need ...
  52. [52]
    [PHP-DEV] [RFC] Updating the PHP License - php.internals
    Jul 10, 2025 · - Proposes that PHP 9.0 adopt the Modified BSD License (BSD-3-Clause), replacing the current PHP and Zend Engine licenses. - The Modified BSD ...
  53. [53]
    New Feature History for Zend Server
    For installation instructions, please visit our Zend Server documentation on installing Zend Server. Backported CVE Fixes. Zend Server 2021.3.2 also ...
  54. [54]
    Zend Releases 2025 PHP Landscape Report Highlighting Key ...
    May 6, 2025 · Zend's 2025 PHP Landscape Report is out—uncover trends in version usage, security confidence, and global compliance priorities.
  55. [55]
    Using Swoole and Mezzio for Async PHP Programming - Zend
    Oct 1, 2020 · Learn how to combine Swoole and Mezzio for speedy async programming in PHP applications, including performance benefits with coroutines and ...
  56. [56]
    Async Tasks - zend-expressive-swoole - Zend Framework Docs
    In order to facilitate async processing, Swoole servers provides task worker processes, allowing your application to trigger tasks without the need for an ...Missing: Engine | Show results with:Engine
  57. [57]
    PHP Basics: What Is Swoole? - Zend
    Sep 10, 2020 · Swoole is a coroutine-based asynchronous PHP programming framework. It's developed primarily by Chinese developers working on large-scale applications for the ...
  58. [58]
    PHP 9 Is Coming: Here's What We (Might) Expect - Hector Canovas
    Oct 23, 2025 · PHP 9 Is Coming: Here's What We (Might) Expect · 1. A cleaner, stricter core · 2. The future of JIT · 3. Better async and concurrency models · 4.
  59. [59]
    Compiling PHP to WebAssembly - Wasm Labs
    In this article we will cover different uses cases for PHP, how you can compile it to WebAssembly, and what are the gotchas and issues in this process.