search
HomeBackend DevelopmentPHP TutorialThe development history of Zend engine (1)_PHP tutorial

The development history of Zend engine (1)_PHP tutorial

Jul 15, 2016 pm 01:24 PM
phpzenddevelopobjectbringenginementionedModelofdiscuss

Zeev discussed the object model brought by the Zend Engine, specifically mentioning how it differed from the model in previous versions of PHP. When we developed PHP 3 in the summer of 1997, we had no plans to Make PHP object-oriented. At that time, there were no ideas related to classes and objects. PHP3 is a purely process-oriented language. However, support for classes was added in the PHP3 alpha version on the evening of 1997.8.27. Adding a new Features were given to PHP, which required very little discussion at that time, because there were too few people exploring PHP at that time. So from August 1997, PHP took the first step towards an object-oriented programming language.

Indeed , this is just the first step. Because there are very few relevant ideas in this design, the support for objects is not strong enough. Using objects in this version is just a cool way to access arrays. Instead of using $foo[" bar"], you can use the prettier looking $foo->bar. The main advantage of the object-oriented approach is to store functionality through member functions or methods. The example in Figure 1 shows a typical code block. But it In fact, it is not much different from the approach in Figure 2.

PHP 3 object-oriented programming Object-oriented programming in PHP3

<?php    class Example    {        var $value = "some value";        function PrintValue()        {            print $this->value;        }    }    $obj = new Example();    $obj->PrintValue(); ?>

PHP 3 structural programming PHP3 Structure in PHP3 Programming

<?php    function PrintValue($arr)    {        print $arr["value"];    }    function CreateExample()    {        $arr["value"] = "some value";        $arr["PrintValue"] = "PrintValue";        return $arr;    }    $arr = CreateExample();    //Use PHP's indirect reference    $arr["PrintValue"]($arr); ?>

Above we write two lines of code in the class, or explicitly pass the array to the function. But considering that there is no difference between these two options in PHP3, we can still just put the object Models are used as a "syntactic whitewash" to access arrays.

People who want to use PHP for object-oriented development, especially those who want to use design patterns, quickly find that they hit a wall. Fortunately At that time (PHP3 era) not many people wanted to use PHP for object-oriented development.

PHP4 changed this situation. The new version brought the concept of reference, which allows PHP Different identifiers point to the same address in memory. This means that you can use two or more names to name the same variable, as shown in Figure 3.

PHP 4 references in PHP4 Reference

<?php    $a = 5;    //$b points to the same place in memory as $a $b与$a指向内存中同个地址    $b = &$a;    //we're changing $b, since $a is pointing to 改变$b,指向的地址改变    //the same place - it changes too $a指向的地址也改变    $b = 7;    //prints 7  输出7    print $a; ?> 

Figure 3

Since building a network of objects pointing to each other is the basis of all object-oriented design patterns, this improvement is of great significance. When references allow the establishment For more powerful object-oriented applications, PHP treats objects the same as other types of data, causing great pain to developers. As any PHP4 programmer will tell you, applications will suffer from WTMA (Way Too Many Ampersands&) Syndrome. If you want to build a practical application, you will feel extremely painful, look at the example 4 and you will understand.

1

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/446717.htmlTechArticleZeev discussed the object model brought by the Zend engine, specifically mentioning its compatibility with previous versions of PHP What a difference the model makes. When we developed PHP 3 in the summer of 1997, we had no plans to make PHP...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
PHP Dependency Injection Container: A Quick StartPHP Dependency Injection Container: A Quick StartMay 13, 2025 am 12:11 AM

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Dependency Injection vs. Service Locator in PHPDependency Injection vs. Service Locator in PHPMay 13, 2025 am 12:10 AM

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHP performance optimization strategies.PHP performance optimization strategies.May 13, 2025 am 12:06 AM

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHP Email Validation: Ensuring Emails Are Sent CorrectlyPHP Email Validation: Ensuring Emails Are Sent CorrectlyMay 13, 2025 am 12:06 AM

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

How to make PHP applications fasterHow to make PHP applications fasterMay 12, 2025 am 12:12 AM

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

PHP Performance Optimization Checklist: Improve Speed NowPHP Performance Optimization Checklist: Improve Speed NowMay 12, 2025 am 12:07 AM

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

PHP Dependency Injection: Improve Code TestabilityPHP Dependency Injection: Improve Code TestabilityMay 12, 2025 am 12:03 AM

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

PHP Performance Optimization: Database Query OptimizationPHP Performance Optimization: Database Query OptimizationMay 12, 2025 am 12:02 AM

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft