ホームページ >バックエンド開発 >PHPチュートリアル >PHP の BigerFly 1. 匿名関数を使用してフォーム データ処理をクールにする
Muyou bigFly についてこれは Mumu の最初の PHP シリーズです biggerFly翻訳は Bi Ge Fei~ Qi です。PHP なのでここにありますキャメルケースネーミング 名前の意味の通り、すごいPHPの使い方を教える連載です823db3943044a0a9a620ada8d4b1d965もちろん、昔はすごいと思っていたこともありますが、結果は変わってきましたf6236f917cb4ada62f5c34ba44124864Mumu の想像力は常にそうであるため、最後にこれらのコードについていくつかコメントします。Mumu がおかしくなるのを見たくない場合は、他のシリーズにジャンプしてください。ポータルは最後にあります。最初の号のメイン トピックに入ります。
フォーム データを受信し、フォーマットして処理し、データベースに挿入します。
フォームで送信されたデータを想定します
$postData = [ ['name' => 'name1', 'createtime' => '2000-01-01', 'email' => 'email1@example.com' ], ['name' => 'name2', 'createtime' => '2000-02-01', 'email' => 'email2@example.com' ], ['name' => 'name3', 'createtime' => '2000-03-01', 'email' => 'email3@example.com' ], ['name' => 'name4', 'createtime' => '2000-04-01', 'email' => 'email4@example.com' ],];
function format( $data ) { $format = $data; $format['createtime'] = strtotime( $data['createtime'] ); return $format;}
もちろん、上記は参照に置き換えることもできます 参照はメモリのオーバーヘッドを減らすことができます~
(スクリプトを読み込んでいます...) Mumu: 今回は必要なフォーマット メソッドをあまり書きたくないのです。フォームを送信するためのフォーマットを書いて、次回また別の場所にフォーマットが必要になるたびに定義するのが面倒ですよね?検証のための validate メソッドやその他の abc メソッドがある場合は... ああ、勘弁してください: 匿名関数を試してみてはどうでしょうか。むむ:え?匿名関数とは一体何でしょうか? biggerFly: 匿名関数ポータルはここにあります。行きましょう Mumu: とてもめまいがするので、どうすればよいか教えてください...biggerFly:
class A { public $data = NULL; public $format = NULL; /** * 执行 */ public function run() { foreach ( $this->data as $key => &$data ) { if ( is_callable( $this->format ) ) { $method = $this->format;//必须赋值给一个变量,不然会报错:format方法不存在 $method( $data ); } } } /** * 设置data数组 * @param array $data */ public function setData( $data ) { $this->data = $data; return $this; } /** * 获取data数组 * @return array */ public function getData() { return $this->data; }}
Mumu: それでどうですか。 ? ? bigFly の使い方: シミュレーション を例にします
$a = new A();$a->setData( $postData );$a->format = function( &$data ) { $data['createtime'] = strtotime( $data['createtime'] );};$a->run();var_dump( $a->getData() );
の実行結果 はここでは 2 次元配列 $ の createtime の日付形式を省略しています。 postData はタイムスタンプに変換されます。 bigFly: このようにして、クラス A でよく使用されるいくつかのメソッドを定義する限り、いくつかのよく使用されるルールなどを繰り返し定義することなく関数を作成できます。 🎜> は呼び出し可能な転送ドアです。より厳密な場合は、関数
この処理により、以下のようなコードも書けるかもしれませんが、ここでは実装は書きません
$a->validate = function( &$data ) {$data['email'] = array( 'email', 'unique' );$data['name'] = array( 'required', 'unique' );$data['createtime'] = array( 'datetime', function($time) { if ( strtotime( $time ) >= time() ) { return false; } else { return true; } } );};ポータル