[PHP] [PHP 8.4] 새로 나올 기능에 대한 뉴스 - 리무스BBS

PHP 8.4에 새로 추가될 기능들에 대한 뉴스

지금까지 알려진 주요 추가 기능 (예정)

PHP Property Hooks

class User implements Named
{
    private bool $isModified = false;
    
    public function __construct(
            private string $first,
            private string $last
    ) {}
    
        
    public string $fullName {
        // Override the "read" action with arbitrary logic.
        get => $this->first . " " . $this->last;
        
        // Override the "write" action with arbitrary logic.
        set {
            [$this->first, $this->last] = explode(' ', $value, 2);
            $this->isModified = true;
        }
    }
}

기존대로 속성을 그냥 public 으로 오픈하면, 속성의 값의 정합성을 보장할 수 없으므로, __get() 혹은 __set() 을 쓰거나, 특정 변소를 위한 getter와 setter를 쓰면 되긴 하지만, $value 와 같은 값이 튀어나오는 것은 좀 뜬금없지 않나 생각해서 거부감이 있었는데요.

일단, 커뮤니티에서의 투표는 찬성 34대 반대 1로 도입이 확정된 것 같습니다.

new MyClass()->method() without parentheses

새로운 Array Functions

PHP 8.4에서는 array_find(), array_find_key(), array_any(), array_all() 함수 네개를 추가하기로 했습니다. 커뮤니티에서 100% 찬성인 상태이므로, 도입이 거의 확정적이네요.

‘array_find()’ 함수

function array_find(array $array, callable $callback) : mixed
{
	foreach($array as $el) {
		if($callback($el))
			return $el;
	}
	return null;
}

‘array_find_key()’ 함수

function array_find_key(array $array, callable $callback) : mixed
{
	foreach($array as $key => $el) {
		if($callback($key))
			return $key;
	}
	return null;
}

‘array_any()’ 함수

function array_any(array $array, callable $callback) : bool
{
	foreach($array as $el) {
		if(call_user_func($callback, $el))
			return true;
	}
	return false;
}

‘array_all()’ 함수

function array_all(array $array, callable $callback) : bool
{
	foreach($array as $el) {
		if(!call_user_func($callback, $el))
			return false;
	}
	return true;
}

 

Tags: #PHP84 #RFC