क्या PHP 5.5 मई देखो की तरह

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 Popov

e preg_replace PHP, . , , . deprecated PHP 5.5. preg_replace_callback. RFC.


:

boolval()

: landed; : Jille Timmermans

PHP strval, intval floatval. boolval. , (bool), .

hash_pbkdf2()

: landed; : Anthony Ferrara

PBKDF2 «Password-Based Key Derivation Function 2» , , . , . RFC.

intl

: landed; : Gustavo André dos Santos Lopes

intl. , IntlCalendar, IntlGregorianCalendar, IntlTimeZone, IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator. intl, , , Calendar BreakIterator.

array_column()

: proposed; : Ben Ramsey

array_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 Popov

empty() , . , empty($this->getFriends()) . PHP 5.5 . . RFC.


: proposed; : Ralph Schindler

PHP 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 Ferrara

5.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 Priest

getXYZ() 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 , , , .

/ , .

!

Source: https://habr.com/ru/post/In147674/


All Articles