PHP の新機能

Patricia Arquette
リリース: 2024-11-23 19:10:12
オリジナル
866 人が閲覧しました

Whats new in PHP

PHP 8.4: 新機能とその使用方法

PHP 8.4 は、コーディングを簡素化し、パフォーマンスを向上させるいくつかのエキサイティングな機能を提供します。この記事では、最も重要なアップデートを簡単な例で説明し、あらゆるスキル レベルの開発者がこれらの機能を簡単に理解して使用できるようにしています。


1. プロパティフック

プロパティ フックを使用すると、プロパティを取得または設定するときに何が起こるかをカスタマイズできます。これにより、個別のゲッター メソッドとセッター メソッドが不要になります。

例:

class User {
    private string $firstName;
    private string $lastName;

    public function __construct(string $firstName, string $lastName) {
        $this->firstName = $firstName;
        $this->lastName = $lastName;
    }

    // This property combines first and last name
    public string $fullName {
        get => $this->firstName . ' ' . $this->lastName;
        set => [$this->firstName, $this->lastName] = explode(' ', $value, 2);
    }
}

$user = new User('John', 'Doe');
echo $user->fullName; // Output: John Doe

$user->fullName = 'Jane Smith'; // Updates first and last names
echo $user->fullName; // Output: Jane Smith
ログイン後にコピー

それが役立つ理由:

プロパティ フックにより、コードがクリーンになり、ボイラープレートが削減されます。


2. 非対称の可視性

プロパティの読み取りと書き込みに対して、さまざまな可視性レベルを設定できるようになりました。たとえば、プロパティは誰でも読み取り可能ですが、書き込みできるのはクラス自体だけです。

例:

class BankAccount {
    public private(set) float $balance; // Public read, private write

    public function __construct(float $initialBalance) {
        $this->balance = $initialBalance; // Allowed here
    }

    public function deposit(float $amount): void {
        $this->balance += $amount; // Allowed here
    }
}

$account = new BankAccount(100.0);
echo $account->balance; // Output: 100

$account->deposit(50.0); // Adds 50 to the balance
echo $account->balance; // Output: 150

// The following line will cause an error:
// $account->balance = 200.0;
ログイン後にコピー

それが役立つ理由:

この機能により、プロパティへのアクセスと更新の方法を簡単に制御できるようになります。


3. 新しい配列関数

PHP 8.4 には、手動ループを作成する手間を省く新しい配列関数が追加されています。

例:

$numbers = [1, 2, 3, 4, 5];

// Find the first even number
$firstEven = array_find($numbers, fn($n) => $n % 2 === 0);
echo $firstEven; // Output: 2

// Check if any number is greater than 4
$hasBigNumber = array_any($numbers, fn($n) => $n > 4);
var_dump($hasBigNumber); // Output: bool(true)

// Check if all numbers are positive
$allPositive = array_all($numbers, fn($n) => $n > 0);
var_dump($allPositive); // Output: bool(true)
ログイン後にコピー

それが役立つ理由:

これらの関数により、配列操作の記述が速くなり、理解しやすくなります。


4. 簡素化されたオブジェクトのインスタンス化

インスタンス化を括弧で囲むことなく、オブジェクトを作成し、そのメソッドをすぐに呼び出すことができるようになりました。

例:

class Logger {
    public function log(string $message): void {
        echo $message;
    }
}

// Create an object and call a method in one step
new Logger()->log('Logging a message'); // Output: Logging a message
ログイン後にコピー

それが役立つ理由:

不要な構文が減り、コードがすっきりします。


5. 暗黙的な Null 許容型の非推奨

PHP 8.4 では、パラメーターが null になる可能性がある場合に明示的に宣言する必要があります。これにより、コードの理解と保守が容易になります。

例:

// PHP 8.4 (Recommended):
function process(?string $data = null) {
    echo $data ?? 'No data provided';
}
ログイン後にコピー

それが役立つ理由:

明示的な宣言は混乱を防ぎ、潜在的なバグを減らします。


6. 遅延オブジェクト

遅延オブジェクトを使用すると、実際に使用されるまでオブジェクトの作成を遅らせることができ、リソースを節約できます。

例:

class ExpensiveResource {
    public function __construct() {
        // Simulate a time-consuming setup
        sleep(2);
    }

    public function doWork(): void {
        echo 'Working...';
    }
}

// Use a lazy object to delay creation
$initializer = fn() => new ExpensiveResource();
$reflector = new ReflectionClass(ExpensiveResource::class);
$resource = $reflector->newLazyProxy($initializer);

// The object isn't created yet
$resource->doWork(); // Now the object is created and "Working..." is printed
ログイン後にコピー

それが役立つ理由:

これは、コストのかかる操作や大規模なシステムを扱う場合に特に役立ちます。


結論

PHP 8.4 には、コーディングをよりシンプルかつ強力にするいくつかの機能が導入されています。

  • プロパティ フック: ゲッター関数とセッター関数を置き換えます。
  • 非対称可視性: プロパティへのアクセスをより適切に制御します。
  • 新しい配列関数: 一般的な配列操作を簡素化します。
  • 簡素化されたオブジェクトのインスタンス化: よりクリーンなオブジェクトの作成。
  • 暗黙的な Null 許容型の非推奨: より安全で明確なコード。
  • 遅延オブジェクト: オブジェクトの作成を遅らせてリソースを節約します。

これらのアップデートにより、初心者でも経験豊富な開発者でも、PHP をさらに楽しく使用できるようになります。今すぐ PHP 8.4 の探索を始めましょう!

以上がPHP の新機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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