[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Что нового в PHP 5.4
RCuPeR
Примеси

Ключевая новинка 5.4 — примеси. Они послужат в PHP заменой мультинаследования. Каждая примесь задается отдельным «классом» через ключевое слово trait. Внутри примеси могут быть определены методы, которые станут доступны в классе, к которому будут подключены примеси. Подключение примесей происходит с помощью языковой конструкции use. Имена примесей задаются через запятую и все их методы становятся доступны внутри класса.

Если имена методов класса и примесей совпадают, то приоритетным методом станет метод класса. К сожалению, в этом случае мы не получим даже Notice.

Примесь всегда имеет доступ к классу, к которому она подключена, через конструкцию parent.

class A {
public function foo() {
return 'foo';
}
}


trait B {
public function bar() {
return parent::foo() . ' bar';
}
}


class C extends A {
use B;
}

$c = new C();
echo $c->foo(); // foo
echo $c->bar(); // foo bar


Нативная поддержка Юникода

Да-да. Больше не придется использовать расширения, вроде multibyte и ему подобных. Все строковые функции отлично понимают юникод.
Свернутый текст
Вот тут-то все обрадуются !


Array dereferencing support

Данная возможность — краеугольный камень для многих PHP разработчиков. Как часто нам нужно дернуть нулевой индекс у метода, который возвращает массив? Насколько сильно бесит то, что эту вроде бы простую операцию приходится записывать в две строки, да еще и переменную создавать? Теперь страдать больше не придется:

function foo() {
return array(1, 2, 3);
}

echo foo()[0]; // 1


Short syntax for arrays

В PHP 5.4 теперь доступна короткая запись массива, без ключевого слова array.

// Раньше приходилось писать так:
$array = array(1, 2, 3);

// Теперь можно так:
$array = [1, 2, 3];

// И даже так:
$array = ['first' => 1, 'second' => 2];


Встроенный веб-сервер

Отныне, вместе с дистрибутивом PHP будет поставляться встроенный веб-сервер, предназначенный исключительно для разработки. Его можно будет запустить из консоли и повесить на какой-нибудь порт:
php -S localhost:8000


Upload progress

Несмотря на то, что в HTML 5 File API реализован механизм отслеживания процесса загрузки файла на сервер (размер загруженной части отдает сам браузер), в PHP 5.4 появится дополнительный источник мониторинга состояния загрузки. Он будет храниться в сессии пользователя в ключе, например, upload_progress_myform и мы в любой момент сможем дернуть его Ajax'ом для захвата мира отрисовки прогресс-бара.

Вызов метода или свойства класса выражением

Еще одно приятное нововведение, которое поможет нам сэкономить строчку кода. Для того, чтобы вызвать свойство или метод класса, не нужно будет больше запоминать его в отдельную переменную.

class A {
public static function foo_bar() {
return '123';
}
}


$foo = 'foo';
$bar = 'bar';

echo A::($foo . '_' . $bar)(); // 123



Scalar type hints

PHP явно идет в сторону строгой типизации. Раньше для автоматической проверки типа в аргументах метода можно было указывать только массивы и имена классов. Теперь такая возможность распространяется на некоторые другие типы: int, float и boolean.

function foo(int $a, bool $b) {
return true;
}



Улучшена производительность @

Оператор @ служит в PHP для отключения вывода ошибок на текущей строке кода. Раньше в высоко нагруженных приложениях использовать @ было невозможно из-за довольно ощутимых тормозов. Поэтому лично я ее больше не использую нигде.

В конце-концов приглушать ошибки — это странно. Ошибки нужно исправлять или ловить Exceptions.

Deleted

Кроме того из PHP наконец-то выпилены register_globals, long_arrays и прочие директивы, заждавшиеся удаления.

Источник

Хабрахабр / Что нового в PHP 5.4 / из песочницы



Спустя 19 минут, 54 секунды (23.01.2012 - 13:10) Winston написал(а):
Цитата (RCuPeR @ 23.01.2012 - 11:51)
Array dereferencing support

Честно говоря не въехал...
Цитата (RCuPeR @ 23.01.2012 - 11:51)
Short syntax for arrays

Радует. На JS похоже smile.gif

Спустя 5 минут, 10 секунд (23.01.2012 - 13:16) RCuPeR написал(а):
Цитата
Честно говоря не въехал...

Прошу прощения. Пропустил строчку.

Цитата
Радует. На JS похоже

Python, Ruby.

Спустя 4 минуты, 12 секунд (23.01.2012 - 13:20) Winston написал(а):
Цитата (RCuPeR @ 23.01.2012 - 12:16)
Прошу прощения. Пропустил строчку.

Теперь понятно smile.gif

Спустя 55 минут, 19 секунд (23.01.2012 - 14:15) caballero написал(а):
можно было просто дать ссылку на Хабр и все

Спустя 5 минут, 31 секунда (23.01.2012 - 14:21) VolDroN написал(а):
Цитата
Array dereferencing support, Scalar type hints, Short syntax for arrays

оо.. наконец!
теперь ждём год пока обновятся хостинги и.т.п. и можно будет использовать всё это.

Спустя 8 минут, 50 секунд (23.01.2012 - 14:30) neadekvat написал(а):
Судя по тому, что еще на 5.3 не все перешли..

Спустя 29 минут, 59 секунд (23.01.2012 - 14:59) Эли4ка написал(а):
круто..интересно много багов и уязвимостей найдут или нет...

Спустя 1 час, 23 минуты, 20 секунд (23.01.2012 - 16:23) Winston написал(а):
Цитата (Эли4ка @ 23.01.2012 - 13:59)
интересно много багов и уязвимостей найдут или нет...

Спустя 1 час, 26 минут, 19 секунд (23.01.2012 - 17:49) inpost написал(а):
RCuPeR
А ты уверен, что ты правильно понял вопрос поддержки юникода?
Вот ты пишешь, что строковые функции сразу будут понимать ютф, то есть strlen будет возвращать не количество байт, а символов в ЮТФ? Мне кажется, ты попутал.
Я когда читал, я это понял так, что mbstring.internal_encoding будет автоматически в стандарте стоять UTF-8, а не то, что сейчас (ISO, кажется). То есть теперь не надо перенастраивать апач, чтобы функции mb_strlen правильно работали с самого начала.

Upload progress - до версии 5.4 догадаться не могли, что это практически на любом сайте было бы полезно!

Спустя 11 минут, 9 секунд (23.01.2012 - 18:00) caballero написал(а):
Цитата
Я когда читал, я это понял так, что mbstring.internal_encoding будет автоматически в стандарте стоять UTF-8, а не то, что сейчас

именно так

Цитата
Upload progress

гораздо проще была бы нормальная поддержка браузеоами чем пинать сервер чтобы показать это на клиенте

Спустя 5 минут, 48 секунд (23.01.2012 - 18:06) alex12060 написал(а):
Все так обрадовались этому, но опять-же, было бы хорошо объявить о том, что 5.4 должен был выйти 19 января 2012 года, хотя так и не вышел до сих пор. Что-ж, будем ждать smile.gif

Спустя 1 минута, 43 секунды (23.01.2012 - 18:08) Игорь_Vasinsky написал(а):
Цитата
https://bugs.php.net/search.php?boolean=0&l...=All&phpver=5.4
одни русско-именные баго-искатели biggrin.gif

Спустя 15 минут, 41 секунда (23.01.2012 - 18:23) inpost написал(а):
caballero
Ну значит на хабре не-до-программист, который не понял смысла слов, или не смог их перевести адекватно smile.gif
Я только не понял вот что, нафига аяксом дёргать параметры... клиент отправляет запрос на сервер, заливается файл, во время заливки файла на сервер ПОСТОЯННОЕ СОЕДИНЕНИЕ открыто. Что мешает этим же соединением и пользоваться, чтобы получать % загруженных данных. Ты предлагаешь перехватывать % "отправленных данных на сервер", но с таким же успехом этот же % может и сервер возвращать пуллингом, допустим каждую 1 сек о % полученных данных сервером.
Вместо этого они предлагают Аяксом дёргать сервер (отдельными соединениями) на проверку этих же загруженных данных. Мне кажется, что бред.

alex12060
Задержка говорит о качестве.

Спустя 6 часов, 22 минуты, 2 секунды (24.01.2012 - 00:46) neadekvat написал(а):
Решил тут почитать кое-что. И нашел вот такую интересную вещь:
Цитата
<?= is now always available regardless of the short_open_tag setting"

Цитата
<?= теперь доступно всегда, независимо от значения директивы short_open_tag.

То есть, я так понимаю, убит последний (если не единственный) аргумент против подобного синтаксиса. Неужто обратно переучиваться - ведь так действительно удобнее. Может кто-нибудь представить аргумент против такой записи, который я упустил?

Спустя 24 минуты, 55 секунд (24.01.2012 - 01:10) inpost написал(а):
neadekvat
Всё классно, теперь можно использовать с чистой совестью smile.gif Хоть и удобно, но сложно будет переучиться.

Спустя 3 минуты, 15 секунд (24.01.2012 - 01:14) neadekvat написал(а):
Сначала надо дождаться выхода и распространения по хостерам. К тому же, это, кажется, RC, т.е. ждать еще чутка дольше.

Спустя 2 минуты, 56 секунд (24.01.2012 - 01:17) inpost написал(а):
neadekvat
Но это будет в 100 раз быстрее, чем HTML 5 smile.gif

Спустя 8 минут, 29 секунд (24.01.2012 - 01:25) UnWind написал(а):
Мде... Конечно радостно за то, что register_globas выпнули.
за php сервер более менее (Хотя и раньше все устраивало).
Ну и за классы... Остальное на мой взгляд - бредятина...
Я ожидал чего то более существенного и логичного в новой версии. dry.gif

Спустя 4 минуты, 25 секунд (24.01.2012 - 01:30) neadekvat написал(а):
Цитата (UnWind @ 24.01.2012 - 02:25)
Остальное на мой взгляд - бредятина

Например?

Спустя 59 минут, 25 секунд (24.01.2012 - 02:29) Invis1ble написал(а):
ждем 2020-го года и начинаем писАть под 5.4 biggrin.gif


_____________
Гнусный социопат с комплексом Бога.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.