うん、これらの人、今私はあなたにOOPの魔法を紹介します。
序文の代わりに。 言語の著者について
開発者が吸った草についてもっと正確に言えば、関数をどのように呼び出すことができますか? さて、文字列を操作するための関数を例にとってみましょう:
- str_replace(文字列$ searchを探し、文字列$ subject [、total changed&$ count]で$ replaceに置き換えます)
- strpos($ haystack行で、$針を探して[$オフセット文字をスキップ])
- substr_replace(文字列$ string、$置換による置換、位置$ start [、$ length]から)
- nl2br(文字列$ string [を変更、これは$ is_xhtml])
ご覧のとおり、非常に悲観的であり、配列を取得した場合、ある場所では関数が結果を返し、別の場所では参照によって機能します... brr ...
言語自体にも標準がないため、この言語で作業する際に多少の不快感があります。 はい、他の人は目を細めています...
PHPはOOP言語ではありません
この話をよく聞きます。 私はそれを書き直すことにしました:)
決定し、書き直した-
配列-oArray
このクラスには、次の標準関数が含まれます。
- array_diff-配列の分散を計算する
- array_fill-配列を特定の値で埋める
- array_filter-コールバック関数を使用して配列にフィルターを適用します
- array_flip-配列値を交換する
- array_key_exists-指定されたキーまたはインデックスが配列に存在するかどうかを確認する
- array_keys-すべての配列キーを選択する
- array_map-コールバック関数を指定された配列のすべての要素に適用する
- array_pop-配列の最後の要素を取得する
- array_product-配列値の積を計算する
- array_push-配列の最後に1つ以上の要素を追加します
- array_rand-配列から1つ以上のランダムな値を選択する
- array_reverse-要素を逆順にした配列を返す
- array_search-配列内の特定の値を検索し、成功した場合は対応するキーを返す
- array_shift-配列の最初の要素を取得する
- array_slice-配列スライスを選択する
- array_splice-配列要素のシーケンスを削除し、別のシーケンスに置き換えます
- array_sum-配列値の合計を計算する
- array_unique-配列から重複した値を削除する
- array_unshift-配列の先頭に1つ以上の要素を追加する
- array_values-すべての配列値を選択
- sort-配列をソートします
- rsort-配列を逆順に並べ替える
- natsort-「自然順序」アルゴリズムを使用して配列をソートする
- natcasesort-「自然順序」アルゴリズムを使用して配列をソートします。大文字と小文字は区別されません
- ksort-キーで配列をソートする
- krsort-キーで配列を逆順でソートする
- implode-配列要素を文字列にマージする
また、少し便利なギャグ:
- to_url-http_build_queryのラッパー
- clear-空の配列要素を削除します
- 奇数-奇数のアイテムのみを残す
- 偶数-偶数要素のみを残す
- size-sizeof関数のラッパー
array_ *という形式のすべての関数について、このプレフィックスを削除しました(結局、配列で何が機能するかは既にわかっています)。残りの関数は__callメソッドとリフレクションの良心にあります。
文字列-oString
このクラスには、次の標準関数が含まれます。
- addlashes-文字列内の特殊文字をエスケープします
- count_chars-文字列内の文字に関する情報を返す
- crc32-文字列のCRC32を計算します
- crypt-不可逆暗号化(ハッシュ)
- explode-文字列を部分文字列に分割する
- html_entity_decode-HTMLエンティティを一致する文字に変換する
- htmlentities-文字を対応するHTMLエンティティに変換します
- htmlspecialchars_decode-特殊なHTMLエンティティを対応する文字に戻す
- htmlspecialchars-特殊文字をHTMLエンティティに変換する
- ltrim-行の先頭からスペースを削除する
- md5-文字列のMD5ハッシュを返します
- money_format-金額を金額としてフォーマットする
- nl2br-各改行の前にHTML改行コードを挿入
- number_format-グループで区切られた数値をフォーマットします
- parse_str-文字列を変数に解析する
- rtrim-行末からスペースを削除する
- sha1-文字列のSHA1ハッシュを返します
- sprintf-フォーマットされた文字列を返します
- str_pad-文字列に別の文字列を指定された長さまで埋め込む
- str_repeat-繰り返し文字列を返します
- str_replace-検索文字列を置換文字列に置き換えます
- str_ireplace-str_replace()の大文字と小文字を区別しないバージョン
- str_word_count-文字列内の単語に関する情報を返す
- strip_tags-文字列からHTMLおよびPHPタグを削除する
- stripslashes-addslashes()によって生成された文字エスケープを削除します
- strstr-部分文字列の最初の出現箇所を見つける
- stristr-strstr()関数の大文字と小文字を区別しないバリアント
- strpos-部分文字列の最初の出現位置を返します
- stripos-大文字と小文字を区別しない部分文字列の最初の出現位置を返します
- strrpos-文字が最後に出現した位置を返します
- strripos-大文字小文字を区別せずに部分文字列が最後に出現した位置を返します
- strrev-文字列を反転
- strtolower-文字列を小文字に変換します
- strtoupper-文字列を大文字に変換する
- substr_count-部分文字列の出現回数を返す
- substr_replace-文字列の一部を置き換えます
- substr-部分文字列を返します
- trim-行の先頭と末尾からスペースを削除します
- ucfirst-文字列の最初の文字を大文字に変換します
- ucwords-文字列の各単語の最初の文字を大文字にする
- wordwrap-改行文字を使用して、指定された数の文字に対して改行を実行します
また、少し便利なギャグ:
- add-文字列の連結
- insert-行を行に挿入します
- size-strlen関数のラッパー
str_ *およびstr *の形式のすべての関数について、このプレフィックスは削除されました。
また、URLを操作するための関数を割り当て、それらを別のクラス(oUrl)に詰め込みました。
- parse_url
- urlencode
- urldecode
スライド
次に、この作成の使用例を示します。
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のために書くことを約束しました ...