Home  >  Article  >  Backend Development  >  PHP 5.4 syntax improvements and deprecated features_PHP Tutorial

PHP 5.4 syntax improvements and deprecated features_PHP Tutorial

WBOY
WBOYOriginal
2016-07-13 10:34:12716browse

PHP 5.4 was finalized this month and is the first major update to PHP since 2009. This version has enhanced the language, including supporting Traits and removing some controversial features.

Traits

Like Java and .NET, PHP uses a single inheritance model. Although this model is sufficient for most use case scenarios, sometimes users also need to place some common boilerplate code in other unrelated classes. (.NET's Dispose method is a good example of this type of boiler-plate code.) To solve this problem, PHP5.4 introduced Traits.

Traits is a collection of solutions that does not belong to any actual class. Users cannot create Trait instances or directly call methods in Traits. Instead, users must merge Traits into actual classes to use them. In terms of priority, Trait methods will override inherited methods with the same name, and methods with the same name in the current merged class will override Trait methods.

Traits have the same priority, so adding two Traits with overlapping method names to the same class is a mistake by default. Of course, this error can be avoided by manually resolving conflicts using the "insteadof" and "as" operators. In addition, the "as" operator can also be used to change the visibility of a Trait.

The methods in Traits can be abstract methods to support partial generalization of Traits; at the same time, Traits can also expose static variables, and each class containing Traits will have a copy of the variable. In addition, properties that have been declared in Traits cannot be declared in the containing class.

Other syntax improvements

Other syntax improvements include:

  • Arrays can now be declared using square brackets, eliminating the need to use the "array" function. The new declaration method has no other impact except being slightly concise;
  • You can now directly access the array value of the function return value. Prior to this, the result of the function return value must first be stored in a temporary variable, such as: $FirstName = GetNames ();
  • Closures in PHP 5.4 can now use the "$this" pointer , this was not possible before;
  • You can now access class members during instantiation, such as: (new CustomerService)->Delete (customerId);
  • Adopt the "0b" prefix Identifies a binary number.

Command Line Web Server

PHP 5.4 provides its own web server that you can start from the command line. This web server is designed to aid development only; it does not replace your production web server.

Deprecated Features

The much-maligned Register Globals have been completely removed from PHP. The feature has been known for its frequent security breaches for a decade. In 2002 this feature was set to be off by default. PHP 5.3, released in 2009, marked this feature as "deprecated", and presumably most developers have stopped using it since then.

Another unpleasant feature that was removed from PHP was Magic Quotes. Magic Quotes are intended to automatically escape strings in an attempt to avoid SQL injection attacks. But because the way string escaping is used is often context-specific, it can cause more problems than it attempts to solve. This feature, like Register Globals, was also marked "deprecated" in 2009.

The break and continue statements in PHP can be followed by a parameter to specify the number of loop levels to jump out of. If no parameters are specified, it will break out of the innermost loop just like VB, C# or Java. Before PHP 5.4, developers could pass a variable to the break statement, but now only constants can be passed.

PHP allows parameters to be passed by reference. In earlier versions, you could indicate that variables were passed by reference by adding decorations to the call site. In PHP 5.4, this option has been removed. In contrast, modern PHP programming requires only specifying pass-by-reference when the function is declared. Unlike C#, you don't need to specify pass-by-reference at both the declaration and the call site.

View the original English text: http://www.infoq.com/news/2012/03/PHP-5.4

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/752330.htmlTechArticlePHP 5.4 was finalized this month. It is the first major update of PHP since 2009. This version has enhanced the language, including supporting Traits and removing some controversial features. Tra...
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