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のために書くことを約束しました ...

Source: https://habr.com/ru/post/J47785/


All Articles