はむはむエンジニアぶろぐ

このブログのコンセプトは"ハッキングの為なら愛する家族を傷つけることをいとわない" 自分にとってエンジニアリングは "手段ではなく生きる目的" である

オブジェクト指向

親クラスのフィールドへのアクセス場合は、getter/setterを使ったほうがいいと思う

他の言語は知らないけど、PHPではvisibilityが public 又は protected で宣言された親クラスのフィールドに $this でアクセスできてしまう。 public でフィールドを宣言することは、カプセル化を壊すことになるのでやらないと思うけど。 親クラスのフィール…

頻出して使うテスト用のインスタンスの生成に関する話

この記事はオブジェクト指向 Advent Calendar 2015 - Qiita 1日目の記事です。 担当は@secret_hamuhamu です。 今回は、「Object Motherパターン」と「Test Data Builderパターン」についてまとめました。 これら、2つのパターンはテスト時に用いるパターン…

Decoratorパターンで既存のクラスに機能追加をする

Decoratorパターンは、GoFのデザインパターンの一つです。 既存のオブジェクトに新しい機能や振る舞いを動的に追加することを可能にする。 Decoratorパターン - wikipedia 既存のクラスに対して、機能追加を行おうというものです。 ここで、重要なのが既存の…

【PHP】メソッドチェーンで、記述できる バリデーションクラスChainValidatorを作った

メソッドチェーンで、記述できる記述できる バリデーションクラスChainValidatorを作ってみた。 作ったきっかけ 毎回、バリデーション書くのがめんどくさい 汎用的にバリデーションロジック部分のみ書き換えたい 自分にとって理想なバリデーション機構を目指…

マーカーインターフェースを使った例外設計

マーカーインターフェースを使った例外設計をPHPで行います。 マーカーインターフェースは、実装を持たない空っぽのインターフェースです。 こんなやつ。

PHPで例外チェーン

オブジェクト指向プログラミングで、例外処理をする際は 例外チェーン を意識せねばなりません。 例えばこのように、catchの中でさらに例外を投げ直していて(throw)例外チェーンをしていないとどうなるか? method1(); $this->method2(); $this->method3(); …

Tell, Don't Ask [ 求めるな、命じよ ]

Tell, Don't Ask は、オブジェクト指向プログラミングのよいとされる考え方の一つです。 Tell, Don't Ask は、日本訳で 求めるな、命じよ と訳されているのが、多いみたいですね。 オブジェクト指向というのは、役割を思ったオブジェクト同士が協力(コラボレ…

PHPでDIをする

PHPでDI( Dependency Injection )をします。 DIとは、日本語訳で依存性の注入です。 依存性というのは、クラスから別のクラスを呼び出している状態です。 例えば、犬が鳴いたら猫も鳴く。 meow(); } } Dogクラスのbarksメソッドは、Catクラスに依存していま…

Perl クラス変数とメンバ変数

Perlでクラス変数とメンバ変数の違いを見ていきます。 my $hoge; sub new { my $class = shift; return bless { hoge => undef }, $class; } クラス内で、 宣言された$hoge と blessされたhoge 。 前者はクラス変数、後者はメンバ変数です。