php 8.0 이후 주요 문법 변화에 대해 설명한다.
기존엔 중간 파라미터 값을 사용하지 않기 위해 default나 Null로 처리하던 것들을 Named Params를 이용해 쉽게 처리가 가능해젔다.
function getUser(string $name, string $type = null, string $address)
{
};
getUser('테스트', null, '서울특별시 강남구');
function getUser(string $name, string $type = null, string $address)
{
};
getUser(name: '테스트', address: '서울특별시 강남구');
null인 객체를 참조할 때 방어코드로 작성할 수 있다.
$user = new User();
$user?->name;
swith문을 대신해 더 간략하게 인라인으로 작성이 가능해젔다.
switch ($type) {
case 'business':
$result = "기업유저";
break;
default :
$result = "일반유저";
break;
}
$result =. match ($type) {
'business' => "기업유저",
default => "일반유저",
};
생성자 문법을 좀 더 간략하게 사용이 가능해젔다. 또한 psr-12 생성자 마지막에 ',' 처리가 가능해젔다.
private $handler;
public function __construct(
Handler $handler
)
{
parent::__construct();
$this->handler = $handler;
}
public function __construct(
private readonly $handle,
) {}
문서에만 존재하던 Mixed가 실제로 사용이 가능해젔다.
class A
{
public function bar(): mixed
}
class B extends A
{
public function bar(): int
}
interface AInterface
{
public function foo(): string|int
}
class B implements AInterface
{
public function foo(): string|int
{
}
}