ホームページ制作,維持・保守
サーバーシステム構築・管理
ネットワーク構築・管理
IT環境サポート
インフラ構築サポート
ITアウトソーシング
WEBプログラミング

PHPクラス(class)の基本的な使用法

森之宮 0 444 0

PHPでもオブジェクトプログラミングをすることができます。PHP4バージョンから使用可能です、PHP5になり、機能が追加されて性能が向上しました。


1.クラスの基本構造や名前のルール


[

<?php class Car_Engine {


 // プロパティ(メンバ変数) 

private $_displacement; 

public $engineName; 


//メソッド 

public function getDisplacement() { 

return $this->_displacement; 


public function setDisplacement($displacement) { 

$this->_displacement = $displacement;

 }

 } 

?>



-classキーワード、次にクラス名を書きます。


クラス全体は中括孤{}で囲まれます。


-内側にプロパティとメソッドの定義を書きます。


-プロパティの定義は普通、前に書きますが、位置は関係がありません。 後ろに、中間に書いても構いません。


-プロパティ及びメソッドの定義前にはprivate、publicというアクセス制御子が付いています。

これはそのメンバーをクラス外部からアクセスできるかを示します。


ここまでクラスの基本的な構造を見ました。 

ここからはクラス名、プロパティとメソッドの名を決める方法について話します。

変数名のルールに従うことさえすれば文法的には問題がないと思いますが、

一般的には、Naming Convention(慣習的な名前をつけるルール)に従います。 


クラス名は大文字で始まります。  

複数の単語で構成された場合、各単語の間はアンダースコーダー(_)を使用して区分し、各単語の一つ目の文字に大文字を使用します。(例,Car_Engine)


-プロパティとメソッドは小文字で始まります。 

複数の単語で構成された場合、スペース無しで書き,最初の単語を除いた単語の最初字を大文字で書きます。 (例,$engineName)


-プロパティとメソッドがprivateの場合、最初字をアンダースコア(_)を使用します。



上記の通り書かなくても慣習的なルールですので自分が違うように書いてもグループの中での参加以外は誰も文句は言いません。



2.接近制御子(Access Modifier)とクラスの使用する




public:外部からアクセスが可能です。


protected:内部と相続されたクラスでアクセスすることができます。


private:内部でのみ接近することができます。



上記で定義したクラスを使用する方法を少し述べます。



<?php 

$engine = new Car_Engine(); 

$engine->setDisplacement(3.3); 

$engine->engineName = "優れたエンジン"; 


echo $engine->getDisplacement(); 

echo $engine->engineName; 

?>

 

クラスの生成にはnew演算子を使います。


$engine=new Car_Engine();


これでオブジェクトが生成されたのでこれから使用可能になります。 

publicであるメンバにアクセス可能になりました。

メンバーを使うためには->演算子を使用します。 

メソッドとメンバー変数にアクセスする例です。



$engine->setDisplacement(3.3);


$engine->engineName="優れたエンジン";



privateメンバーに接近しようとすればエラーが発生します。


$engine->_displacement=3.3;//使用できません。




3.生成子と$this



上記でオブジェクトを生成するときクラス名の後ろに括弧を使用しました。


$engine=new Car_Engine();


この部分が生成子を呼び出す部分です。

生成子はオブジェクトが生成される際に実行される特殊なメソッドです。 

生成子を呼び出ししない場合、

次のように生成することもできます。



$engine=new Car_Engine;



生成子は、

主にオブジェクトを生成する時、初期値を与えるために使用します。 

生成子は、一つのみ出なければなりません。

一般的には、オブジェクト指向言語はオーバーロード(overloading)と言う因子だけ違う他の複数の同じ名の生成子を生成することができます。しかし、PHPは生成子オーバーロードが出来ません。 

一つの生成子だけを作成します。




public function__construct($en){


$this->engineName=$en;


}




このように生成者を追加しておけば


$engine=new Car_Engine("優れたエンジン");



このように初期化できます。




クラスの内部で使用された$thisはオブジェクト自身を表す。既に定義されたメンバーです。



内部で自分のメンバー変数やメソッドを使用するとき、

必ず$this->engineNameのように使用しなければなりません。 

$this->を使えず$engineNameのように使用すれば、メンバー変数ではなく、

その位置でのローカル変数に処理されてしまうので望む結果を得られません。



[이 게시물은 森之宮님에 의해 2017-06-27 23:04:27 プログラミング에서 이동 됨]

0 コメント