

(15 – 29 июля 2019)
https://habr.com/p/461669/
PHP 7.4.0 beta 1, PhpStorm 2019.2, PSR-12, обзор RFC предложений из PHP Internals, новости с Laracon US, подкасты, порция полезных инструментов, и многое другое.
Size: a a a
function имяФункции()А PHP позволяет использовать любые символы, хоть кириллицу, хоть emoji:
{
echo 'Привет, мир!';
}
имяФункции();
📅('Y-m-d', ⏰() + 🎰(1000, 2000));Или можно пробельные символы:
// date('Y-m-d', time() + rand(1000, 2000));
function hello World()Или даже пробел нулевой длины:
{
echo 'Hello world!';
}
hello World();
function ()Копировать отсюда: https://gist.github.com/pronskiy/47adea5952b7af1574c673403b054f28
{
echo 'Zero-width space function name 🤯';
}
();
$tuple = ('hello', 'world');Шутки шутками, а вот что касается обычных пробелов, то есть старая интересная идея использовать их в именовании тестовых методов:
var_dump($tuple); // => p810\Tuple\Tuple#3 (2) {...}
public function test a user can add a product to a wishlist()По опыту автора, тогда объявление выглядит как естественное предложение и тест легче воспринимать и написать. Ну а поскольку вызывать их явно обычно не приходится, то особых неудобств это не должно доставлять.
{
// ...
}
E_ALL
E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
.T1|T2|...
может быть использованы везде, где типы можно указывать сейчас:class Number {______________________________________
private int|float $number;
public function setNumber(int|float $number): void {
$this->number = $number;
}
public function getNumber(): int|float {
return $this->number;
}
}
T1|T2|...
может быть использованы везде, где типы можно указывать сейчас:class Number {______________________________________
private int|float $number;
public function setNumber(int|float $number): void {
$this->number = $number;
}
public function getNumber(): int|float {
return $this->number;
}
}
// Сделаем абстрактный класс обычнымОсторожно! Библиотека предоставляет практически неограниченный доступ к памяти самого PHP и работает со структурами на низком уровне. Поэтому вполне возможны сегфолты, утечки памяти и другие неприятные последствия. Так что, только для тестов.
$refClass = new ReflectionClass(TestClass::class);
$refClass->setAbstract(false);
assertFalse($refClass->isAbstract());
$instance = new TestClass();
assertInstanceOf(TestClass::class, $instance);