欢迎您光临爱永设计官网!
电话图标 服务热线/微信:13436537174 QQ咨询:276583799

新闻资讯

news

关于 PHP 5.4 你所需要知道的

发表日期:2012-06-03 文章作者:爱永设计  浏览次数:16575 次

PHP 5.4来了,这是自5.3后的又一次主版本升级。此次升级改动较为显著,删除了一些过气儿的函数,带来了高达20%的速度提升和更少的内存使用。

  新特性与改动

  此次更新的关键新特性,包括:新增traits,更精简的Array数组语法,供测试使用的内建webserver,可以闭包使用的$this指针,实例化类成员访问,

  PHP 5.4.0 性能大幅提升, 修复超过100个bug. 废除了register_globals, magic_quotes以及安全模式。 另外值得一提的是多字节支持已经默认启用了,default_charset从ISO-8859-1已经变为UTF-8. 默认发送“Content-Type: text/html; charset=utf-8”,你再也不需要在HTML里写meta tag,也无需为UTF-8兼容而传送额外的header了。

  Traits

  Traits (横向重用/多重继承)是一组结构很像“类”(但不能实例化)的方法,它可以让开发人员在不同的类中轻松地重用方法。 PHP为单继承语言,子类只能继承一个父类,于是Traits来了。

  Traits的最佳应用是多类之间可以共享相同的函数。打个比方,我们要做个网站,需要使用Facebook和Twitter的APIs。我们要建 2个类,如果是以前,我们需要写一个cURL的方法并且复制/粘贴到两个类中。现在不用了,使用Traits重用代码吧,这次真正地遵循了 DRY(Don’t Repeat Yourself)原则。

  /** cURL wrapper trait */

  trait cURL

  {

  public function curl($url)

  {

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, $url);

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  $output = curl_exec($ch);

  curl_close($ch);

  return $output;

  }

  }

  /** Twitter API Class */

  class Twitter_API

  {

  use cURL; // use trait here

  public function get($url)

  {

  return json_decode($this->curl(‘http://api.twitter.com/’.$url));

  }

  }

  /** Facebook API Class */

  class Facebook_API

  {

  use cURL; // and here

  public function get($url)

  {

  return json_decode($this->curl(‘http://graph.facebook.com/’.$url));

  }

  }

  $facebook = new Facebook_API();

  echo $facebook->get(‘500058753’)->name; // Rasmus Lerdorf

  /** Now demonstrating the awesomeness of PHP 5.4 syntax */

  echo (new Facebook_API)->get(‘500058753’)->name;

  $foo = ‘get’;

  echo (new Facebook_API)->$foo(‘500058753’)->name;

  echo (new Twitter_API)->get(‘1/users/show.json?screen_name=rasmus’)->name;

  看明白了吗?没有?那你来瞅瞅更简单的例子

  trait Hello

  {

  public function hello()

  {

  return ‘Hello’;

  }

  }

  trait Cichui

  {

  public function cichui()

  {

  return ‘ cichui’;

  }

  }

  class HelloCichui

  {

  use Hello, Cichui;

  public function the_end()

  {

  return ‘!’;

  }

  }

  $o = new HelloCichui;

  echo $o->hello(), $o->cichui(), $o->the_end();

  echo (new Hello)->hello(), (new Cichui)->cichui(), (new HelloCichui)->the_end();

  内建的Web-Sever

  在Web开发中,Apache HTTPD是PHP的最佳拍档。有时,你开发时用不上需要配置httpd.conf的apache大杀器,而只需要一个可以在命令行中使用的超小型 Webserver. 感谢PHP(先感谢国家),PHP 5.4这次内建了CLI Web server。(PHP CLI webserver仅供开发使用,谢绝产品用途)

  举个栗子(windows平台):

  步骤一:建立web根目录, Router和Index

  在硬盘根目录(比如C盘)建立一个public_html目录,目录里新建一个router.php文件,把以下代码复制粘贴进去:

   // router.php

  if (preg_match(‘#\.php$#’, $_SERVER[‘REQUEST_URI’]))

  {

  require basename($_SERVER[‘REQUEST_URI’]); // serve php file

  }

  else if (strpos($_SERVER[‘REQUEST_URI’], ‘.’) !== false)

  {

  return false; // serve file as-is

  }

  ?>

  再来新建一个index.php文件,复制粘贴以下代码:

  // index.php

  echo ‘Hello cichui.com Readers!’;

  ?>

  编辑你的php.ini文件,找到”include_path”一行,把c:\public_html添加进去(分号分隔):

  1include_path = “.;C:\php\PEAR;C:\public_html”

  存盘退出,看下一步

  步骤二:运行Web-Server

  切换到php的安装目录,敲下最关键的命令—运行Web-server

  php -S 0.0.0.0:8080 -t C:\public_html router.php

  开始了吗?不要关闭窗口,如果进程关闭Web server也跟着关闭了。

  打开浏览器:访问http://localhost:8080/index.php吧,

  Hello cichui.com Readers!

  看到了吧?对,就是这个!

  提示1:你可以考虑自建一个php-server.bat的批处理,扔到桌面上以后就可以双击启动了。

  提示2:使用0.0.0.0而不是localhost,可以保证外网不会访问到你的web serve。

  精简的Array数组语法

  PHP 5.4为您奉上精简的array数组语法:

  $fruits = array(‘apples’, ‘oranges’, ‘bananas’); // “old” way

  // 学Javascript的数组了

  $fruits = [‘apples’, ‘oranges’, ‘bananas’];

  // 关联数组

  $array = [

  ’foo’ => ‘bar’,

  ’bar’ => ‘foo’

  ];

  当然,旧语法依旧有效,我们多了一种选择。

  数组成员访问解析(Array dereferencing*)

  处理数组再也不需要临时变量了。

  假设我们需要获取Fang Bin Xin的middle name,

  echo explode(‘ ‘, ‘Fang Bin Xin’)[1]; // Bin

  PHP 5.4之前,我们需要这样:

  $tmp = explode(‘ ‘, ‘Fang Bin Xin’);

  echo $tmp[1]; // Bin

  现在,我们可以这样玩了:

  echo end(explode(‘ ‘, ‘Fang Bin Xin’)); // Xin

  再来个高级点的例子:

  function foobar()

  {

  return [‘foo’ => [‘bar’ => ‘Hello’]];

  }

  echo foobar()[‘foo’][‘bar’]; // Hello

  *瓷锤注: Array dereferencing直译应为数组解除引用,效果不佳。其实更准确的翻译应为:“对函数返回结果的数组成员访问解析支持”,详见PHP官方解释。

标签:,
将文章分享到..
没有了
相关资讯
最新主题模板
随机新闻
最新网站案例
  • 更多 +我们能做什么

    致力于互联网品牌建设与网络营销,专业领域包括网站建设、网站模板、移动互联网营销、wordpress平台开发等,服务范围涵盖基础的域名服务、主机 服务;企业邮箱、云服务器、网络营销等应用服务,为不同类型的客户提供良好的互联网应用定制解决方案,帮助客户在新的全球化互联网环境中保持优势。

  • 更多 +网站模板优势

  • 更多 +关于爱永设计

    爱永设计工作室一直致力于品牌精美的网页设计、网页制作DIV+CSS布局、JS效果、精美网站模板、标志设计、专业仿站, 低廉的价格,真诚的服务,我们拥有全国各地的客户群体和各行业的成功案例。以一流的服务,出色的网页设计和制作能力,认真严谨的工作态度为客户提供优质满意的服务。期待与您的合作!

Copyright © 2012 - 2024 aysheji.com All Rights Reserved 爱永设计 版权所有
邮箱:aysheji@163.com 在线客服:276583799 模板演示地址:www.aymoban.com 备案号:京ICP备13060102号-3
服务内容: 网页设计 网站建设 网站制作 网站模板 婚庆网站模板 摄影网站 手机网站制作 自适应网站制作