Những điều cần biết về học PHP 5.4
PHP 5.4 là 1 phiên bản kế tiếp kể từ PHP 5.3 ( hãy chuẩn bị cho sự ra đời PHP 6(hỗ trợ full Unicode) ngay từ bây giờ ).
PHP 5.4 được tăng cường gỡ bỏ những hàm bị phản đối và tăng 20% tốc độ chạy, cùng với việc giảm bộ nhớ sử dụng !!!
Tìm hiểu về 1 số tính năng và cải tiến :
Một vài tính năng và cải tiếng quan trọng nhất mà mình sẽ trình bày là : traits, cú pháp giản đơn về mảng, thiết lập webserver sử dụng với vài câu lệnh đơn giản, sử dụng $this và truy cập các thành viên của class, kí hiệu <?= và 1 số tính năng khác sẽ xuất hiện trong PHP 5.4
PHP 5.4 cải thiện 1 cách đáng kể khả năng xử lý và sửa hơn 100 lỗi . Những tính năng đã được gỡ bỏ như : register_globals, magic_quotes ( về thời gian) và safe_mode . Và 1 cải tiến giá trị khác là : khả năng hỗ trợ multibyte sẽ được bật mặc định và default_charset sẽ được thay đổi từ ISO-8859-1 to UTF-8
Content-Type: text/html; charset=utf-8 sẽ luôn được bao hàm . Vì thế không cần phải sử dụng nó cũng như thêm 1 số header để có được sự tương thích UTF-8.
Traits
Trait (horizontal reust/multible inheritance) là 1 bộ methods được cấu trúc như class ( nhưng hok thể instantiate ). Trait giúp các nhà phát triển sử dụng lại 1 bộ methods tự các class độc lập 1 cách tự do . Bởi vì PHP là 1 ngôn ngữ thừa kế đơn (single inheritance), 1 subclass có thể thừa kế từ chỉ 1 superclass, đó là nơi Trait phát huy tác dụng !
Ứng dụng lớn nhất của trait là khi nhiều class share cùng 1 hàm. Ví dụ, giả sử bạn đang build 1 website, và cần cả 2 Facebook và Twitter APIs . Chúng ta xây dựng 2 class có chung 1 function/method tên là cURL . Thay vì copy & paste đơn thuần method đó ( để có thể sử dụng trong 2 class) , chúng ta sẽ sử dụng Trait ( copy & paste, theo cách của compiler ). Bằng cách này, chúng ta đã tạo ra 1 source code dễ sử dụng, và tuân thủ nguyên tắc DRY (Don’t Repeat Yourself ).
Ví dụ :
PHP Code:
/** 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; // Xuất tên “Rasmus Lerdorf”
/** Bây giờ hãy tìm hiểu về sự tuyệt vời của cú pháp PHP 5.4 */echo (new Facebook_API)->get('500058753')->name; // Xất tên “Rasmus Lerdorf”$foo = 'get';
echo (new Facebook_API)->$foo('500058753')->name; // và lại xuất tên “Rasmus Lerdorf”echo (new Twitter_API)->get('1/users/show.json?screen_name=rasmus')->name; // và cũng là xuất Rasmus Lerdorf
PHP Code:
trait Net{
public function net()
{
return 'Net';
}
}
trait Tuts{
public function tuts()
{
return 'Tuts';
}
}
class NetTuts{
use Net, Tuts;
public function plus()
{
return '+';
}
}
$o = new NetTuts;
echo $o->net(), $o->tuts(), $o->plus();
echo (new NetTuts)->net(), (new NetTuts)->tuts(), (new NetTuts)->plus(); Xây dựng CLI Webserver
Trong web development, người bạn tốt nhất của PHP là Apache HTTPD Server . Thỉnh thoảng, có thể là quá mức cần thiết khi cài đặt httpd.conf chỉ để sử dụng nó trong 1 môi trường phát triển web , khi bạn chỉ cần 1 web server nhỏ được bắt đầu với chỉ 1 dòng lệnh đơn giản ! Và vì thế PHP 5.4 đến với chức năng CLI Web server
Lưu ý : PHP Web server được xây dựng chỉ cho các nhà phát triển, hok được sử dụng trong mục đích thương mại !
Hướng dẫn ở phía dưới dành cho Window :
Bước 1 : tạo Document root directory, router file và index file .
Đến ổ hệ thống ( ví dụ C:\). Tạo 1 folder tên public_html . Tạo 1 file trong folder này, đặt tên là router.php copy đoạn code dưới đây, và paste nó vào file vừa tạo :
PHP Code:
<?php// router.phpif (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}?>
PHP Code:
<?php// index.phpecho 'Hello Nettuts+ Readers!';?>Tìm include_path ( nằm ở dòng thứ 708 ) . Thêm C:\public_html vào cuối chuỗi ở giữa nháy đôi, phân tách bởi dấu chấm phẩy (;) . Kết quả cuối cùng sẽ như thế này :
PHP Code:
include_path = ".;C:\php\PEAR;C:\public_html" Bước 2 : chạy web server .
Mở command promt ( Window + R, gõ cmd, nhấn enter ) . Bạn sẽ thấy 1 cái gì đó đại loại như :
Mã:
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\nettuts>
Mã:
C:\Documents and Settings\nettuts>cd C:\php C:\php>
Mã:
php -S 0.0.0.0:8080 -t C:\public_html router.php
Mã:
C:\php>php -S 0.0.0.0:8080 -t C:\public_html router.php PHP 5.4.0 Development Server started at Fri Mar 02 09:36:40 2012 Listening on 0.0.0.0:8080 Document root is C:\public_html Press Ctrl-C to quit.
Mã:
http://localhost:8080/index.php
Hello Nettuts+ Readers!
Lưu ý 1 : tạo 1 file php-server.bat với nội dung sau
Mã:
C:\php\php -S 0.0.0.0:8080 -t C:\public_html router.php.
Lưu ý 2 : Sử dụng 0.0.0.0 thay vì localhost nếu bạn dự đoán server của bạn sẽ được truy cập từ internet !
Cú pháp mảng ngắn gọn
PHP 5.4 cung cấp 1 cú pháp mảng ngắn gọn :
PHP Code:
$fruits = array('apples', 'oranges', 'bananas'); // "old" way
// Khai báo mảng như kiểu Javascript$fruits = ['apples', 'oranges', 'bananas'];
// Mảng hok tuần tự$array = [
'foo' => 'bar',
'bar' => 'foo']; Array dereference
Sẽ hok cần biến tạm khi xử lý với mảng .
Ví dụ chúng ta cần lấy tên ở giữa của chuỗi “Alan Mathison Turing “
PHP Code:
echo explode(' ', 'Alan Mathison Turing')[1]; // Xuất Mathison
PHP Code:
$tmp = explode(' ', 'Alan Mathison Turing');
echo $tmp[1]; // Xuất Mathison
PHP Code:
echo end(explode(' ', 'Alan Mathison Turing')); // Xuất Turing Một ví dụ nâng cao :
PHP Code:
function foobar()
{
return ['foo' => ['bar' => 'Hello']];
}
echo foobar()['foo']['bar']; // Hello Bạn có thể trỏ đến các đối tượng từ các hàm vô danh ( được biết với tên closures ) bằng cách sử dụng $this .
PHP Code:
class Foo{
function hello() {
echo 'Hello Nettuts!';
}
function anonymous()
{
return function() {
$this->hello(); // $this kiểu này sẽ hok chạy được trong các phiên bản trước .
};
}
}
class Bar{
function __construct(Foo $o) // đối tượng của class Foo typehint
{
$x = $o->anonymous(); // lấy ra Foo::hello()
$x(); // chạy Foo::hello()
}
}
new Bar(new Foo); // Xuất Hello Nettuts!
PHP Code:
function anonymous()
{
$that = $this; // $that is now $this
return function() use ($that) {
$that->hello();
};
} Mặc kệ setting trong php.ini, short_open_tag , <?= (open PHP tag và echo ) sẽ luôn luôn available . Có nghĩa là bạn có thể an toàn dùng :
PHP Code:
<?=$title?>
PHP Code:
<?php echo $title ?>Kể từ bản này, số nguyên có thể là số thập phân (cơ số 10 ), số thập lục phân ( cơ số 16), số bát phân ( cơ số 8 ) hay nhị phân ( cơ số 2) , được đặt các kí tự + - ở phía trước . Để ngụ ý số bát phân, đặt trước con số với 0 (zero). Để ngụ ý thập lục phân, đặt trước con số với 0x. Để ngụ ý nhị phân, đặt trước với 0b.
Ví dụ: để diễn tả số 31 chúng ta có
PHP Code:
echo 0b11111; // binary, introduced in PHP 5.4echo 31; // duhecho 0x1f; // hexadecimalecho 037; // octal Typehint được sử dụng để tăng cường sức mạnh của PHP . Typehint có thể là array, là object từ PHP 5.1 và là callable từ PHP 5.4 . Các kiểu typehint truyền thống : int hay string sẽ hok được hỗ trợ nữa !!
PHP Code:
function my_function(callable $x)
{
return $x();
}
function my_callback_function(){return 'Hello Nettuts!';}
class Hello{static function hi(){return 'Hello Nettuts!';}}
class Hi{function hello(){return 'Hello Nettuts!';}}
echo my_function(function(){return 'Hello Nettuts!';}); // anonymous functionecho my_function('my_callback_function'); // callback functionecho my_function(['Hello', 'hi']); // class name, static methodecho my_function([(new Hi), 'hello']); // class object, method name $_SERVER[‘REQUEST_TIME_FLOAT’] được thêm vào, với bộ đếm tính tới micro giây ( theo kiểu float ). Điều này rất quan trọng cho các bạn khi muốn tính tg chạy script .
PHP Code:
echo 'Executed in ', round(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'], 2), 's'; Về mặt tổng thể, PHP 5.4 cung cấp 1 số lượng lớn cải tiến .
Bạn nghĩ PHP 5.5 sẽ mang tới cho chúng ta cải tiến nào và bạn mong đợi điều gì ?






0 nhận xét:
Đăng nhận xét