Home > Article > Backend Development > Is this what you expected? Looking at the future of PHP from the draft design blueprint of ZendEngine2.0_PHP Tutorial
Some miscellaneous remarks First of all, the original intention of writing this article. It has been a while since I got the design blueprint document about Zend Engine 2.0 (you can also download it from the address in the reference material and have a look). After reading it, I had the urge to write a review - because according to the document The description of the next generation of PHP will be a language that is more in line with existing object-oriented development habits, at least it will be given more object-oriented features. But the question that comes with it is whether a language like PHP, whose initial goal is rapid Web development, is worth modifying itself to be comprehensive? This issue seems to require some review articles to discuss, and I am willing to put forward my own opinions. But then some busy things brought this impulse back to my stomach little by little. It wasn’t until recently that I thought of it again, so I read the design blueprint document several times, and this is how I came up with this article. (When I first got this English document, I had plans to translate this design blueprint document into Chinese, but considering that first, it is not the final blueprint, second, everyone should develop the habit of reading the original text directly, and third, the translation is always It will inevitably lead to some obscurities, so I will give it up for the time being. However, when I wrote this article, I decided to "take the risk" of translating it. Please feel free to correct me if I can't convey the meaning accurately.) The second is the explanation of the focus of this article. --In this review I will mainly review the object-oriented features that will be greatly enhanced in PHP in the future. If you are a PHP developer, then I guess you should know some of the object-oriented features in the PHP language; but since PHP is generally used in "extreme rapid development environments" (this is a word I coined myself, indicating some Customer-oriented website development is characterized by a very short construction period and unclear customer requirements), so there are not many developers and development projects that really use its object features extensively; in addition, the existing PHP object model is relatively weak compared to C++ and The weakness of Java also limits the use of this feature. However, in future versions of PHP, the focus of modifications will be on the object-oriented model in the language, improving many bad features in the existing version and adding other features. Therefore, discussing the future of PHP focuses on discussing the object-oriented features of PHP. Okay, let's get down to business and take a look at the new features of Zend Engine 2.0. Summarizing the Zend Engine 2.0 design blueprint (draft) It can be very clearly seen from the design blueprint (draft) that the next generation Zend Engine is based on the new object-oriented model. If you have ever used the object-oriented features of the existing PHP 4, you may feel a little awkward while finding a little bit of Java or C++ - not only the lack of object-oriented syntax, but also sometimes you will get unexpected results. Results - This is all due to the less elegant object-oriented model in the existing Zend Engine 1.0 that supports PHP 4. Simply put, the next generation of Zend Engine will move closer to Java and draw heavily on its object-oriented model. Judging from the types of improved features, they can be divided into three categories: The first category is the improvement and enhancement of the existing object-oriented model, including the definition of builders and destructors, and the addition of private member variables and static members. Object-oriented features such as variables, multiple inheritance, and overloading; the second category is the modification, addition and deletion of the control process, such as adding try/catch/throw exception handling mechanisms; the third category is the modification, addition, and deletion of functions, such as Increment function for string offset. (For details of each type of improvement, you can consult the documents listed in the reference materials.) It can be seen that through the first and second types of improvements, PHP is gradually improving itself into an object-oriented programming language. language. But this is where the problem arises: On the positive side, languages with object-oriented features are more welcome in today's programming world (even if the language itself is not built on an object-oriented basis, it can be achieved by adding defined objects, etc. means that the language will not fall behind the trend) - In this sense, Zend Engine 2.0 changes PHP's support for object-oriented from tentative contact now to full support in the future, which seems to be more in line with programming languages The trend of development; in addition, when building enterprise-level applications (which is what PHP is often criticized for now), the use of object-oriented modeling and implementation has become a de facto standard, and this improvement of PHP may Cater to this need and address the weaknesses of the language itself in this area. On the negative side, there seems to be little point in dedicating a new version of PHP to developers that is more Java-like. The reason why PHP is widely used, in addition to source code disclosure and cross-platform, is probably also an important point in adapting to the simple and fast web programming characteristics of Internet website construction.The extremely short learning time, friendly language style (especially if you are familiar with C) and a large number of extended class library functions are enough to prove its power; but if the next version of such a language is transformed into a similar object-oriented language, Not only will a large number of existing developers be at a loss in a short period of time, but it will also be very detrimental to attracting new developers to join - since there is a language like Java, why bother learning PHP? The above is some of my own "objective" analysis - the so-called "objective" means that when writing about the positive aspects, I disguise myself as a loyal supporter of Zend Engine 2.0; when writing about the negative aspects, it is the opposite ( I hope you can feel objective after reading my analysis). However, "objective" actually only pave the way for my "subjective" argument - the key to the problem - what do we expect PHP to be like in the future? In fact, the key to the problem may lie in which direction we expect PHP to develop, or which field PHP will focus on. The reason why PHP is so popular is that it has become able to compete with ASP and JSP when there is almost no commercial support (Zend currently provides support for PHP, but its strength is minuscule compared with Microsoft and Sun.) programming language because it is completely oriented to the real world of fast web programming environments. This situation can be clearly seen in many PHP tutorials - to implement some common web functions, using PHP often means less code and complexity; at the same time, for programming in a specific field, PHP also has extensions The functions of the module are available for use (although there is no commercial support, PHP has the support of many advocates of open source software. They not only contributed to the generation and development of PHP, but also provided various extension module functions.), so that it is very convenient for developers. In other words, more ready-to-use and free function libraries mean less work. All that is required is to consult the function manual and use them properly. PHP's competitors appear to be a bit "pedantic" - not flexible enough but more rigorous. Perhaps the products of large commercial companies are indeed not as easy to use as the masterpieces of hackers. However, in order to adapt to the real fast web programming environment, PHP gave up some things when focusing on convenience and ease of use: such as the writing and packaging of developers' own modules (non-source code level), and object-oriented features (the existing version just does not Full support for some features) and so on - what PHP lacks is what its competitors have (for example, ASP can communicate with COM components, JSP can easily use Java Beans; JSP was born out of Java fully object-oriented languages, etc.), so PHP is often excluded from the shortlist for building enterprise-level applications. The core of the problem has become relatively clear - the current development of PHP has encountered a fork in the road: should it continue to give full play to its characteristics as a fast web programming language, or should it improve and modify itself into a programming language that adapts to the needs of serious business environments? ? How exactly - don't hold out much hope. Judging from the design blueprint of Zend Engine 2.0, the creators and maintainers of PHP seem to have chosen the latter strategy - almost rewriting the object-oriented model of the interpretation engine and strengthening the object-oriented nature of the language. characteristic. I personally think there are certain reasons for this choice: PHP seems to have done a good job in adapting to fast web programming, and it is impossible to change much in this regard based on the existing language architecture (all that can be done is Modify, add or delete some core functions and add more extended function libraries step by step), and PHP must develop... J Most people are aware of the limitations of PHP, and its creators and maintainers know better - if PHP can Gaining traction in enterprise applications would be an even bigger win (perhaps even more profound for open source advocates). The shortcut to improving its competitiveness in this field may be what is presented in the Zend Engine 2.0 design blueprint - adding a new object-oriented model to this relatively traditional process-oriented language, allowing developers to easily adopt object-oriented programming methods. But it is a pity that PHP, which is trying to enter the field of enterprise-level computing, lacks too much - there is not enough commercial support, a large number of extension modules are in the experimental stage and some of them need to be used to take on important tasks in enterprise-level applications. Inadequate planning and support for system architecture, etc., and perhaps most importantly, whether the concept of the business community can accept open source rather than commercially supported programming languages to build entire commercial systems (although Linux applications seem to be showing good prospects, But it’s just a prospect). Even optimistic PHP proponents (such as myself) are still skeptical about using PHP in enterprise computing--even after Zend Engine 2.0 was launched as stated in the blueprint. Therefore, I don’t have much hope for the new version of PHP using Zend Engine 2.0: its application is still in fast web programming environments, such as Internet websites; choosing PHP as the main supporting language for building critical business systems requires a lot of effort. Very cautious.Although Zend Engine 2.0 focuses on strengthening object-oriented features (perhaps the creators and maintainers of PHP will also strongly advocate their use), for most existing PHP developers, writing PHP programs in the current process-oriented style is not easy. will not be affected in any way (Zend Engine 2.0 has also taken into account the issue of backward compatibility very thoughtfully) - that is to say, on the surface, PHP will be more powerful due to being given object-oriented features. In fact, in most development There is no difference between PHP using Zend Engine 2.0 and 1.0 versions (the interpretation engine that supports the current PHP 4) in the hands of readers. Of course, there is still something to look forward to: A fast web programming environment also requires good modeling, and object-oriented design and implementation are much better than process-oriented or page-oriented methods. Some PHP developers (including PHP's creators and maintainers) are already strongly advocating the use of the object-oriented features of the language itself (PEAR is a good example), and Zend Engine 2.0 will bring them good news-better object-oriented Models can be designed and implemented with almost no restrictions using object-oriented design and implementation (current PHP cannot do this due to its extremely incomplete object-oriented support); at the same time, the performance of objects can be improved to a certain extent. The introduction of the exception handling mechanism will have a certain positive impact on PHP projects, which can effectively improve code efficiency and encourage proper error handling. Due to the improvements in the object-oriented model of Zend Engine 2.0, it is more convenient and reasonable for PHP to call external components (such as COM and Java Beans), and the efficiency will also be improved. This improvement may increase the possibility of PHP being used as the front end of heterogeneous systems (such as systems developed with Java) (the domestic minij2ee project is a typical example in this regard). Some advice for PHP developers: First of all, you don't need to worry about the future of PHP - the development skills you have will still be applicable and work well in the new version (this reminds me of Visual Basic in Microsoft .net Embarrassing position - PHP will not be like this). Even if you know nothing about object-oriented, you can still develop in the traditional way (which is also the technique introduced in most books on the market teaching PHP development). Secondly, if you are interested in the object-oriented features of PHP, or have already actively explored it, then PHP in the future will be more suitable for your taste - you can completely use the object-oriented method to analyze the project, and then