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