OOP の形式を避け、POP の考えを取り入れてください
長い間技術的な記事を投稿していなかったので、今日兄弟が 21PHP でこの投稿を投稿しているのを見て、学習を強化するのに少し役に立ちました。 OOP
----- -------------------------------------- ---------- --
OOPの形式を避け、POPの考え方を
PHPのOOP(オブジェクト指向プログラミング)のサポートの強化とプログラミングのアイデアの発展により、ますますPHP プログラマーは、簡単に学習することで、OOP プログラミングの基本スキルをすぐに習得できるようになります。プログラマーが作成するコードには、class や new などの文字列がますます増えています。 OO 形式の罠にはまりましたか? PO 思考の
プログラミングの罠はどうでしょうか?
POP 時代のプログラマーは、家のすべてのドアの価格を計算するために、このような関数を作成します
。コード:
/*********************************************
関数:priceOfHouseDoor($num, $price )
関数: すべてのドアの価格の合計を計算します
パラメータ: $num ドアの数、$price 各ドアの価格
備考:surfchen @ http://www.yubeinet.com/
** ***** ********************************* */
functionpriceHouseDoor($num,$price)
{
return $num*$price;
}
echo PriceHouseDoor(2,5);//価格を出力
または単純に実行します新しいプロセス:
Code:
$doors=2;//ドアの数
$price=5;//各ドアの価格
echo $doors*$price;//出力価格
これは典型的な POP です。 OOP を理解した後、多くの人はこの関数を実装するコードを次のように書くかもしれません:
Code:
class house
{
/*********************************************
関数: getDoorPrice($num, $price )
関数: すべてのドアの価格の合計を計算します
パラメーター: $num ドアの数、$price それぞれのドアの価格
備考:surfchen @ http://www.yubeinet.com/
** ***** **********************************/
function getDoorPrice($num,$price)
{
return $num *$price;
}
}
$house=new house;
echo $house->getDoorPrice(2,5);//出力価格
このコードがOOP の代表 - クラスとインスタンス化 では、これはオブジェクト指向プログラミングなのでしょうか?
よく見てみると、このクラスは実際には上記の PriceOfHouseDoor($num, $price) 関数のオブジェクト指向形式であることがわかりました。
さて、まずオブジェクト指向プログラミングとは何かについて説明します。私の理解では、オブジェクト指向プログラミングには 2 つの中心的な内容があります。1 つはクラス、もう 1 つはインスタンスです。このタイプの個体。インスタンスの属性 (値) とメソッド (関数) は、それぞれこの個体の特定のコンテンツとアクションです。 getDoorPrice( $ というメソッドがあります) を見てみましょう。 num, $price) では、2 つのパラメーターが導入されます。1 つは家のドアの数で、もう 1 つは家のドアの価格です。この方法を使用すると、これら 2 つの値が一時的に構築されることがわかりました。現実の生活では、家のドアは家と何の関係もありません。これは当然のことです。ご存知のとおり、OOP は実際には私たちの現実世界の縮図です。 OOP では家と家のドアの間につながりがなく、理解できません。これは非 OO の考え方です。
それでは、実際の OO をどのように使用して上記の機能を実現すればよいでしょうか。次のコードを参照してください。 :
クラスハウス
{
var $doors;//ドアの数
var $pricePerDoors;//各ドアの価格
function setNumOfDoors($num){$this->doors=$num;}//固定ドア数量を設定します
function setPricePerDoor($price){$this->pricePerDoors=$price;}//各ドアの価格を設定します
/***************
*ドアの価格を確認*
*************/
function getDoorPrice()
{
return ( $this->doors)*($this->pricePerDoors);
}
}
$house=new house;
$house->setNumOfDoors(2);// ドアの数を設定します
$house- > ;setPricePerDoor(5);//各ドアの価格を設定します
echo $house->getDoorPrice();//出力
上記のコードのドアの数と家の価格が次のとおりであることが明確にわかります。これが本当のオブジェクト指向だと思いませんか? ^_^