Home > Backend Development > PHP Tutorial > The development history of Zend engine (1)_PHP tutorial

The development history of Zend engine (1)_PHP tutorial

WBOY
Release: 2016-07-15 13:24:56
Original
938 people have browsed it

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(); ?>
Copy after login

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); ?>
Copy after login

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; ?> 
Copy after login

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...
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template