Userテーブルに対してデータをinsertするメソッドを考えます。愚直なこんなインターフェースはどうでしょうか? class UserMapper { //... function insert( $nickname, $password, $firstname, $lastname, $birthday ) { //... } } …この引数を覚えていられる人はそう多くないと思います。もしプログラムを間違えて、nicknameとfirstnameを逆に指定してしまったら、本名がnicknameとして登録されてしまいます。本名が誤って表示されてしまうという致命的な事故につながります。危なっかしいプログラムですね。 では、順番を考慮しなくていいように連想配列にすればどうでしょうか? class UserMapper { //... function insert(array $data)
あけましておめでとうございます。 去年の暮からエリック・エヴァンスのドメイン駆動設計という5200円、500ページもする本を購入して読み始めた自分です。 エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践) 作者: エリック・エヴァンス,今関剛,和智右桂,牧野祐子出版社/メーカー: 翔泳社発売日: 2011/04/09メディア: 大型本購入: 19人 クリック: 1,360回この商品を含むブログ (129件) を見るあまりに勿体無かったので試しにこのドメイン駆動設計の設計思想にそって、簡単なアプリをSymfony2で作ってみました。 実際に作られたサイトは、 http://www.soichiro.org/sf こんな感じです。 id: test1@test.com pass: test1 でログインできます。(ユーザー作るだけなら
得られたリザルトはこうなりました。 array(3) { ["id"]=> string(1) "1" ["name"]=> string(7) "ikariya" ["age"]=> string(2) "72" } array(3) { ["id"]=> string(1) "2" ["name"]=> string(5) "katou" ["age"]=> string(2) "73" } array(3) { ["id"]=> string(1) "3" ["name"]=> string(6) "takagi" ["age"]=> string(2) "83" } array(3) { ["id"]=> string(1) "4" ["name"]=> string(8) "nakamoto" ["age"]=> string(2) "74" } array(3) { ["id"
「DSAS for Social を支える技術」 というネタでadvent calendar に挑戦します。 methane です。 PDOで MySQL を使うときは、みなさん $stmt = $con->prepare("..."); して $stmt->execute($values); とかしてプリペアドステートメントを利用されていると思います。 実は、このプリペアドステートメント、パフォーマンス的にはあまり良くありません。1つのクエリを実行するために、プレースホルダ付きのクエリを投げた後に、それに値をバインドして実行するコマンドを投げるので、1回のクエリを実行するのに2往復の通信が必要になるのです。 プリペアドステートメントにはパフォーマンスの利点(同じクエリを何度も発行するときにDBサーバーがクエリの解析を繰り返さないでもすむ)というものと、SQLインジェクション対策になる(正
swagger の概要と、基本的な使い方をサンプルを交えて書く。 なお、終始 PHP なので気をつけて下さい。 swagger の概要 開発ドキュメントをどうやって書くかという話題は常々ある。そして一番素直なアプローチを取ると、大抵 wiki みたいなアプリケーションを用意して、そこにドキュメント書こうぜという話になる。しかし、この管理は割とすぐ破綻してしまう。 理由はいろいろあるが、最新のコードに追従できなくなるとか、統一されたフォーマットを保証できず書き手によっては何を書いているのか全くわからないとかそういうケースが多い。 前者について、 swagger はアノテーションでドキュメントを書けるので違いは起きづらくなる。( それでも不足だが自分でライブラリ作って補った ) また後者に関していえば、swagger は API の仕様を記述するためのフォーマットを提供してくれる。 つまり、s
This document summarizes a presentation about MySQL and PHP. It discusses the mysqlnd extension in PHP and how it differs from using the libmysql client library. Key points include that mysqlnd is bundled with PHP by default now, has some additional features like asynchronous queries, but is still less mature than libmysql. The document also demonstrates how mysqlnd and libmysql return different d
PHP: pplusplus:faq PHP 8から、PHPは「PHP」と「P++」という2つの言語を提供するようになる。P++はPHPとの下位互換性を削りながら除々にPHPを静的型付け言語にする試みだ。 PHP開発者の中には2つの流派がある。PHPの源流であり現在の形である動的型付け言語としてのPHPを良しとする流派と、PHPをより強い静的型付け言語へと発展させたい流派だ。良い悪いの問題ではない。どちらの流派も正当な理由がある。しかし、ゆるふわな動的型付け言語とガチガチの静的片付け言語は同じ一つの言語として同居できない。 そこで、コードネームP++として、PHPを静的型付け言語に発展させる新しい言語の開発が提案された。P++はforkではなく、PHPと同じコードベースを共有する。PHP 8のバイナリはPHPとP++を同時に実装する。言語の切り替えは何らかの宣言によって指定する。 P++は
tl;dr PSR-7は普段PHPにてHTTPメッセージを扱うインターフェイスとしてそこそこ十分に機能する。メインユースケースの8割は満たすだろうが、PHPのポテンシャルの5割にも満たないかもしれない。だがそれで良い。 「今年は PSR-7 が来る」 つい先日、PHP-FIGのHTTPメッセージ用インターフェイスに関するPSR(PHP Standard Recommendations)のステータスがレビュー段階に入った。 https://github.com/php-fig/fig-standards/blob/master/index.md そこでこのエントリではPSR-7のインターフェイスが実際のフレームワークとアプリケーション間での利用の際に上手く機能するかについて考察する。なお、OOPとしての正しさについては深く言及しない(ヘッダーについてのデメテルの法則や、イミュータブル性などだ
前回$_ENVがだめならgetenv()で。を書きましたが、このネタの関連で、おぎさんが興味深い記事を書かれていたので紹介します。 php.ini-recommendedで、variables_orderがGPCSである理由と、PHP5のauto_globals_jit – おぎろぐはてな http://d.hatena.ne.jp/i_ogi/20071217/1197912203 自分のメモとして要約しました。 php.ini-recommendedでは、variables_order=”GPCS”なので、”E”が含まれていない おそらく”E”、すなわち$_ENVを作るコストの問題 かといってgetenv()を大量にコールすると、$_ENVよりもパフォーマンスは落ちるはず でも、環境変数なんか普通多用しないので、結局”E”がなくてもいいはず George Schlossnagle氏のZ
普段 Scala でトレイトを使いまくってるけれども PHP にも 5.4 からトレイトが入った。 trait の良いところは多重継承のできない言語で多重継承っぽいことができることだ。 use, use とつけていけば、いくらでも追加できる。DRY に書けてよいことだ。 対して悪いところはいとも簡単に複雑で暗黙的な依存関係が生まれることだ。 例えばこんなの <?php trait Greeting { public function say() { if ($this->location == 'ja') { echo 'こんにちは' . PHP_EOL; } else { echo 'Hello' . PHP_EOL; } } } class Location { } class US extends Location { use Greeting; private $location
DCI(Data, Context and Interactions)というキーワードがRuby界で流行っているとか。 DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien - Digital Romanticism DCIアーキテクチャについて語ってみるよ - uehaj's blog まだよく消化できていないのですが(そもそもMVCだって理解できた気がしない)、PHPではどう実装すればいいかを考えてみました。 DCI概略 斜め読みしたところ、MVCのModelが肥大化しがちなところなので、じゃあModelをData、Context、Interactionに3層分割して実装すればすっきりしますよ、という概念だと読めました。実装によってはContextではなくUseCase、InteractionではなくRoleと書いていることもあるみたい。
こんばんは!今日はPHPのisset()と!is_null()(is_null()を反転したもの)に同じ値を与えたとき*1、返されるbool値は常に等しいかどうかという小さいお話です。小さい話なのに長くなってしまいましたが…。物分かりが悪く、物忘れが激しく、読解力がない、そんな自分に説明するとなればこれでもかというくらい丁寧に書くしかないですよね。はい。ありがとう。面目ねぇ。そんな感じでやっていきたいと思いますが、まずisset()とis_null()の返す値と条件についておさらいしましょう。 isset() ([http //www.php.net/manual/ja/function.isset.php:title]):変数がセットされており、それが NULL でないならTRUEを返す is_null() ([http //www.php.net/manual/ja/function.
Highly modular Framework design Laravel Zero is a lightweight and modular micro-framework for developing fast and powerful console applications. Built on top of the Laravel components. Write powerful Console applications Laravel Zero has a simple and powerful syntax that enables developers to build very complex applications far more quickly than with any previous framework. For Artisans 100% Open
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く