>백엔드 개발 >PHP8 >코드 품질을 향상시키기 위해 PHP8의 속성 null 허용 여부를 사용하는 방법

코드 품질을 향상시키기 위해 PHP8의 속성 null 허용 여부를 사용하는 방법

王林
王林원래의
2023-06-21 11:02:561543검색

PHP8이 출시되면서 속성 null 허용 여부가 중요한 새로운 기능이 되었습니다. 이 기능을 사용하면 속성이 null을 허용할 수 있음을 선언하여 코드를 더 효과적으로 제어하고 잠재적인 오류를 줄이는 데 도움이 됩니다.

속성 null 허용 여부란 무엇인가요?

PHP 이전에는 속성을 고정 유형(예: 문자열, 정수, 부울 등)으로만 선언할 수 있었습니다. 그러나 경우에 따라 속성이 초기화되지 않거나 null 값이 할당될 수 있습니다. 이는 이러한 속성을 호출할 때 정의되지 않은 변수 또는 정의되지 않은 메서드를 호출할 수 없는 등의 치명적인 오류가 발생할 수 있음을 의미합니다.

속성 null 허용 여부는 속성 선언 앞에 물음표를 추가하여 달성됩니다. 예를 들어 다음과 같이 null 허용 문자열 속성을 선언할 수 있습니다.

public ?string $name;

이는 이 속성을 문자열 대신 NULL로 설정하여 치명적인 오류를 피할 수 있음을 의미합니다.

코드 품질을 향상시키기 위해 속성 null 허용 여부를 사용하는 방법은 무엇입니까?

속성 null 허용 여부를 사용하면 코드 품질이 크게 향상될 수 있습니다. 다음은 몇 가지 예입니다.

  1. 메서드에서 속성 null 허용 여부 사용

예를 들어 이름과 연령 속성이 있는 Person 클래스가 있습니다. 아래와 같이 속성 null 허용 여부를 사용하여 코드를 안전하게 만들 수 있습니다.

class Person {
    public ?string $name;
    public ?int $age;
    
    public function displayInfo(): string {
        $name = $this->name ?? "Unknown";
        $age = $this->age ?? "Unknown";
        return "Name: $name, Age: $age";
    }
}

위 예에서는 null 병합 연산자(??)를 사용하여 정의되지 않은 속성에 기본값을 제공했습니다. 즉, 속성이 NULL이더라도 코드에 치명적인 오류가 발생하지 않습니다.

  1. 속성이 비어 있는지 확인

어떤 경우에는 속성이 비어 있는지 확인하고 싶습니다. 예를 들어, 빈 문자열을 기본값으로 사용하는 경우 사용자가 빈 문자열을 전달하는 것을 방지할 수 있습니다. 아래와 같이 속성 null 허용 여부를 사용하여 이를 달성할 수 있습니다.

class User {
    public ?string $name;
    
    public function setName(?string $name): void {
        if ($name === "") {
            throw new InvalidArgumentException("Name can't be empty");
        }
        $this->name = $name;
    }
}

위 예에서는 NULL 또는 문자열 유형의 nullable $name 속성을 사용했습니다. setName 메소드에서는 먼저 $name이 빈 문자열인지 확인하고, 그렇다면 예외를 발생시킵니다. 그렇지 않으면 속성에 값을 할당합니다.

  1. null 허용 속성 역참조

어떤 경우에는 null 허용 속성을 null 허용되지 않는 속성으로 변환해야 할 수도 있습니다. 예를 들어 객체 속성과 동일한 키를 포함하는 연관 배열이 있을 수 있습니다. 속성 null 허용 여부를 사용하여 아래와 같이 이러한 값을 개체 속성으로 변환할 수 있습니다.

class Post {
    public ?string $title;
    public ?string $content;
    
    public function __construct(array $data) {
        $this->title = $data['title'] ?? null;
        $this->content = $data['content'] ?? null;
    }
    
    public function toObject(): object {
        $obj = (object)[];
        foreach ($this as $key => $value) {
            $obj->{$key} = &$this->{$key};
        }
        return $obj;
    }
}

$data = [
    'title' => 'Hello',
    'content' => 'World',
];
$post = new Post($data);
$obj = $post->toObject();

위 예에서는 코드를 단순화하기 위해 속성 null 허용 여부를 사용했습니다. 생성자에서 연관 배열을 반복하고 null 허용 속성에 값을 할당합니다(키가 없으면 값은 NULL이 됩니다). toObject 메서드에서는 객체를 객체로 변환하고 null 허용 여부를 제거하여 속성을 null이 아닌 속성으로 만들었습니다.

요약

속성 null 허용 여부는 코드 품질을 크게 향상시킬 수 있는 매우 유용한 기능입니다. 이는 정의되지 않은 변수나 메소드 사용을 피하는 것과 같은 몇 가지 일반적인 실수를 피하는 데 도움이 되며 코드를 더 잘 제어하는 ​​데 도움이 될 수 있습니다. 아직 PHP8로 업그레이드하지 않았다면 이 기능을 사용하여 코드 품질을 향상시키는 것을 고려해 보세요.

위 내용은 코드 품질을 향상시키기 위해 PHP8의 속성 null 허용 여부를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.