UPDATE:2020年07月06日
PHP の オブジェクト型(object) について
- オブジェクト とは プログラミング手法の概念
- オブジェクト型 の種類は 複合型
- オブジェクト型 は データ構造 と 処理系 が合わさった型
- オブジェクト型 のチェックは is_object() 関数 で行う
オブジェクトとは
- オブジェクト とは プログラミング手法の概念
オブジェクトとは、所謂 プログラミング手法 や 概念 ことです。
オブジェクト指向プログラミングでは、「デバック」「保守メンテナンス」「コードの再利用」などを容易にし、「モジュール化」された設計が出来るように考えられています。モジュール化とは、1つの複雑なシステムを、相互依存の強いソースコードで構成するのではなく、コードの規格化・標準化を進め、追加や交換が可能な独立した機能を持つコード同士で構成することです。
PHPでは オブジェクト指向プログラミング(OOP) をサポートしています。
オブジェクト型
- オブジェクト型 は データ構造 と 処理系 が合わさった型
オブジェクト型 はデータ構造(プロパティ) と 処理系(メソッド) が合わさっています。
オブジェクト以外の型がオブジェクト型に変換される場合、stdClass というPHPで予め定義されている ビルトインクラス のインスタンスが新規で生成されます。その際、値が NULL の場合は新しいインスタンスは空になります。
配列 が オブジェクト に変換される場合、配列の キー と 値 がそれぞれ オブジェクト の プロパティ名 と 値 になります。PHP7.2.0より以前のバージョンでは、数値の キー名 の場合 プロパティ名 で値にアクセスすることは出来ませんンでした。
オブジェクトを作成する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!-- サンプルコード --> <?php //クラスを定義 class SomeClass{ var $sName = 'メンバ変数'; //クラス内の変数の事 //クラス内の関数の事をメソッドと言います。 function Message() { echo 'Hello World!<br>'; } } //オブジェクト作成 $oObj = new SomeClass(); //オブジェクトのプロパティ呼び出し echo $oObj->sName."<br>"; //オブジェクトのメソッド呼び出し $oObj->Message(); //オブジェクト型チェック echo '$oObjの型:'.gettype($oObj)."<br>"; ?> |
結果は
Hello World!
$oObjの型:object
となります。
オブジェクトであるか調べる
- オブジェクト型 のチェックは is_object() 関数 で行う
ある値がオブジェクトかどうか調べるには is_object()関数 を使用します。オブジェクト型 であれば 論理値 true を返し、そうでなければ false を返します。
1 2 3 4 5 | <!-- サンプルコード --> <?php $oObject = new Class; if(is_object($oObject ) === TRUE) echo 'オブジェクト型です。'; ?> |
結果は
となります。
bool TRUE か FALSE = is_object(mixed $var);
| 説明 | 変数のデータ型がオブジェクト型かどうかチェックする | |
|---|---|---|
| 引数 | mixed $var | データ型を調べる変数 |
| 返り値 | bool | 変数がオブジェクト型の場合:TRUE、変数がオブジェクト型ではない場合:FALSE |
サンプル
1 2 3 4 5 6 7 8 9 | <?php $object = new DateTime(); echo is_object($object) ? "オブジェクト型です。<br>\n" : "オブジェクト型ではありません。<br>\n"; //オブジェクト型です。 $object = array(); echo is_object($object) ? "オブジェクト型です。<br>\n" : "オブジェクト型ではありません。<br>\n"; //オブジェクト型ではありません。 ?> |
データ型の種類
- PHPの8つのデータ型:
- PHPの3のデータ種類:
データ型の表
| 型名 | 種類 | 例 | |
|---|---|---|---|
| 文字列型 | string | スカラー型 | 'Hello World!!' "我思う、ゆえに我あり" |
| 整数型 | integer | スカラー型 | 1、2020、-588、+98 8進数 16進数 |
| 浮動小数点数型 | float(double) | スカラー型 | 1.4142、-0.18 |
| 論理型 | boolean | スカラー型 | TRUE | FALSE (true false) (大文字・小文字を区別しない) |
| 配列型 | array | 複合型 | array('name','address') |
| オブジェクト型 | object | 複合型 | $oObj = new ClassName(); |
| リソース型 | resource | 特殊型 | resource |
| ヌル型 | null | 特殊型 | NULL | null | Null (大文字・小文字を区別しない) |
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <!-- サンプルコード --> <h3>オブジェクト</h3> <?php //クラスを定義 class SomeClass{ var $sName = 'メンバ変数'; //クラス内の変数の事 //クラス内の関数の事をメソッドと言います。 function Message() { echo 'Hello World!<br>'; } } //オブジェクト作成 $oObj = new SomeClass(); //オブジェクトのプロパティ呼び出し echo $oObj->sName."<br>"; //オブジェクトのメソッド呼び出し $oObj->Message(); //オブジェクト型チェック echo '$oObjの型:'.gettype($oObj)."<br>"; ?> |
メンバ変数
Hello World!
$oObjの型:object
タグ(=記事関連ワード)
日付
最終更新日:2020年07月06日



