ホームページ >バックエンド開発 >PHPチュートリアル >PHP 学習メモ: オブジェクト指向設計_PHP チュートリアル

PHP 学習メモ: オブジェクト指向設計_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:17:13764ブラウズ

オブジェクト指向設計は、PHP プログラム開発において非常に重要なコンテンツブロックです。上級 PHP プログラマーになりたい場合は、オブジェクト指向設計の具体的な使用法と書き方を理解する必要があります。

メンテナンスが簡単 モジュール性はオブジェクト指向プログラミングの特徴です。エンティティはクラスとして表され、同じ名前空間内の同じ機能を持つクラスとして表されるため、名前空間の他のメンバーに影響を与えることなく名前空間にクラスを追加できます。

拡張性 オブジェクト指向プログラミングは本質的に拡張性をサポートします。特定の機能を備えたクラスがある場合、そのクラスを簡単に拡張して、拡張機能を備えたクラスを作成できます。

コードの再利用 関数はクラスにカプセル化され、クラスは独立した実体として存在するため、クラスライブラリを提供するのは非常に簡単です。

複数人で協力してプロジェクトを開発する方が適しているため、多くの大規模および中規模のWebサイトが開発にOOPを使用することを選択するようになりました。

この記事では、PHPを使ったオブジェクト指向プログラミングの最も基本的な方法やコード例、クラスの作成方法やクラスのインスタンスの生成方法などを中心に解説しています。あくまで入門編であり、非常に簡単です。これを徹底的に学びましょう。 php 初心者のみに適しています

パブリックとはグローバルを意味し、クラスの内部サブクラスと外部サブクラスの両方からアクセスできます。

コードは次のとおりですコードをコピー
クラステスト{
public $name='ジャンキング',
$sex='男性',
$年齢=23;

関数 __construct(){
echo $this->年齢.'
'.$this->名前.'
'.$this->性別.'
';
}

関数 func(){
echo $this->年齢.'
'.$this->名前.'
'.$this->性別.'
';
}
}


$P=新しいテスト();
echo '

';
$P->年齢=100;
$P->name="雨";
$P->sex="女性";
$P->func();
?>

プライベートはプライベートを意味し、このクラス内でのみ使用できます;

コードは次のとおりです コードをコピー



クラステスト{
private $name='ジャンキング',
$sex='男性',
$年齢=23;

関数 __construct(){
$this->funcOne();
}

関数 func(){
echo $this->年齢.'
'.$this->名前.'
'.$this->性別.'
';
}

プライベート関数 funcOne(){
echo $this->年齢.'
'.$this->名前.'
'.$this->性別.'
';
}
}


$P=新しいテスト();
echo '

';
$P->func();
$P->age=100; // プライベート プロパティ Test::$age にアクセスできません
$P->name="Rainy" // プライベート プロパティ Test::$name にアクセスできません
$P->sex="女性" // プライベート プロパティにアクセスできません Test::$ Female
$P->funcOne() // コンテキスト ''
からプライベート メソッド Test::funcOne() を呼び出します。 ?>

Protected は保護されていることを意味し、このクラス、サブクラス、または親クラスでのみアクセスできます。

- データの抽象化と情報の隠蔽

-相続

- ポリモーフィズム

PHP でクラスをカプセル化に使用する方法:

もちろん独自の方法を使用することもできますが、基準があるのは常に良いことです。

PHPのクラスのデータメンバーは、値が割り当てられるまでは「var」を使用して定義されます。データ メンバーは、整数、配列、連想配列 (連想配列)、またはオブジェクトの場合があります。メソッドは、クラス内の関数として定義されます。メソッド内のデータ メンバーにアクセスするには、次のように $this->name を使用する必要があります。このメソッド、それ以外の場合は、メソッドの関数のローカル変数です。

newを使用してオブジェクトを作成します

コードは次のとおりです コードをコピー

クラス何か {
// OOP では、クラスは通常、大文字
で始まる名前が付けられます。 var $x;

関数 setX($v) {
// メソッドは小文字で始まり、小文字で区切ります
// メソッド名の単語の例 getValueOfArea()
$this->x=$v
}

関数 getX() {
$this->x を返します。 }
}

?>

コードは次のとおりです コードをコピー

$obj = 新しい何か;

次にメンバー関数を使います

コードは次のとおりです コードをコピー

$obj->setX(5); $see = $obj->getX();

setXメンバー関数は、オブジェクト(クラスではない)obj内のメンバー変数に5を代入し、getXは値5を返します。

オブジェクト参照を使用してメンバー変数にアクセスすることもできます。例: $obj->x=6; ただし、これは適切なオブジェクト指向プログラミング方法ではありません。メンバー変数の値を設定するにはメンバー関数を使用し、メンバー変数を読み取るにはメンバー関数を使用することを強くお勧めします。メンバー関数を使用する以外はメンバー変数にアクセスできないと信じているなら、あなたは優れたオブジェクト指向プログラマーになれるでしょう。 しかし残念ながら、PHP 自体には変数をプライベートとして宣言する方法がないため、不正なコードが存在することが許されています。

PHPにおける継承はextendを使って宣言します。

コードは次のとおりですコードをコピー

このように、クラス「Another」のオブジェクトは、親クラスのすべてのメンバ変数とメソッド関数に加えて、独自のメンバ変数とメンバ関数を持ちます。例:

class Another は何かを拡張します {

変数 $y; 関数 setY($v) {
// メソッドは小文字で始まり、小文字で区切ります
// メソッド名の単語の例 getValueOfArea()
$this->y=$v
; }

関数 getY() {

$this->y を返します。 }

}

?>

コードは次のとおりです コードをコピー

$obj2=新しい
$obj2->setX(6); $obj2->setY(7);

多重継承はサポートされていないため、1つのクラスを複数のクラスから継承させることはできません。

継承されたクラスでは、メソッドを再定義するために再定義できます。「Another」で getX を再定義すると、同様に、メンバー変数の名前が同じである場合は、「Something」のメンバー関数 getX にアクセスできなくなります。親クラスの場合、継承されたクラス変数は同じ名前の親クラス変数を非表示にします。

クラスのコンストラクターを定義できます。コンストラクターはクラスと同じ名前のメンバー関数で、クラスのオブジェクトを作成するときに呼び出されます。

コードは次のとおりですコードをコピー つまり、次のメソッドを使用してオブジェクトを作成できます:
クラス何か {

var $x;

関数 Something($y) {

$this->x=$y
}

関数 setX($v) {

$this->x=$v
}

関数getX() {

$this->x を返します。 }
}

?>

コードは次のとおりです$obj=新しい何か(6);

コンストラクターはメンバー変数 x に 5 を自動的に代入します。コンストラクターとメンバー関数はすべて通常の PHP 関数なので、デフォルトのパラメーターを使用できます。

コードをコピー

コードは次のとおりです コードをコピー

関数何か($x="3",$y="5")

それでは、

コードは次のとおりです コードをコピー

$obj=new Something(); // x=3 および y=5
; $obj=new Something(8) // x=8 および y=5
; $obj=new Something(8,9) // x=8 および y=9

;

デフォルトパラメータの定義方法はC++と同じなので、Yに値を渡すことはできませんが、Xにはデフォルト値をとらせます。実パラメータがなくなったら、関数は左から右に渡します。デフォルトのパラメータを使用します。

継承クラスのコンストラクタが呼び出されたときのみ、継承クラスのオブジェクトが作成され、親クラスのコンストラクタは呼び出されないのがPHPの特徴です。コンストラクター呼び出しチェーンはオブジェクト指向プログラミングの特徴です。基本クラスのコンストラクターを呼び出したい場合は、継承クラスのコンストラクターで明示的に呼び出す必要があります。これが機能するのは、親クラスのすべてのメソッドが継承されたクラスで使用できるためです。

?>

ポリモーフィズム。

コードは次のとおりです コードをコピー

関数 Another() {
$this->y=5; $this->Something(); // 基本クラスのコンストラクターへの明示的な呼び出し。 }

?>
コードは次のとおりです コードをコピー

関数 niceDrawing($x) {
//これがクラス Board のメソッドであると仮定します。 $x->draw(); }

$obj=新しいサークル(3,187)

$obj2=新しい長方形(4,5);


$board->niceDrawing($obj); //Circle のdrawメソッドを呼び出します。 $board->niceDrawing($obj2); // Rectangle.

のdrawメソッドを呼び出します。


カプセル化に関連する魔法のメソッド:

__set(): privateメンバーのプロパティ値を直接設定する際に自動的に呼び出されるメソッドです

__get():プライベートメンバーのプロパティ値を直接取得する際に自動的に呼び出されるメソッドです

__isset(); このメソッドは、issetがオブジェクト内のプライベートプロパティが存在するかどうかを直接チェックするときに自動的に呼び出されます

__unset(); は、オブジェクト内のプライベートプロパティを直接削除するときに自動的に呼び出されるメソッドです

http://www.bkjia.com/PHPjc/372033.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/372033.html技術記事オブジェクト指向設計は、PHP プログラム開発において非常に重要なコンテンツ ブロックです。上級 PHP プログラマーになりたい場合は、オブジェクト指向設計の具体的な使用方法と記述方法を理解する必要があります。 簡単なメンテナンスモジュール...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。