ホームページ > バックエンド開発 > PHP8 > PHP8 の属性の null 可能性を使用してコードの品質を向上させる方法

PHP8 の属性の null 可能性を使用してコードの品質を向上させる方法

王林
リリース: 2023-06-21 11:02:56
オリジナル
1539 人が閲覧しました

PHP8 のリリースにより、属性の null 可能性が重要な新機能になりました。この機能により、プロパティが null 許容であることを宣言できるため、コードをより詳細に制御できるようになり、潜在的なエラーを減らすことができます。

属性の null 可能性とは何ですか?

PHP が登場する前は、プロパティは固定型 (文字列、整数、ブール値など) としてのみ宣言できました。ただし、場合によっては、プロパティが初期化されなかったり、null 値が割り当てられたりすることがあります。これは、これらのプロパティを呼び出すときに、未定義の変数や未定義のメソッドを呼び出すことができないなどの致命的なエラーが発生する可能性があることを意味します。

属性の NULL 可能性は、属性宣言の前に疑問符を追加することで実現されます。たとえば、次のように null 許容文字列プロパティを宣言できます。

public ?string $name;
ログイン後にコピー

これは、このプロパティを文字列ではなく NULL に設定できることを意味し、致命的なエラーを回避できます。

属性の null 可能性を使用してコードの品質を向上させるにはどうすればよいですか?

属性の null 可能性を使用すると、コードの品質が大幅に向上します。例をいくつか示します:

  1. メソッドでの属性の null 可能性の使用

たとえば、次のような人がいます。名前と年齢プロパティを持つクラス。以下に示すように、プロパティの 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 または String 型の null 許容 $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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート