PHP
PHP Stormは、Postfix Completion(ポスフィックス補完)というコーディングの補完をする記法に対応している。 これを覚えることで、コーディングスピードは間違いなく上がるだろう。
PHP BLT #6 に参加してきた。 今週、別の勉強会でLTするので今回は「まとめブログ書く枠」で参加。
PHP BLT #5 に参加してきたのでslideをまとめておく。 次回は、なにか話したいな〜
Comporserでライブラリをインストールをする際にバージョンを指定できます。 というより、今後も安定して使いたいのであればバージョンを指定してインストールしたほうが良いと思います。 なんでもかんでも、最新版がいいと思い込んでいる人はバージョン指定…
PHP BLT #2というイベントに参加し、LTしてきました。 無料で会場をお貸しいただいた株式会社メルカリ様ありがとうございました。 第一回のPHP BLTに参加したかったけど、抽選に落ちたので第二回である今回に参加できて良かったです。
他の言語は知らないけど、PHPではvisibilityが public 又は protected で宣言された親クラスのフィールドに $this でアクセスできてしまう。 public でフィールドを宣言することは、カプセル化を壊すことになるのでやらないと思うけど。 親クラスのフィール…
例えば、このようにPHPをJavaScriptで、動的に組み立てられているコードには問題点が2つある。 <script type="text/javascript"> var hoge = '<?php echo $hoge ?>'; </script> セキュリティ面 メンテナンス面 である。
この記事はPHP Advent Calendar 2015 - Qiita 14日目の記事です。 担当は@secret_hamuhamu です。 みなさんは、PHPのテスティングツールに何をお使いでしょうか? Behat?PHPSpec?PHPUnit? 今日は、PHPUnitの便利な機能をいくつか紹介したいと思います。 …
この記事はアルゴリズム Advent Calendar 2015 - Qiita 7日目の記事です。 担当は@secret_hamuhamu です。 私は、理系出身の人間ではなく数学もほとんどできないので、論理的に数学的に説明できていないと思います。 ですが、このような説明の仕方のほうが、…
この記事はオブジェクト指向 Advent Calendar 2015 - Qiita 1日目の記事です。 担当は@secret_hamuhamu です。 今回は、「Object Motherパターン」と「Test Data Builderパターン」についてまとめました。 これら、2つのパターンはテスト時に用いるパターン…
GoFのデザインパターンの一つStrategyパターンをPHPで実装してみた。 Strategyとは「戦略」のことで、戦略とはアルゴリズムのことを指しています。 Strategyパターンは、アルゴリズム(振る舞い)をカプセル化し振る舞いの差替えや追加、削除をしやすくするも…
PHP MatcherというPHP用のマッチャーを見つけたので、使ってみた。 PHPUnitなどのテスティングツールと合わせて使うことができる。 マッチャーとは? テストの表現力を高めることができる アサーションの条件をより詳しくかける マッチャーを使うことで、複…
PHPUnitや他のxUnit系に assertThat という少し複雑な条件を書くことができるアサーションがあります。 PHPUnitで、たまに使う assertThat を紹介してみようかなと思います。
ProxyパターンとDIコンテナを使うことで、アスペクト指向プログラミングを実現できます。 アスペクト指向は、オブジェクト指向で解決しにくい問題を解決しましょうというパラダイムです。 今回のアスペクト指向プログラミングの対象は、ロギングです。 言語…
2000人を超えて、人たちが集まったPHPカンファレンス2015でLTをしてきました。 めちゃくちゃ楽しかったです!!スピーカーの方々、並びにスタッフの方々お疲れ様でした!! 私は、LT 兼 スッタフという立ち位置でした。 スタッフ参加したので、PHP7 Tシャツ…
gihyo.jpさんで、PHPカンファレンス 2015のスタッフとしてレポートを書かせて頂きました。 こちらが、書いたレポート 明日開催!PHPカンファレンス2015 直前レポート 明日も、例年通り当日のセッションをレポートします!! 参加者が、現時点で2000名を超え…
メソッドチェーンで、記述できる記述できる バリデーションクラスChainValidatorを作ってみた。 作ったきっかけ 毎回、バリデーション書くのがめんどくさい 汎用的にバリデーションロジック部分のみ書き換えたい 自分にとって理想なバリデーション機構を目指…
PHPカンファレンス2015で、LTと当日スタッフやらせてもらいます。 phpcon 2015 まだ、参加できるみたいなので、どうぞどうぞ〜。 ここまで大きいカンファレンスでLTやスタッフさせてもらうの初めてなので、楽しみです〜。 ちなみに、LTは「PHPでDIをする」っ…
マーカーインターフェースを使った例外設計をPHPで行います。 マーカーインターフェースは、実装を持たない空っぽのインターフェースです。 こんなやつ。
ValueObjectは、getterしかないオブジェクトです。 getterしか無いって何が嬉しいの?って感じかもしれませんが、特定の概念を説明する集合体として表現できます。 ようは、コードに概念の集合を語らせることが出来ます。 簡単なパターンなので、覚えること…
とあるPHPで実装されたOSSのトランザクション処理が、とてもエレガントだったのだがOSSの名前を忘れてしまった。 しょうがないので自分の記憶を頼りに真似してみようと思う。
オブジェクト指向プログラミングで、例外処理をする際は 例外チェーン を意識せねばなりません。 例えばこのように、catchの中でさらに例外を投げ直していて(throw)例外チェーンをしていないとどうなるか? method1(); $this->method2(); $this->method3(); …
2015年8月25日(火)にGMO Yours様で、開催されたPHP勉強会に参加してきました。 参加して思ったのが、業務で CakePHP を使っている方がとても多かったことですね。 時点は、 Laravel か Fuel PHP って感じでした。 せっかくなんで、LTしてきましたよ〜。 とい…
PHPでDI( Dependency Injection )をします。 DIとは、日本語訳で依存性の注入です。 依存性というのは、クラスから別のクラスを呼び出している状態です。 例えば、犬が鳴いたら猫も鳴く。 meow(); } } Dogクラスのbarksメソッドは、Catクラスに依存していま…
MVCのコントローラのレガシーコードによくあるのが、ファットコントローラです。 最初は、単純なロジックだけだったのでコントローラに書かれていたロジックが月日を追うごとに肥大化して誰も読めなくなったというのはあるあるです。 ファットコントローラの…
PHPでちょこっと動作確認したい時、 php -a を使うと思います。 しかし、変数や配列の中身を確認したい時少し不便です。 わざわざ、 echo や var_dump しなければならない。 こんなかんじに。 php > $var = 'hoge'; php > echo $var; hoge php > $ary = arra…
PHPUnitで、テストを回した際、コケまくるなんて経験ありませんか? ...FFFFFFみたいに。 実装のリファクタリングを行ったとか、テストがコケたまま放置されていたとか色々あると思います。 TDD的にこれらのテストの修正を一気に行うことは、アンチパターン…
不特定数のパラメタを受け取って連結するORのSQL文を動的に組み立てるコードを書くことはよくあると思います。 こんなやつ。 SELECT * FROM FRUITS WHERE (NAME = りんご OR NAME = みかん OR NAME = ぶどう) implode関数を使えば、スッキリ書くことが出来ま…
タイトルの通り、PHPUnitでカバレッジテストをやってみる。 Xdebugが必要なので、事前にインストールしておいてください。
例えば、PHPクラスを作成しようとした時に、PHPクラスを cp して、ファイル名変更。 コピーした新しいクラスをエディッタで開き、クラス名を変更。 コピーミスでトラブったりクラス名変更し忘れてテスト通らないとかあるあるだと思います。 Makefileとシェル…