ホームページ > バックエンド開発 > PHPの問題 > 未定義クラスのPHPオブジェクトの作成方法

未定義クラスのPHPオブジェクトの作成方法

醉折花枝作酒筹
リリース: 2023-03-10 22:00:02
転載
1643 人が閲覧しました

PHP では、クラスが事前に準備されておらず、未定義のクラスのオブジェクトを作成する必要がある場合、次の 3 つのメソッドを使用できます。1. "new stdClass()"、"new class{}(object) " と "(オブジェクト)[]"。以下、編集部が詳しくご紹介します。

未定義クラスのPHPオブジェクトの作成方法

#PHP では、事前にクラスが用意されておらず、未定義クラスのオブジェクトを作成する必要がある場合、次の 3 つの方法を使用できます。

  • new stdClass()

  • ##新しいクラス{}
  • (オブジェクト)[]
  • 最初のクラスは stdClass です。このクラスは空のクラス テンプレートであり、PHP の内部予約キーワードおよびクラス名です。これは Java の Object 基本クラスと考えることができ、Java ではすべてのクラスが当然 Object 基本クラスから継承されます。 PHP の stdClass は完全に空のクラス テンプレートです。新しく作成した独自のクラスは、そのサブクラスではありません。ただし、このクラス テンプレートを使用して、独自の未定義クラスのオブジェクトを作成できます。もちろん、このオブジェクトの内部には何もありません。
  •  $a = new stdClass();
    var_dump($a);
    ログイン後にコピー
新しいクラス{}?一定期間開発を行っており、フロントエンド JS やその他の動的言語に触れたことがある人は、これが匿名クラスであることを推測できるはずです。一般にパラメータ オブジェクトで非常に一般的です。作成するオブジェクトには属性メソッドを含めることができます。

 $b = new class{
    public $p = 1;
};
var_dump($b);
ログイン後にコピー

最後に見られるのは、オブジェクトを生成するためにオブジェクトに強制的に配列を使用することです。

 $c = (object)[
    'p' => 1
];
var_dump($c);
ログイン後にコピー

明らかに、配列強制によって生成されたオブジェクトは最初のオブジェクトと同じ型であり、属性を持つことも持たないこともできます。ただしメソッドは取れません。

配列強制メソッドによって生成されたオブジェクトは、非常に直観的で理解しやすいものです。単に属性オブジェクトをカプセル化するだけの場合は、この方法を使用する方がよりエレガントで快適になります。複雑なオブジェクトの生成は、匿名クラスを使用して生成できます。プレースホルダーのみが必要なオブジェクトの場合は、stdClass メソッドを使用できますが、もちろん、空の配列を使用することも非常に便利です。

配列の強制は型変換の規則に従う必要があることに注意してください。たとえば、数字の添え字の問題。

日常の開発では、いくつかのインターフェイスやデータベース ORM フレームワークを使用するときに、これらの関数をよく使用します。たとえば、一部の ORM フレームワークの挿入と変更には、属性のみを含むオブジェクトの受信が必要です。このとき、クラステンプレートを完全に定義しなくても、上記の方法を利用することで柔軟にオブジェクトを生成することができます。

テスト コード:

https://github.com/zhangyue0503/dev-blog/blob/master/php/201910/source/%E4%BC%98%E9%9B%85%E5%9C%B0%E5%88%9B%E5%BB%BA%E6%9C%AA%E5%AE%9A%E4%B9%89PHP%E5%AF%B9%E8%B1%A1.php
ログイン後にコピー
推奨学習:

php ビデオ チュートリアル

以上が未定義クラスのPHPオブジェクトの作成方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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