Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
// Set y to the value of x if x is NOT null; otherwise, // if x = null, set y to -1. int y = x ?? -1; // Assign i to return value of the method if the method's result // is NOT null; otherwise, if the result is null, set i to the // default value of int. int i = GetNullableInt() ?? default(int);
$action = $_POST['action'] ?: 'index';
$action = @$_POST['action'] ?: 'index';
Итерация по массиву при помощи foreach() больше не сдвигает внутренний указатель массива, который можно получать и изменять при помощи функций current()/next()/reset() и им подобных.
$array = [1,2,3,4,5];
next($array);
var_dump(current($array)); // 2
foreach ($array as $item) {
continue; // iterate over array
}
var_dump(current($array)); // 2. В PHP 5.5 будет FALSE
зачем алгоритму сортировки знать больше, меньше или равно, если достаточно сравнения <Заинтриговал ваш вопрос, поэтому провел небольшое расследование. Похоже, что сейчас PHP использует свою реализацию алгоритма Quicksort, в котором отдельно не используется информация о равенстве сравниваемых элементов. Но ранее (PHP 4) он использовал стандартную Си функцию qsort из stdlib, которая, в качестве одного из аргументов, как раз принимает функцию сравнения, возвращающую -1,0 или 1.

Добавлен оператор "??" (Null coalescing operator), позволяющий проверить переменную на существование
В качестве значения констант, объявляемых через define() теперь можно указывать массивы.
Синтаксис конструкторов в стиле PHP 4 (имя метода конструктора совпадает с именем класса) теперь считается устаревшим.
Удалена INI директива «asp_tags
Добавлена поддержка type-hint'ов для скалярных типов. Ранее контроль типов был возможен только для классов, интерфейсов, массивов и типа callable.
где обещанная строгая типизация?
<?php
declare(strict_types=1);
function foo(string $bar) : string {
return $bar . $bar;
}
foo(123); // error
Здесь подразумевается closure или строку и массив тоже можно подсунуть под видом callable?
<?php
interface FooCallback {
public function __call(string $foo, string $bar) : string;
}
function foo(FooCallback $foo) : string {
return $foo('foo', 'bar');
}
foo(new class implements FooCallback {
public function __call(string $foo, string $bar) : string {
return $foo . $bar;
}
});
foreach($a as $k => $v) {
$a[k] = $v+1;
}
$a = [0, 1, 2];
foreach ($a as $item) {
if ($item === 1) {
$a[2] = 3; // Изменяем следующий элемент
$a[] = 4; // Добавляем элемент в конец
// $a теперь равно [0, 1, 3, 4], но цикл по прежнему выдает 0, 1, 2.
};
echo $item, ' ';
};
print_r($a);
Миграция кода — не проблема в наше время.
Сделать параллельный синтаксис
мигрировали
А причём тут Python? Как раз там никакого параллельного синтаксиса никто не сделал: вы не можете ни включить в проект на Python2 модуль написанный для Python3, ни наоборот.Сделать параллельный синтаксисСколько там чуваки мигрировали с Python2 на Python3?
Давно пора уже самому языку стать объектным.
Итак у языка репутация уже ниже плинтуса.
Тип все что вам нужно для счастья это что бы инты были объектами?
Она ниже плинтуса не потому что язык плохой, я бы так не сказал, а потому что любой идиот может на нем что-то написать.
А будь все объектно, стабильно и единообразно, так глядишь и быдлокодеры подтянулись бы по качеству.Неа. Ушли бы куда-нибудь на другой язык.
Да нет, не от того, что пишут плохо. Это в любом языке можно сделать. Мы вот пишем и на Ruby и на PHP — что ж мы на Ruby специально пишем хорошо, а на PHP плохо? )Да. Естественный отбор, однако. Достоинство PHP является прямой причиной всех его недостатков: он был задуман так, чтобы человек, ничего не знающий о программировании, смог бы сделать работающую программу. Конечно в ней будет куча косяков, но она будет работать! А значит её можно отдать заказчику и пойти делать следующий сайт за 5 копеек.
По сравнении с конкурирующими технологиями PHP огромными скачками несется в прошлое — с каждым днем «отстает от поезда» все больше и больше.Никуда он не отстаёт. Свою нишу (язык для людей, которые либо не могут либо не хотят научиться грамотно программировать) он занимает прочно, а никакую другую ему занять не светит, так как их уже давно заняли другие, более аккуратно сделанные языки.
Неа. Ушли бы куда-нибудь на другой язык.
Никуда он не отстаёт. Свою нишу (язык для людей, которые либо не могут либо не хотят научиться грамотно программировать) он занимает прочно, а никакую другую ему занять не светит, так как их уже давно заняли другие, более аккуратно сделанные языки.
Затем что кушать что-то хочется, да.Неа. Ушли бы куда-нибудь на другой язык.Зачем?
"10" < "5" — это True, 10 < 5 — это False, а "10" < 5 — это вообще TypeError (исключение, которое, если его не поймать, обрушит всю программу), то ему, конечно, хочется от языка некоторой стройности.Посмотрите количество гемов под рельсы и сравните с любыми модулями и бандлами для PHP-фреймворков.А вы лучше посмотрите на количество сайтов на которых что-то такие крутится на основе WordPress'а (или, ещё того хуже, phpBB). Ни о каких гемах их разработчики (в большинстве своём) даже не мечтают!
Помню, как в свое время говорили, что у Windows Mobile огромное конкурентное преимущество за счет огромного количества написанного кода, а через год все работало уже под андроидом и ios и про WM никто уже даже и не вспоминал.Дык правильно говорили. Во-первых через год ничего почти не работало (это я вам как человек, ходящий с Android'ом с 2008го года говорю). А во-вторых — это пример вообще не из той оперы: первые несколько лет много людей по прежнему пользовались телефонами на Windows Mobile и Symbian'е, так как под них нужный им софт был, а больше ни подо что не было, а потом Microsoft удавил сначала Windows Mobile (Windows Phone 7 использовал ядро от Windows Mobile, но старые программы использовать было нельзя), а потом внедрил своего засланного казачка в Nokia и Symbian тоже удавил. Разумеется если платформу насильственным образом убили, то количество софта под неё уже никакой роли играть не может!
PHP 7 Alpha 1. Что нового