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로 도입이 확정된 것 같습니다.
PHP 8.4에서는 array_find(), array_find_key(), array_any(), array_all() 함수 네개를 추가하기로 했습니다. 커뮤니티에서 100% 찬성인 상태이므로, 도입이 거의 확정적이네요.
function array_find(array $array, callable $callback) : mixed
{
foreach($array as $el) {
if($callback($el))
return $el;
}
return null;
}
function array_find_key(array $array, callable $callback) : mixed
{
foreach($array as $key => $el) {
if($callback($key))
return $key;
}
return null;
}
function array_any(array $array, callable $callback) : bool
{
foreach($array as $el) {
if(call_user_func($callback, $el))
return true;
}
return false;
}
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