PHP5.3 language features_PHP tutorial

WBOY
Release: 2016-07-21 14:52:55
Original
1154 people have browsed it

Performance improvement

The overall performance of php 5.3 has been improved by 5 - 15%

md5() is 10-15% faster
Better stack implementation in the engine
Move Constants to read-only memory
Exception handling process improved (simplified, fewer opcodes)
(require/include)_once improved, remove duplicate open
Smaller binary size & startup size with gcc4

New language features

__DIR__

Before 5.3, in order to obtain the directory of the current script, a function call was required

CODE:
echo dirname( __FILE__); // < PHP 5.3

In 5.3, only a magic constant __DIR__ is needed.

CODE:
echo __DIR__; // > Quickly obtain non-null values ​​in expressions.

CODE:

$a = true ?: false; // true

$a = false ?: true; // true

$a = "" ?: 1; // 1

$a = 0 ?: 2; // 2
$a = array() ?: array(1); // array(1);
$a = strlen("") ? : strlen("a"); // 1

__callStatic()

New magic method __callStatic has been added. Its function is similar to __call, but it is only valid for static methods.

CODE:

class helper {

static function __callStatic($name, $args) {

echo $name.'('.implode(',', $args).' ; 🎜>Call static methods dynamically? Combination of movement and stillness.


CODE:
class helper {
    static function foo() { echo __METHOD__; }
}
$a = "helper";
$b = "foo" ;

$a::$b(); // helper::foo

Late Static Binding

I don’t know how to translate it, maybe it’s easier to understand if I leave the original text. The event processing timing of static methods has changed. It used to be processed during compilation, but now it is processed during execution.


Before PHP 5.3, the following code will output an A, but this is not what we want. The whoami method has been redefined in class B. It should output B to conform to what we take for granted.

CODE:
class A {
public static function whoami() {
echo __CLASS__;

}

public static function identity() {

self:: whoami();

}

}

class B extends A {

public static function whoami() {

echo __CLASS__;
}
}
B:: identity(); // A <-- PHP <5.3

static::whoami() is used in the following code to call static methods. After PHP 5.3, since __CLASS__ is processed during execution, class B can be successfully caught in this example.

CODE:
class A {
public static function whoami() {
echo __CLASS__;
}
public static function identity() {
static:: whoami();
}

}

class B extends A {

public static function whoami() {

echo __CLASS__;
}
}
B:: identity(); // B <-->= PHP 5.3

mysqlnd

mysqlnd becomes the default mysql driver in PHP 5.3. It has the following advantages:

mysqlnd is easier to compile: because it is an integral part of the PHP source tree
mysqlnd is more closely integrated with PHP's internal mechanism and is an optimized mysql driver
mysqlnd saves more memory. Judging from the test results, it is better than the traditional mysql extension saves 40% of memory
mysqlnd is faster
mysqlnd provides rich performance statistics functions
mysqlnd uses PHP license to avoid unnecessary copyright disputes

This change should be made at the same time mysql and pdo_mysql extensions take effect.

What is mysqlnd

mysqlnd is the original php driver of mysql

But PDO_MySQL does not support mysqlnd yet, currently only the mysql(i) extension can be used


http://www.bkjia.com/PHPjc/371455.html

www.bkjia.com

true

http: //www.bkjia.com/PHPjc/371455.html

TechArticle

Performance improvement The overall performance of php 5.3 has been improved by 5 - 15% md5() is 10-15% faster Better stack Implementation in the engine Constants is moved to read-only memory and the exception handling process is improved (simplified,...
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