威尼斯手机平台-电子正规官网登录首页

热门关键词: 威尼斯手机平台,威尼斯登录首页,威尼斯正规官网
命名空间是PHP5.3所带来的最重要的新特性,第一个 PHP 7.4 测试版现在已经面世
分类:威尼斯官网

先是个 PHP 7.4 测验版以后一度冒出,首要特色:

1 PHP 5.3中的新特征 

威尼斯官网 1

  • 支持 GD 库中的 TGA 文件
  • 提供 SQLite3 联机备份 API 支持
  • PHP FFI 扩张今后用来从 PHP 访问 C 函数/变量/构造
  • 预加载作用,品质更改
  • 增强到 Systemd PHP FPM 服务
  • PHP Hash 今后并轨到 PHP 宗旨
  • TLS 1.3 对 OpenSSL 流的匡助以致无数修复

1.1 支持命名空间 (Namespace)

一定,命名空间是PHP5.3所拉动的最爱护的新特征。

在PHP5.3中,则只须要内定差异的命名空间就可以,命名空间的相间符为反斜杆。 

//select.php
<?php          namespace ZendDbTable;          class Select {        } 
?>   

 那样固然其余命名空间下存在名字为Select的类,程序在调用时也不会生出冲突。代码的可读性也是有着加多。 
调用方法:

//call.php  <?php          //namespace ZendDb;          include('select.php');          $s = new ZendDbTableSelect();          $s->test(); 
?>

 

在经过了一个Alpha 版和五个Beta版之后,PHP 5.4 RC1 终于发表了。PHP 5.4满含了有些新的语言特征,并移除了有的不引入应用的意义。此次候选版本发表的指标是,在5.4正规版公布早前,尽量修复已知的和客户提交的Bug,不再增多新的功效,即RC版的作用将和5.4标准版肖似。该版本的校订包涵:未来张开数组和字符串转变时,将时有爆发叁个通报。从前为静默调换。增加对实例中类成员访谈的支撑。其余,该版本还修复了CLI SAPI、Core、Oracle数据库扩充、SPL扩充、Tokenizer扩张以至SAPI中的多量Bug,详细音讯参阅:_5_4_0_RC1.txt下载地址:

本着 PHP 7.4 Beta 1 发行版,有非常多修复、对拜望数组成分和字符串偏移的大括号语法的弃用、各个老化函数的弃用以至创新的 LiteSpeedAPI。

1.2. 资助延迟静态绑定(Late Static Binding)

在PHP5中,大家得以在类中经过self关键字或者__CLASS__来判断或调用当前类。但有三个难点,假如大家是在子类中调用,获得的结果将是父类。因为在持续父类的时候,静态成员就曾经被绑定了。 举例: 

<?php      class A {          public static function who() {              echo __CLASS__;          }          public static function test() {              self::who();          }      }      class B extends A {          public static function who() {               echo __CLASS__;          }      }      B::test(); 

//以上代码输出的结果是: A ; 这和我们的预期不同,我们原来想得到子类的相应结果。 

 
PHP 5.3.0中加进了多个static关键字来援用当前类,即贯彻了延期静态绑定: 

<?php      class A {          public static function who() {              echo __CLASS__;          }          public static function test() {              static::who(); // 这里实现了延迟的静态绑定          }      }      class B extends A {          public static function who() {               echo __CLASS__;          }      }            B::test(); 

//以上代码输出的结果是: B 

关于 PHP 7.4 Beta 的越多详细音信,请参阅 PHP.net。

1.3 支持goto语句

超过57%微机程序设计语言中都协理无条件转向语句goto,当程序实行到goto语句时,即转向由goto语句中的标号提出的程序地方继续实行。固然goto语句有超级大希望会诱致程序流程不明晰,可读性收缩,但在好几情况下具备其独特的惠及之处,比如中断深度嵌套的循环和 if 语句。

<?php   
       goto a;          echo 'Foo';          a:          echo 'Bar';          for($i=0,$j=50; $i<100; $i++) {            while($j--) {              if($j==17) goto end;            }           }          echo "i = $i";          end:          echo 'j hit 17';  

下载地址:

1.4 扶植闭包、拉姆da/Anonymous函数

威尼斯官网,闭包(Closure)函数和Lambda函数的定义来源于于函数编制程序领域。举例JavaScript 是永葆闭包和 lambda 函数的最普遍语言之一。 在PHP中,咱们也得以经过create_function(卡塔尔(قطر‎在代码运转时创建函数。但有二个标题:创设的函数仅在运作时才被编写翻译,而不与别的轮代理公司码同不时候被编写翻译成实践码,因而我们不或许运用相像APC那样的推行码缓存来压实代码推行功能。在PHP5.3中,大家得以运用Lambda/无名氏函数来定义一些目前选取(即用即弃型)的函数,以作为array_map()/array_walk(卡塔尔等函数的回调函数。 

<?php          echo preg_replace_callback('~-([a-z])~', function ($match) {              return strtoupper($match[1]);          }, 'hello-world');          // 输出 helloWorld  
        $greet = function($name)          {              printf("Hello %srn", $name);          };          $greet('World');          $greet('PHP'); 
         //...在某个类中          $callback = function ($quantity, $product) use ($tax, &$total) {             $pricePerItem = constant(__CLASS__ . "::PRICE_" .  strtoupper($product));             $total += ($pricePerItem * $quantity) * ($tax + 1.0);          };          array_walk($products, $callback);  

1.5 新扩展三个魔术点子__callStatic()和__invoke() 

PHP中原来有四个魔术点子__call(卡塔尔国,今世码调用对象的某部不设有的方式时该魔术点子会被自动调用。新增的__callStatic(State of Qatar方法则只用于静态类方法。当尝试调用类中官样文章的静态方法时,__callStatic(卡塔尔魔术点子将被自动调用。 

<?php      class MethodTest {          public function __call($name, $arguments) {              // 参数 $name 大小写敏感              echo "调用对象方法 '$name' " . implode(' -- ', $arguments). "n";          }          /**  PHP 5.3.0 以上版本中本类方法有效  */          public static function __callStatic($name, $arguments) {              // 参数 $name 大小写敏感              echo "调用静态方法 '$name' " . implode(' -- ', $arguments). "n";          }      }          $obj = new MethodTest;      $obj->runTest('通过对象调用');      MethodTest::runTest('静态调用');  // As of PHP 5.3.0   

//以上代码执行后输出如下: 
//调用对象方法'runTest' –- 通过对象调用
//调用静态方法'runTest' –- 静态调用

以函数情势来调用对象时,__invoke(State of Qatar方法将被电动调用。 

<?php      class MethodTest {          public function __call($name, $arguments) {              // 参数 $name 大小写敏感              echo "Calling object method '$name' " . implode(', ', $arguments). "n";          }                    /**  PHP 5.3.0 以上版本中本类方法有效  */          public static function __callStatic($name, $arguments) {              // 参数 $name 大小写敏感              echo "Calling static method '$name' " . implode(', ', $arguments). "n";          }      }      $obj = new MethodTest;      $obj->runTest('in object context');      MethodTest::runTest('in static context');  // As of PHP 5.3.0  

来自:phoronix

1.6 新增Nowdoc语法

用法和Heredoc相似,但利用单引号。Heredoc则必要经过行使双引号来声称。 Nowdoc中不会做其它变量深入分析,极度适合于传递一段PHP代码。 

<?php          // Nowdoc 单引号 PHP 5.3之后支持          $name = 'MyName';          echo <<<'EOT'          My name is "$name".          EOT;          //上面代码输出 My name is "$name". ((其中变量不被解析)          // Heredoc不加引号          echo <<<FOOBAR          Hello World!          FOOBAR;          //或者 双引号 PHP 5.3之后支持          echo <<<"FOOBAR"          Hello World!          FOOBAR;

帮助通过Heredoc来起头化静态变量、类成员和类常量。 

<?php      // 静态变量      function foo()      {          static $bar = <<<LABEL      Nothing in here...      LABEL;      }      // 类成员、常量      class foo      {          const BAR = <<<FOOBAR      Constant example      FOOBAR;                public $baz = <<<FOOBAR      Property example      FOOBAR;      }

1.7 在类外也可选用const来定义常量

//PHP中定义常量通常是用这种方式    define("CONSTANT", "Hello world.");        //并且新增了一种常量定义方式    const CONSTANT = 'Hello World';

1.8 伊利运算符扩展了三个飞跃书写情势

本来格式为是(expr1State of Qatar ? (expr2卡塔尔 : (expr3卡塔尔国 ; 要是expr1结出为True,则再次来到expr2的结果。
PHP5.3新扩展一种书写情势,能够总结中间有些,书写为expr1 ?: expr3 ; 假设expr1结出为True,则重返expr1的结果 

//原格式    $expr=$expr1?$expr1:$expr2    //新格式    $expr=$expr1?:$expr2 

1.9 HTTP状态码在200-399约束内均被认为访谈成功 

1.10支撑动态调用静态方法 

class Test{          public static function testgo()          {               echo "gogo!";          }      }      $class = 'Test';      $action = 'testgo';      $class::$action();  //输出 "gogo!"   

2 PHP5.3中别的值得注意的改观 

1.1 修复了大批量bug 
1.2 PHP品质拉长 
1.3 php.ini中可选取变量 
1.4 mysqlnd进入宗旨扩充 理论上说该增加访谈mysql速度会较在此之前的MySQL 和 MySQLi 扩大快(参见 
1.5 ext/phar、ext/intl、ext/fileinfo、ext/sqlite3和ext/enchant等扩展暗中认可随PHP绑定发表。当中Phar可用于打包PHP程序,相通于Java中的jar机制。

1.6 ereg 正则表明式函数 不再暗中认可同用,请使用速度越来越快的PCRE 正则表明式函数

3 弃用效应

PHP 5.3.0 新扩大了多个错误品级: E_DEPRECATED 和 E_USER_DEPRECATED. 错误等第 E_DEPRECATED 被用来证多美滋(Dumex卡塔尔(قطر‎个函数或者成效已经被弃用. E_USER_DEPRECATED 等第意在申明客商代码中的弃用功用, 近似于 E_USER_ERROR 和 E_USER_WARNING 等级.

上面是被弃用的 INI 指令列表. 使用下边任何命令都将导致 E_DEPRECATED 错误.
define_syslog_variables
register_globals
register_long_arrays
safe_mode
magic_quotes_gpc
magic_quotes_runtime
magic_quotes_sybase
弃用 INI 文件中以 '#' 开始的注释.

弃用函数:
call_user_method() (使用 call_user_func() 替代)
call_user_method_array() (使用 call_user_func_array() 替代)
define_syslog_variables()
dl()
ereg() (使用 preg_match() 替代)
ereg_replace() (使用 preg_replace() 替代)
eregi() (使用 preg_match(卡塔尔(قطر‎ 同盟 'i' 改正符代替卡塔尔
eregi_replace() (使用 preg_replace(卡塔尔(قطر‎ 协作 'i' 改正符替代State of Qatar
set_magic_quotes_runtime(卡塔尔 以致它的外号函数 magic_quotes_runtime()
session_register() (使用 $_SESSION 超全体变量代替State of Qatar
session_unregister() (使用 $_SESSION 超全体变量代替卡塔尔
session_is_registered() (使用 $_SESSION 超全体变量代替卡塔尔(قطر‎
set_socket_blocking() (使用 stream_set_blocking() 替代)
split() (使用 preg_split() 替代)
spliti() (使用 preg_split(卡塔尔 合作 'i' 校勘符代替卡塔尔国
sql_regcase()
mysql_db_query() (使用 mysql_select_db() 和 mysql_query() 替代)
mysql_escape_string() (使用 mysql_real_escape_string() 替代)
废弃以字符串传递区域设置名称. 使用 LC_* 层层常量替代.
mktime() 的 is_dst 参数. 使用新的时区管理函数替代.
弃用的效劳:
弃用经过引用分配 new 的回来值.
调用时传递引用被弃用.


本文由威尼斯手机平台发布于威尼斯官网,转载请注明出处:命名空间是PHP5.3所带来的最重要的新特性,第一个 PHP 7.4 测试版现在已经面世

上一篇:Framework上已有的技术移植到.NET Core,开发者活动上宣布将.NET堆栈基于MIT协议开源 下一篇:威尼斯官网它在二个月内扩充了 4330 万个站点
猜你喜欢
热门排行
精彩图文