PHPリファレンス
UPDATE:2020年07月06日
PHP の オブジェクト型(object) について
PHP4.3 PHP5 PHP7
1 Minute Note
- オブジェクト とは プログラミング手法の概念
- オブジェクト型 の種類は 複合型
- オブジェクト型 は データ構造 と 処理系 が合わさった型
- オブジェクト型 のチェックは is_object() 関数 で行う
オブジェクト型 はデータ構造と処理系が合わさったデータ型です。
オブジェクトとは
POINT
- オブジェクト とは プログラミング手法の概念
オブジェクトとは、所謂 プログラミング手法 や 概念 ことです。
オブジェクト指向プログラミングでは、「デバック」「保守メンテナンス」「コードの再利用」などを容易にし、「モジュール化」された設計が出来るように考えられています。モジュール化とは、1つの複雑なシステムを、相互依存の強いソースコードで構成するのではなく、コードの規格化・標準化を進め、追加や交換が可能な独立した機能を持つコード同士で構成することです。
PHPでは オブジェクト指向プログラミング(OOP) をサポートしています。
オブジェクト型
POINT
- オブジェクト型 は データ構造 と 処理系 が合わさった型
オブジェクト型 はデータ構造(プロパティ) と 処理系(メソッド) が合わさっています。
オブジェクトへの変換
オブジェクト以外の型がオブジェクト型に変換される場合、stdClass というPHPで予め定義されている ビルトインクラス のインスタンスが新規で生成されます。その際、値が NULL の場合は新しいインスタンスは空になります。
配列 が オブジェクト に変換される場合、配列の キー と 値 がそれぞれ オブジェクト の プロパティ名 と 値 になります。PHP7.2.0より以前のバージョンでは、数値の キー名 の場合 プロパティ名 で値にアクセスすることは出来ませんンでした。
オブジェクト以外の型がオブジェクト型に変換される場合、stdClass というPHPで予め定義されている ビルトインクラス のインスタンスが新規で生成されます。その際、値が NULL の場合は新しいインスタンスは空になります。
配列 が オブジェクト に変換される場合、配列の キー と 値 がそれぞれ オブジェクト の プロパティ名 と 値 になります。PHP7.2.0より以前のバージョンでは、数値の キー名 の場合 プロパティ名 で値にアクセスすることは出来ませんンでした。
オブジェクトを作成する
オブジェクトを作成するには最初に「クラス」を定義します。一度クラスを定義し、「new」 キーワードを使用して、オブジェクトを作成します。オブジェクトはいくつでも作成することができます。オブジェクトの プロパティ や メソッド にアクセスする際は「->」を使用します。
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
Hello World!
$oObjの型:object
となります。
オブジェクトであるか調べる
POINT
- オブジェクト型 のチェックは is_object() 関数 で行う
ある値がオブジェクトかどうか調べるには is_object()関数 を使用します。オブジェクト型 であれば 論理値 true を返し、そうでなければ false を返します。
1 2 3 4 5 | <!-- サンプルコード --> <?php $oObject = new Class; if(is_object($oObject ) === TRUE) echo 'オブジェクト型です。'; ?> |
結果は
オブジェクト型です。
となります。
is_object() 書式
bool TRUE か FALSE = is_object(mixed $var);
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"; //オブジェクト型ではありません。 ?> |
データ型の種類
POINT
PHPには8種類のデータ型があります。文字列型、整数型、浮動小数点数型、論理型、配列型、オブジェクト型、リソース型、NULLです。そして、それらのデータ型は、スカラー型と複合型と特殊型に分けられます。 スカラー型は単一の値で作られている型です。文字列、整数、浮動小数点数、論理値がそれに当たります。 複合型(コレクション型)は複数の値で作られている型です。配列とオブジェクトがそれに当たります。 特殊型はリソースとNULLです。- PHPの8つのデータ型:
- PHPの3のデータ種類:
字列型(string)
整数型(integer)
浮動小数点数型(float)(double)
論理型(boolean)
配列型(array)
オブジェクト型(object)
リソース型(resource)
NULL(null)
(スカラー型)
(スカラー型)
(スカラー型)
(スカラー型)
(複合型)
(複合型)
(特殊型)
(特殊型)
スカラー型
(文字列型)
(整数型)
(浮動小数点数型)
(論理型)
複合型
(配列型)
(オブジェクト型)
特殊型
(リソース型)
(NULL)
データ型の表
型名 | 種類 | 例 | |
---|---|---|---|
文字列型 | 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
メンバ変数
Hello World!
$oObjの型:object
タグ(=記事関連ワード)
日付
公開日:2017年3月18日
最終更新日:2020年07月06日
最終更新日:2020年07月06日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpref-objecttype/trackback/