PHP 5.6+


5.6+

== Выражения в константах ==


const ONE = 1;
const TWO = ONE * 2;

class C {
    const THREE = TWO + 1;
    const ONE_THIRD = ONE / self::THREE;
    const SENTENCE = 'Значение константы THREE - '.self::THREE;

    public function f($a = ONE + self::THREE) {
        return $a;
    }
}

echo (new C)->f()."n";

echo C::SENTENCE;


== Массивы-константы ==

const ARR = ['a', 'b'];

echo ARR[0];



== Функции с переменным количеством аргументов ==


function f($req, $opt = null, ...$params) {
    // $params - массив, содержащий все остальные аргументы.
    printf('$req: %d; $opt: %d; количество параметров: %d'."n",
           $req, $opt, count($params));
}

f(1);
f(1, 2);
f(1, 2, 3);


== Распаковка массива операцией ... ==


function add($a, $b, $c) {
    return $a + $b + $c;
}

$operators = [2, 3];
echo add(1, ...$operators);


== Возведение в степень ** ==

$a = 2;
$a **= 3;


== Импорт констант и функций в use ==

namespace NameSpace {
    const FOO = 42;
    function f() { echo __FUNCTION__."n"; }
}

namespace {
    use const NameSpaceFOO;
    use function NameSpacef;

    echo FOO."n";
    f();
}