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