PHP 5.4 को चार महीने पहले प्रकाशित किया गया था, इसलिए शायद PHP के नए संस्करण को देखना जल्दबाजी होगी। फिर भी, मैं उन सभी के लिए बनाना चाहूंगा, जो
आंतरिक मेलिंग सूची में शामिल नहीं हैं, जो PHP 5.5 की तरह दिखेंगे इसकी
एक छोटी सी प्रारंभिक समीक्षा है।
हालांकि, आपको समझने की आवश्यकता है: PHP 5.5 अभी भी विकास के प्रारंभिक चरण में है, इसलिए कोई नहीं जानता कि यह अंत में कैसा दिखेगा। यहां जो कुछ भी लिखा गया है, वह सिर्फ सुझाव है। मुझे यकीन है कि यह सब PHP 5.5 में नहीं होगा, या नहीं होगा, लेकिन इस रूप में नहीं।
तो बहुत उत्साहित मत हो।
अब, आगे की हलचल के बिना, उन सुविधाओं की एक सूची जो PHP 5.5 में काम की जा रही है:
पिछड़ी अनुकूलता
आइए दो बदलावों के साथ शुरू करें जो पहले से ही हिट मास्टर हैं और पिछड़े संगतता को प्रभावित करते हैं (कम से कम कुछ हद तक):
विंडोज एक्सपी और 2003 सपोर्ट को बंद करना
स्थिति: उतरा; जिम्मेदार: पियरे जॉयPHP 5.5 अब Windows XP और 2003 का समर्थन नहीं करता है। ये सिस्टम लगभग दस साल पुराने हैं, इसलिए PHP ने इन्हें छोड़ दिया है।
संशोधक / ई पदावनत है
: landed; : Nikita Popove
preg_replace
PHP, . , , .
deprecated
PHP 5.5.
preg_replace_callback
.
RFC.
:
boolval()
: landed; : Jille TimmermansPHP
strval
,
intval
floatval
.
boolval
. ,
(bool)
, .
hash_pbkdf2()
: landed; : Anthony FerraraPBKDF2 «Password-Based Key Derivation Function 2» , , . , .
RFC.
intl
: landed; : Gustavo André dos Santos Lopesintl. ,
IntlCalendar
,
IntlGregorianCalendar
,
IntlTimeZone
,
IntlBreakIterator
,
IntlRuleBasedBreakIterator
,
IntlCodePointBreakIterator
. intl, , ,
Calendar BreakIterator.
array_column()
: proposed; : Ben Ramseyarray_column
(
array_pluck
), :
<?php
$userNames = array_column($users, 'name');
//
$userNames = [];
foreach ($users as $user) {
$userNames[] = $user['name'];
}
, .
API
: proposed; : Anthony Ferrara( LinkedIn .) , . BCrypt, , ,
sha1
.
,
crypt
. , , API :
<?php
$password = "foo";
//
$hash = password_hash($password, PASSWORD_BCRYPT);
//
if (password_verify($password, $hash)) {
// !
} else {
// !
}
API ,
RFC.
: .
: landed; : Xinchen Hui, . :
<?php
function randomHexString($length) {
$str = '';
for ($i = 0; $i < $length; ++$i) {
$str .= "0123456789abcdef"[mt_rand(0, 15)]; // dereference
}
}
function randomBool() {
return [false, true][mt_rand(0, 1)]; // dereference
}
, , . .
RFC.
empty()
: landed; : Nikita Popovempty()
, . ,
empty($this->getFriends())
. PHP 5.5 . .
RFC.
: proposed; : Ralph SchindlerPHP 5.3 . :
<?php
use Some\Deeply\Nested\Namespace\FooBar;
// , `FooBar`
$reflection = new ReflectionClass('FooBar');
FooBar::class
, :
<?php
use Some\Deeply\Nested\Namespace\FooBar;
// , FooBar::class "Some\\Deeply\\Nested\\Namespace\\FooBar"
$reflection = new ReflectionClass(FooBar::class);
RFC.
: proposed; : Stas Malyshev, , .
RFC:
function create_query($where, $order_by, $join_type='', $execute = false, $report_errors = true) { ... }
$report_errors = false
. :
create_query("deleted=0", "name", default, default, false);
. , , . 12 .
: proposed; : Anthony Ferrara5.4, - . , PHP, .:
Scalar typehints are harder than you think.
PHP 5.5 , ,
.
, , .
123
,
123.0
,
"123"
int
,
" "
. .
function foo(int $i) { ... }
foo(1); // $i = 1
foo(1.0); // $i = 1
foo("1"); // $i = 1
foo("1abc"); // , $i = 1 notice
foo(1.5); // , $i = 1 notice
foo([]); //
foo("abc"); //
Getters setters
: proposed; : Clint PriestgetXYZ()
setXYZ($value)
, . , , :
<?php
class TimePeriod {
public $seconds;
public $hours {
get { return $this->seconds / 3600; }
set { $this->seconds = $value * 3600; }
}
}
$timePeriod = new TimePeriod;
$timePeriod->hours = 10;
var_dump($timePeriod->seconds); // int(36000)
var_dump($timePeriod->hours); // int(10)
, read-only . ,
RFC.
: proposed; : Nikita Popov, . , .
,
range
:
<?php
function *xrange($start, $end, $step = 1) {
for ($i = $start; $i < $end; $i += $step) {
yield $i;
}
}
foreach (xrange(10, 20) as $i) {
// ...
}
xrange
,
range
: , , .
RFC.
-
: proposed; : Nikita Popov:
$firstNames = [foreach ($users as $user) yield $user->firstName];
:
$firstNames = [];
foreach ($users as $user) {
$firstNames[] = $user->firstName;
}
:
$underageUsers = [foreach ($users as $user) if ($user->age < 18) yield $user];
- , , , .
.
, , PHP 5.5. , , PHP 5.5 , , , .
/ ,
.
!