ホーム > PHPの文法 > 11 クラスとオブジェクト > PHP オブジェクトのプロパティ(property)
オブジェクト指向プログラミング

PHP オブジェクトのプロパティ(property)

PHP オブジェクトのプロパティ(property) | wepicks!

プロパティ

プロパティ

  • プロパティ は オブジェクトに関連付いたデータ(クラス内変数)

では、 クラス に プロパティ を設定してみましょう。プロパティ は「オブジェクトに関連付いたデータ」です。クラス内変数のようなものです。変数なので、名前と値があります。プロパティ の宣言で、変数名と初期値を決めることができ、変数名だけ決めておいて値を後から代入することもできます。また、変数名も値も決めずに プロパティ を宣言することも可能です。
プロパティ には アクセス権(可視化)の設定が3種類(public/private/protected)あります。アクセス修飾子 と言います。これらのキーワードでアクセス権を表現します。プロパティ を宣言する際、アクセス権の明示が必要です。public は誰でもアクセスが可能で制限がありません。private/protected にはアクセスに制限があります。順次説明します。

  • public:クラス外からのアクセス可
  • private:同クラス内の メソッド からのアクセス可
  • protected:同クラス内と継承先クラスの メソッド からのアクセス可

プロパティの宣言

以下の例では、 $maker と $color の プロパティ を宣言しています。$maker には初期値として Pioneer を設定しており、 $color の初期値はありません。この場合 $color は NULL となります。アクセス修飾子 を public としています。アクセス権を指定しないとエラーになります。

実行結果
object(optical_drive)#1 (2) { ["maker"]=> string(7) "Pioneer" ["color"]=> NULL }

インスタンス の内容を ver_dump で確認すると プロパティ "maker" に 文字列 "Pioneer" が設定されています。プロパティ "color" は NULL となっています。次のように public $color = ''; 初期値を設定すれば NULL になりません。
※初期値として設定できるのは、単純な定数値です。 public $int = 100 * 100; のような形では動作しません。

宣言しないプロパティ

上記の例では、プロパティ $maker を 明示的に public $maker = 'Pioneer'; と宣言しましたが、宣言しなくても新規プロパティの追加は可能です。

実行結果
object(person)#2 (1) { ["name"]=> string(24) "ウェピックス太郎" }

personクラス では何も宣言していない状態で、nameプロパティ に値を代入しています。var_dump で確認すると name プロパティ が作成されており、 ウェピックス太郎 という値が代入されています。

プロパティの呼び出し

プロパティ を呼び出す(参照する)には キーワード ->(アロー演算子) を使用します。

実行結果
Pioneer

プロパティ を呼び出して echo で出力しました。

スタティックプロパティ

インスタンス化された オブジェクト の プロパティ だけでなく、クラス自身に変数を持たせてアクセスすることも出来ます。これを スタティックプロパティ(静的プロパティ) と言います。クラス の スタティックプロパティ にアクセスするには「::(スコープ定義演算子)」を使用します。

実行結果
聖書

private や protected のメソッドを通してアクセス可

プロパティ のアクセス権 private や protected は継承で詳しく説明しますが、同クラス内のメソッドを通して操作することが出来ます。
直接アクセスするとエラーになります。$this は インスタンス 自体を示す特別な変数です。

実行結果
object(car)#1 (2) { ["maker":"car":private]=> string(6) "TOYOTA" ["color":protected]=> string(12) "ブラック" }

クラス名やインスタンス名を変数に代入して呼び出し

クラス名 を変数に代入して キーワード new + 変数 の形で インスタンス化 させることも可能です。

実行結果
Pioneer

インスタンス名 を変数に代入して 変数-> の形で インスタンス化 させることも可能です。

実行結果
Pioneer


タグ(=記事関連ワード)

日付

公開日:2018年3月6日
最終更新日:

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/phpref-oop-property/trackback/

page top