當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 南昌OA系統(tǒng) > 南昌網(wǎng)站建設(shè)公司
PHP 5.4 相關(guān)知識(shí)
申請(qǐng)免費(fèi)試用、咨詢(xún)電話(huà):400-8352-114
PHP 5.4來(lái)了,這是自5.3后的又一次主版本晉級(jí)。此次晉級(jí)改動(dòng)較為明顯,刪除了一些過(guò)氣兒的函數(shù),帶來(lái)了高達(dá)20%的速度提拔和更少的內(nèi)存運(yùn)用。新特征與改動(dòng)
此次更新的要害新特征,包羅:新增traits,更精簡(jiǎn)的Array數(shù)組語(yǔ)法,供測(cè)試運(yùn)用的內(nèi)建webserver,可以閉包運(yùn)用的$this指針,實(shí)例化類(lèi)成員拜訪,
PHP 5.4.0 功能大幅提拔, 修復(fù)超越100個(gè)bug. 廢棄了register_globals, magic_quotes以及平安形式。 別的值得一提的是多字節(jié)支撐曾經(jīng)默許啟用了,default_charset從ISO-8859-1曾經(jīng)變?yōu)閁TF-8. 默許發(fā)送“Content-Type: text/html; charset=utf-8”,你再也不需求在HTML里寫(xiě)meta tag,也無(wú)需為UTF-8兼容而傳送額定的header了。
Traits
Traits (橫向重用/多重承繼)是一組構(gòu)造很像“類(lèi)”(但不克不及實(shí)例化)的辦法,它可以閃開(kāi)發(fā)人員在分歧的類(lèi)中輕松地重用辦法。 PHP為單承繼言語(yǔ),子類(lèi)只能承繼一個(gè)父類(lèi),于是Traits來(lái)了。
Traits的最佳使用是多類(lèi)之間可以共享一樣的函數(shù)。打個(gè)比如,我們要做個(gè)網(wǎng)站,需求運(yùn)用Facebook和Twitter的APIs。我們要建 2個(gè)類(lèi),假如是以前,我們需求寫(xiě)一個(gè)cURL的辦法而且復(fù)制/粘貼到兩個(gè)類(lèi)中。目前不必了,運(yùn)用Traits重用代碼吧,此次真正地遵照了 DRY(Don’t Repeat Yourself)準(zhǔn)則。
<span style="COLOR: rgb(0,100,0)">/** cURL wrapper trait */
<span style="COLOR: rgb(0,100,0)"> trait cURL
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> public function curl($url)
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> $ch = curl_init();
<span style="COLOR: rgb(0,100,0)"> curl_setopt($ch, CURLOPT_URL, $url);
<span style="COLOR: rgb(0,100,0)"> curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
<span style="COLOR: rgb(0,100,0)"> $output = curl_exec($ch);
<span style="COLOR: rgb(0,100,0)"> curl_close($ch);
<span style="COLOR: rgb(0,100,0)"> return $output;
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> /** Twitter API Class */
<span style="COLOR: rgb(0,100,0)"> class Twitter_API
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> use cURL; // use trait here
<span style="COLOR: rgb(0,100,0)"> public function get($url)
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> return json_decode($this->curl('http://api.twitter.com/'.$url));
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> /** Facebook API Class */
<span style="COLOR: rgb(0,100,0)"> class Facebook_API
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> use cURL; // and here
<span style="COLOR: rgb(0,100,0)"> public function get($url)
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> return json_decode($this->curl('http://graph.facebook.com/'.$url));
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> $facebook = new Facebook_API();
<span style="COLOR: rgb(0,100,0)"> echo $facebook->get('500058753')->name; // Rasmus Lerdorf
<span style="COLOR: rgb(0,100,0)"> /** Now demonstrating the awesomeness of PHP 5.4 syntax */
<span style="COLOR: rgb(0,100,0)"> echo (new Facebook_API)->get('500058753')->name;
<span style="COLOR: rgb(0,100,0)"> $foo = 'get';
<span style="COLOR: rgb(0,100,0)"> echo (new Facebook_API)->$foo('500058753')->name;
<span style="COLOR: rgb(0,100,0)"> echo (new Twitter_API)->get('1/users/show.json?screen_name=rasmus')->name;
看清楚了嗎?沒(méi)有?那你來(lái)瞅瞅更簡(jiǎn)略的例子
<span style="COLOR: rgb(0,100,0)">trait Hello
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> public function hello()
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> return 'Hello';
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> trait Cichui
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> public function cichui()
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> return ' cichui';
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> class HelloCichui
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> use Hello, Cichui;
<span style="COLOR: rgb(0,100,0)"> public function the_end()
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> return '!';
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> $o = new HelloCichui;
<span style="COLOR: rgb(0,100,0)"> echo $o->hello(), $o->cichui(), $o->the_end();
<span style="COLOR: rgb(0,100,0)"> echo (new Hello)->hello(), (new Cichui)->cichui(), (new HelloCichui)->the_end();
內(nèi)建的Web-Sever
在Web開(kāi)拓中,Apache HTTPD是PHP的最佳拍檔。有時(shí),你開(kāi)拓時(shí)用不上需求裝備httpd.conf的apache大殺器,而只需求一個(gè)可以在敕令行中運(yùn)用的超小型 Webserver. 感激PHP(先感激國(guó)度),PHP 5.4此次內(nèi)建了CLI Web server。(PHP CLI webserver僅供開(kāi)拓運(yùn)用,回絕產(chǎn)物用處)
舉個(gè)栗子(windows平臺(tái)):
步調(diào)一:樹(shù)立web根目次, Router和Index
在硬盤(pán)根目次(比方C盤(pán))樹(shù)立一個(gè)public_html目次,目次里新建一個(gè)router.php文件,把以下代碼復(fù)制粘貼進(jìn)去:
<span style="COLOR: rgb(0,100,0)"> // router.php
<span style="COLOR: rgb(0,100,0)"> if (preg_match('#\.php$#', $_SERVER['REQUEST_URI']))
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> require basename($_SERVER['REQUEST_URI']); // serve php file
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> else if (strpos($_SERVER['REQUEST_URI'], '.') !== false)
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> return false; // serve file as-is
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> ?>
再來(lái)新建一個(gè)index.php文件,復(fù)制粘貼以下代碼:
<span style="COLOR: rgb(0,100,0)"> // index.php
<span style="COLOR: rgb(0,100,0)"> echo 'Hello cichui.com Readers!';
<span style="COLOR: rgb(0,100,0)"> ?>
編纂你的php.ini文件,找到”include_path”一行,把c:\public_html添加進(jìn)去(分號(hào)分隔):
1include_path = ".;C:\php\PEAR;C:\public_html"
存盤(pán)退出,看下一步
步調(diào)二:運(yùn)轉(zhuǎn)Web-Server
切換到php的裝置目次,敲下最要害的敕令—運(yùn)轉(zhuǎn)Web-server
php -S 0.0.0.0:8080 -t C:\public_html router.php
開(kāi)端了嗎?不要封閉窗口,假如歷程封閉Web server也跟著封閉了。
翻開(kāi)閱讀器:拜訪http://localhost:8080/index.php吧,
Hello cichui.com Readers!
看到了吧?對(duì),就是這個(gè)!
提醒1:你可以思索自建一個(gè)php-server.bat的批處置,扔到桌面上今后就可以雙擊啟動(dòng)了。
提醒2:運(yùn)用0.0.0.0而不是localhost,可以包管外網(wǎng)不會(huì)拜訪到你的web serve。
精簡(jiǎn)的Array數(shù)組語(yǔ)法
PHP 5.4為您送上精簡(jiǎn)的array數(shù)組語(yǔ)法:
<span style="COLOR: rgb(0,100,0)"> $fruits = array('apples', 'oranges', 'bananas'); // "old" way
<span style="COLOR: rgb(0,100,0)"> // 學(xué)Javascript的數(shù)組了
<span style="COLOR: rgb(0,100,0)"> $fruits = ['apples', 'oranges', 'bananas'];
<span style="COLOR: rgb(0,100,0)"> // 聯(lián)系關(guān)系數(shù)組
<span style="COLOR: rgb(0,100,0)"> $array = [
<span style="COLOR: rgb(0,100,0)"> 'foo' => 'bar',
<span style="COLOR: rgb(0,100,0)"> 'bar' => 'foo'
<span style="COLOR: rgb(0,100,0)"> ];
當(dāng)然,舊語(yǔ)法照舊有用,我們多了一種選擇。
數(shù)構(gòu)成員拜訪解析(Array dereferencing*)
處置數(shù)組再也不需求暫時(shí)變量了。
假定我們需求獲取Fang Bin Xin的middle name,
<span style="COLOR: rgb(0,100,0)"> echo explode(‘ ‘, ‘Fang Bin Xin’)[1]; // Bin
PHP 5.4之前,我們需求如許:
<span style="COLOR: rgb(0,100,0)"> $tmp = explode(‘ ‘, ‘Fang Bin Xin’);
<span style="COLOR: rgb(0,100,0)"> echo $tmp[1]; // Bin
目前,我們可以如許玩了:
<span style="COLOR: rgb(0,100,0)"> echo end(explode(‘ ‘, ‘Fang Bin Xin’)); // Xin
再來(lái)個(gè)高級(jí)點(diǎn)的例子:
<span style="COLOR: rgb(0,100,0)"> function foobar()
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> return ['foo' => ['bar' => 'Hello']];
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> echo foobar()['foo']['bar']; // Hello
*瓷錘注: Array dereferencing直譯應(yīng)為數(shù)組解除援用,結(jié)果欠安。其實(shí)更精確的翻譯應(yīng)為:“對(duì)函數(shù)返回后果的數(shù)構(gòu)成員拜訪解析支撐”,詳見(jiàn)PHP官方分析。
匿名函數(shù)中的$this
目前,你可以在類(lèi)實(shí)例中經(jīng)過(guò)$this援用一個(gè)匿名函數(shù)(也叫閉包函數(shù))
<span style="COLOR: rgb(0,100,0)">class Foo
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> function hello() {
<span style="COLOR: rgb(0,100,0)"> echo 'Hello Cichui!';
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> function anonymous()
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> return function() {
<span style="COLOR: rgb(0,100,0)"> $this->hello(); // 之前是不成能這么玩的
<span style="COLOR: rgb(0,100,0)"> };
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> class Bar
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> function __construct(Foo $o) // object of class Foo typehint
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> $x = $o->anonymous(); // get Foo::hello()
<span style="COLOR: rgb(0,100,0)"> $x(); // execute Foo::hello()
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> new Bar(new Foo); // Hello Cichui!
其實(shí)以前也能遷就用,就是有點(diǎn)費(fèi)力:
<span style="COLOR: rgb(0,100,0)">function anonymous()
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> $that = $this; // $that is now $this
<span style="COLOR: rgb(0,100,0)"> return function() use ($that) {
<span style="COLOR: rgb(0,100,0)"> $that->hello();
<span style="COLOR: rgb(0,100,0)"> };
<span style="COLOR: rgb(0,100,0)"> }
無(wú)論php.ini中若何裝備,short_open_tag, 也就是 交換以前的了。
支撐二進(jìn)制直接量
八進(jìn)制(oct),前面加0;十六進(jìn)制(hex),前面加0x;二進(jìn)制(bin),目前在前面加0b就可以了
<span style="COLOR: rgb(0,100,0)"> echo 0b11111; // PHP 5.4支撐二進(jìn)制了
<span style="COLOR: rgb(0,100,0)"> echo 31; // 十進(jìn)制
<span style="COLOR: rgb(0,100,0)"> echo 0x1f; // 十六進(jìn)制
<span style="COLOR: rgb(0,100,0)"> echo 037; // 八進(jìn)制
函數(shù)類(lèi)型提醒
自PHP 5.1起,類(lèi)型提醒支撐對(duì)象和數(shù)組,PHP 5.4開(kāi)端支撐callable。
<span style="COLOR: rgb(0,100,0)"> function my_function(callable $x)
<span style="COLOR: rgb(0,100,0)"> {
<span style="COLOR: rgb(0,100,0)"> return $x();
<span style="COLOR: rgb(0,100,0)"> }
<span style="COLOR: rgb(0,100,0)"> function my_callback_function(){return 'Hello Cichui!';}
<span style="COLOR: rgb(0,100,0)"> class Hello{static function hi(){return 'Hello Cichui!';}}
<span style="COLOR: rgb(0,100,0)"> class Hi{function hello(){return 'Hello Cichui!';}}
<span style="COLOR: rgb(0,100,0)"> echo my_function(function(){return 'Hello Cichui!';}); // 閉包函數(shù)
<span style="COLOR: rgb(0,100,0)"> echo my_function('my_callback_function'); // 回調(diào)函數(shù)
<span style="COLOR: rgb(0,100,0)"> echo my_function(['Hello', 'hi']); // 類(lèi)名,靜態(tài)辦法
<span style="COLOR: rgb(0,100,0)"> echo my_function([(new Hi), 'hello']); // 類(lèi)名,辦法名
高精度計(jì)時(shí)器
此次引入了$_SERVER['REQUEST_TIME_FLOAT']數(shù)組變量,微秒級(jí)精度(百萬(wàn)分之一秒,float類(lèi)型)。關(guān)于計(jì)算劇本運(yùn)轉(zhuǎn)工夫會(huì)十分有效:
<span style="COLOR: rgb(0,100,0)"> 1echo 'Executed in ', round(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'], 2)
- 1勇闖全國(guó)電子商務(wù)探索之路
- 2電子電器行業(yè)ERP軟件|深圳電子電器ERP
- 3網(wǎng)站優(yōu)化優(yōu)勢(shì)多多
- 4移動(dòng)pos機(jī)的便捷之處
- 5畢業(yè)兩年SEO網(wǎng)絡(luò)推廣之路反思
- 6域名注冊(cè)基礎(chǔ)知識(shí)
- 7中文域名狂熱未減 市場(chǎng)價(jià)值無(wú)限攀升
- 8合肥最好的網(wǎng)絡(luò)公司告訴大家快速提高網(wǎng)站權(quán)重
- 9探討搜索引擎是如何識(shí)別原創(chuàng)?
- 10數(shù)據(jù)服務(wù)器版與管理平臺(tái)版的區(qū)別
- 11為什么企業(yè)做了百度競(jìng)價(jià),還要繼續(xù)做SEO優(yōu)化
- 12使用進(jìn)銷(xiāo)存管理軟件的理由
- 13挑選網(wǎng)頁(yè)字體類(lèi)型的細(xì)節(jié)
- 14從黑客的身份來(lái)說(shuō)香港服務(wù)器的安全
- 15參考文獻(xiàn)不僅具有學(xué)術(shù)價(jià)值也具有多項(xiàng)其他功能
- 16每三年到指定修理點(diǎn)替換一次溫控器和加熱器
- 17辦公室裝修設(shè)計(jì)地面材料地毯的選擇
- 18確定網(wǎng)站的關(guān)鍵詞的幾個(gè)重要因素
- 19創(chuàng)業(yè)團(tuán)隊(duì)是如何建成的
- 20域名到期后會(huì)發(fā)生什么 不贖回會(huì)怎樣
- 21義烏華睿軟件企業(yè)管理軟件新認(rèn)識(shí)之二
- 22南昌會(huì)計(jì)學(xué)院網(wǎng)站設(shè)計(jì)方案
- 23ERP系統(tǒng)和SCM系統(tǒng)整合的四大方法
- 24季節(jié)性氣候?qū)k公室裝修和家裝的影響都是多種
- 25網(wǎng)站收錄及關(guān)鍵詞排名分析
- 26泛普軟件新站改版中
- 27站長(zhǎng)最常用的兩個(gè)流量統(tǒng)計(jì) 多年使用心得
- 28優(yōu)化網(wǎng)站的方法
- 29寫(xiě)原創(chuàng)文章的技巧
- 30網(wǎng)站建設(shè)公司歸納“九大”行動(dòng)竅門(mén)
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓