Architect Note


しがないPHPerのブログ

PDOの真の力を開放する - PHPでデータベースを扱う(3)

ちょっと遅れましたが、シリーズの第3回です。前回までに論じた内容をふまえて、簡単な実装を示します。↓前回までの内容はこちら。 DAOの悪夢 - PHPでデータベースを扱う(1) - 泥のように ドメイン駆動設計という救世主 - PHPでデータベースを扱う(2) - 泥のように 題材 「記事にタグを設定できるブログ」みたいなシステムを考えてみます。ブログ記事を示すEntryテーブル、タグを表すTagテーブルの二つを用意しました。MySQL Workben..


ドメイン駆動設計という救世主 - PHPでデータベースを扱う(2)

前回の「DAOの悪夢 - PHPでデータベースを扱う(1)」の続きです。 DAOの問題点整理 前回、ぶくぶく膨れ上がったDAOを前に困っているという話を書きました。何が問題なのか整理するとこんな形になります。 DAOクラスを分割できない。メソッドが増えすぎて管理しきれない メソッド同士のインターフェースがバラバラで管理しきれない。stringを要求したりintを要求したり、はたまたarray()で名前付き引数のように渡すことを要求したり。 引数..


DAOの悪夢 - PHPでデータベースを扱う(1)

最近、昔の自分が書いたコードをメンテしているのですが、何というか、「ええい、誰じゃこのコードを書いたのは!!」と叫んでは「…4年前の俺でした…」とセルフツッコミを繰り返しています。すごく読みにくいコードで、ストレスたまりまくりです。そのため、「今ならどう書くか」をよく考えました。ちょっと長くなるかもしれませんが、アンチパターンとして解説したいと思います。 DAOパターンについて 私が鬱々としてメンテしているコードですが、データベースとのやり取りを行うためのクラスです。..


メソッドチェーンDSLでブロックを作るテクニック

PHP勉強会でうまく説明できなかったので、ちゃんとした説明を。PHPが対象ですが、たぶんほかの言語でも応用できる話です。 メソッドチェーンで言語内DSLを作るとき、ブロック状の構文のようなものが必要になることがあります。XML_BuilderではXMLのツリー状の構文を再現するため、この構文を多用しています。 <?php XML_Builder::factory() ->root() ->child1() ->child..


第59回PHP勉強会@東京でXMLとかDSLの話をしてきました

昨日、PHP勉強会に行ってきましたので発表に使ったスライドをば。 話した内容はXML_Builderの宣伝と、メソッドチェーンの小手先テクニックとかです。 Xml builderの紹介 View more PowerPoint from hinakano PHP勉強会で発表するの初めてで、緊張しまくってあんまり内容覚えてないですw 私はDSL大好きなので、sizuhikoさんの紹介されてた「Spec for PHP」は、プリプロセッサを使ってPH..