PHPおよびOOPマジック

David: Magic OOP

うん、これらの人、今私はあなたにOOPの魔法を紹介します。



序文の代わりに。 言語の著者について





開発者が吸った草についてもっと正確に言えば、関数をどのように呼び出すことができますか? さて、文字列を操作するための関数を例にとってみましょう:



ご覧のとおり、非常に悲観的であり、配列を取得した場合、ある場所では関数が結果を返し、別の場所では参照によって機能します... brr ...



言語自体にも標準がないため、この言語で作業する際に多少の不快感があります。 はい、他の人は目を細めています...



PHPはOOP言語ではありません





この話をよく聞きます。 私はそれを書き直すことにしました:)



決定し、書き直した- Rubyで 文字列と配列のラッパーとなるいくつかのクラス。 これらのクラスには頻繁に使用される関数のみが含まれ(私の謙虚な意見では)、残りはリフレクションに割り当てられました。



配列-oArray





このクラスには、次の標準関数が含まれます。







また、少し便利なギャグ:





array_ *という形式のすべての関数について、このプレフィックスを削除しました(結局、配列で何が機能するかは既にわかっています)。残りの関数は__callメソッドとリフレクションの良心にあります。



文字列-oString





このクラスには、次の標準関数が含まれます。







また、少し便利なギャグ:





str_ *およびstr *の形式のすべての関数について、このプレフィックスは削除されました。



また、URLを操作するための関数を割り当て、それらを別のクラス(oUrl)に詰め込みました。





スライド



次に、この作成の使用例を示します。

oArray //空の配列を作成

-> range 0、100、10 //範囲のラッパー

-> size // sizeofのラッパー

;




どうですか? また、脳に食べ物を与えます。

<?php



//要素の配列を作成します

// => array( 'module'、 'controller'、 'action')

oArray 'module' 'controller' 'action'

// array_combineのラッパー

// => array( 'module' => 'default'、 'controller' => 'index'、 'action' => 'index')

-> 結合 oArray 'default' 'index' 'index'

// http_build_queryのラッパーはoUrlを返します

// =>モジュール=デフォルト&コントローラ=インデックス&アクション=インデックス

-> to_url

//文字列を先頭に追加します

// => http://domain.com/?module=default&controller=index&action=index

-> 挿入 'http://domain.com/?'

// parse_urlのラッパーはoArrayを返します

-> 解析

//配列['host']を返します

// => domain.com

-> ホスト

;




そしてまた:

oString "それは私のやり方です"

// str_replace =>「あなたのやり方です」

-> 置換 'my' 'your'

// substr => "それはあなたです"

-> sub 0、8

// str_pad => "それはあなたです..."

-> パッド 11 '。'

// str_repeat => "それはあなたです...それはあなたです..."

-> 繰り返し 2

// oArray => array( 'It's you'、 'It's you'、 '')を取得します

-> 爆発 '...'

//空の要素を削除します

-> クリア

// array_merge => array( 'It's you'、 'It's you'、 'Yes'、 'No'、 'Maybe')

-> merge array 'Yes' 'No' array 'Maybe'

//破裂=>​​それはあなたです;それはあなたです;はい;いいえ;たぶん

->内 ';'

// return It's you; It's you; Yes; No;たぶん

-> get

;




オブジェクト-oObject



通常のクラスでさえ、オブジェクトのプロパティにトリッキーなゲッター/セッターを追加することで改善できます(RoRで見張っています):



クラス MyClass Object_Object {を 拡張します

//これは本当に保護されたプロパティです

protected $ _protected ;



//これらのフィールドには、ゲッター/セッターを定義できます

保護された$タイトル ;

保護された$の説明



//ゲッター/セッターのないパブリックプロパティ

パブリック $データ ;



/ **

*タイトルプロパティのセッター

*

* @param string $ value

* @return mixed

* /

関数 setTitle $ value {

$ this- > title = ucfirst $ value ;

}



/ **

*タイトルプロパティのゲッター

*

* @return mixed

* /

関数 getTitle {

$ this- > titleを 返し ます。 「!!!」 ;

}

}



$ MyClass = new MyClass ;

$ MyClass- > title = '記事のタイトル' ;



echo $ MyClass- > title ;




この詐欺の結果、次の結果が得られます。



記事タイトル!!!




ご覧のように、そのようなクラスには存在する権利さえあります;)



ここに私がした簡単な作成があります。私のブログからダウンロードできます:



oObject ver.0.1



PSこれらのクラスは、実世界のプロジェクトに住んでいると主張せず、非OOP PHPの神話を払拭するように設計されており、初心者プログラマーによる研究のための良い資料としても役立ちます...



PPS私はこれをholivaraのために書くことを約束しました ...



All Articles