This domain may be for sale!
![omotan.com](https://cdn-ak-scissors.b.st-hatena.com/image/square/70ca43e591ff07bda764a4a9de3e30157ab3abdf/height=288;version=1;width=512/http%3A%2F%2Fomotan.com%2Fwp-content%2Fuploads%2F2013%2F12%2Fschema-no1-140x105.png)
ここ半年くらい、PHPのオレオレスタックを見直しています。 まあ、こういうのは本来日々見直していく物なんですけど、新年だし。 ちょっと前までは ・WAF:Limonade ・テンプレートエンジン:素PHP+Limonade+オレオレヘルパ ・DBまわり:PDO+オレオレORM ・テスト:Selenium(ウッ頭が… ・ライブラリ管理:秘伝のZIP、require_once地獄 という、お客さんの都合もあって「5.1.6でもうごくやで!」スタックだったのですが 最近は ・WAF:Slim ・テンプレートエンジン:Twig+オレオレヘルパ ・DBまわり:PDO+illuminate/Eloquent ・テスト:PHPUnit ・ライブラリ管理:Composer という感じで「5.3ってレガシ〜」スタックになりました。*1 あと、バリデータとか、スクレイパーとか、標準関数で秘伝のタレ関数を作るよ
年末だというのに所用でPHPをMacに簡単に入れる方法を沢山調べています。 個人的にはphpenv+php-buildつかってます。 本当に色んな方法が世の中にはあるのですが、今回のターゲットはphp5.5以降が入る方法だけです。cliで使いたいだけなので、方法によってはMysqlとの接続拡張があるとか無いとかあると思います。 テストはMavericksとLionの素の状態からやってます。 XAMPP for Mac http://www.apachefriends.org/jp/xampp-macosx.html 定番ですが、現在だとPHP5.5.6が入ります。なんか他色々、いらない物もがさっと入ります。 ただ、完全に分離された領域にはいるので、既存環境は基本汚染されません。 俺はPHPだけしかいらないのですが、MysqlやApacheはあっても悪くないですね。 ただ、XAMPPのphp
初登場の @tototoshi です。今回は pixiv のユニットテストで利用しているモックライブラリの紹介をします。 ここ2ヶ月くらいの間、レガシー化したとあるモジュールのリファクタリングに取り組んでいました。 リファクタリングにはテストコードが必須です。しかし今ではすっかりテストを書く文化が根付いている pixiv にもテストコードがない時代がありました。リファクタリングが必要な古いコードにはテストコードがないことが多く、そういったコードに新たにテストをつけていくのはなかなか大変です。テストの概念のないプロジェクトはテスト可能なように設計・実装されていません。テストを書くのが大変なのではなく、書けるようにするまでが大変です。 特にやっかいだったのは DB を参照したりするようなスタティックメソッドを使ったメソッドのテストでした。以下のようなスタティックな Dao を使用した Serv
複数バージョンの PHP を入れようと思ったら有名な phpenv + php-build とか、phpbrew とかありますが、php-nabe ってものもあるよってことでひとつ。 php-nabe ってどこが良いの? PHP をビルドするのに PHP が不要 RBENV_ なんちゃらみたいに ruby っぽいのがでてこない シンプル! ただ、php-nabe という名前の PHP version manager を作った « Ooharabucyou に理由が書いてある通り、インストール可能な PHP のバージョンリストを内部で持ってないので、インストールする際には自分でバージョンを調べてインストールする必要があります。 この辺は自動で最新のバージョンリストを取得できるような仕組みがあれば本体に取り込まれるんじゃないかと思うので誰か詳しい人は pullreq でも送ればいいんじゃないか
Shin x blog Advent Calendar 2013 の 21 日目です。 第 12 回関西 PHP 勉強会 にて、PHP 5.6 に採用予定の phpdbg をひと足先に PHP 5.5.7 で触ってみました。 phpdbg phpdbg は、gdb ライクな PHP 用のデバッガです。ブレークポイントを設定して、その時点のコンテキストを確認したり、ステップ実行などができます。 phpdbg | php debugger インストール PHP 5.6 から同梱される予定の phpdbg ですが、これ自体はすでにリリースされており、PHP 5.4 から利用することが可能です。インストールには、PHP のソースコードが必要になるので、PHP も ソースからインストールします。 $ sudo yum -y groupinstall "Development Tools" $ sud
PHP Advent Calendar 2013 in Adventarの18日目です。昨日は、takc923さんの「PHPのissetの罠」でした。 「PDOでの数値列の扱いにはワナがいっぱい」を書いたところ、以下のように結構反響がありました。 PDOでの数値列の扱いにはワナがいっぱい — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something http://t.co/kDJAWzdMqr | 先日思いっきりハマったところ。 — K.K. (@kkmym) December 16, 2013 他の方も書いてるけど、バインドで型を明示すればおk / “PDOでの数値列の扱いにはワナがいっぱい — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or somethin
PDOを使ったデータベース操作でオブジェクトを扱う場合、不便なところが結構あります。 それを PDOStatement を拡張することで使いやすくしようという話を基本に、応用例としてJSON出力とCSVファイル出力の方法を紹介します。 オブジェクトで取得するためのフェッチモード フェッチモードには多彩なものが用意されているのですが、オブジェクトで取得する場合はどれも使いづらいです。 自分はいわゆるモデルクラスは不変オブジェクトにしたいよ派かつ、マジックメソッド大好きなので、その辺りの使いやすさについても注目してみます。 PDO::FETCH_OBJ 列名をプロパティに持つ匿名オブジェクト (stdClass) を返します。 匿名オブジェクトなんて連想配列と同じだし、今となっては意味がなさそう…。 PDO::FETCH_LAZY PHPマニュアルの記述からは PDO::FETCH_OBJ と
この投稿はPHP Advent Calendar 2013の13日目の記事です。昨日は@tanakahisateruのPHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪いでした。 現在twitterのタイムラインで、史上空前のSQLのエスケープブームが起こっています。 オレオレSQLセキュリティ教育は論理的に破綻している | yohgaki's blog 「プリペアードクエリが基本だけど、動的に SQL を組み立てる場合もあるから、そういう場合に備えてエスケープも知っておいたほうがいいかも」 - Togetterまとめ エスケープとプレースホルダをめぐる議論 - Togetterまとめ SQLインジェクション対策としてのプリペアドステートメントとエスケープについての議論 - Togetterまとめ IPAの「安全なSQLの呼び出し方」が安全になっていた | yohgak
この投稿はPHP Advent Calendar 2013の12日目の記事です。 PHP恒例行事の参照と三項演算子のdisりですが、そろそろあさってな議論はやめませんかという話です。 今年のPHP-dis大賞といえばこちら。 PHPとかいう糞言語|いんまのブログ ※ 追記: これ書かれたのは2012年でしたすんません。 なんで君たちそんなコードが必要なのかね、と。結論から先言うと、きみたちがPHPが使えないって思うのは、そんな挙動に左右されるようなコードを書くからでしょ、だからCとかRubyとかそういう簡単な言語でわかった気になっている初心者はまったくもう...というわけでPHPの言語文法の基礎んとこ、いきますね。 まず、PHPのarrayは「値」です。もちろん文字列も「値」です。値は値なんだけど、それはミュータブルです。PHPのarrayもしくは文字列の代入は、一見すると、ポインタを使わ
ことの始まり PHP の srand 関数について調べていて、ひょんな拍子にsrandのseedに文字列(numericである必要はあるけど)を渡せることを知った。 では、ここに long を超えるものを放り込むとどうなるのか。 では結果をごらんください。 「!?!?」 なぜこうなるのか 秘密は PHP 処理系の zend_parse_arg_impl 関数にあります。 zend_parse_arg_impl はphpの関数に渡された引数をパースする部分で、longを要求する関数にstringな値が渡された時の処理はこの部分ですね。 https://github.com/php/php-src/blob/master/Zend/zend_API.c#L335 さて、読み進めていくと「ん!?!?」ってなる行があるはずです。 この行ですね https://github.com/php/php-
ハイ、昨日のオレに引き続きFuelPHP Advent Calendar 2013の6日目です。 今回の内容もまたTwig絡みです。実は昨日の記事は、本日の記事の前準備になっていたのでした。 JavaScript側にPHPのオブジェクトを渡したい 最近のWebアプリはUIのインタラクションが凝っていて、ブラウザ側のJavaScriptで色んな制御をすることも当たり前になってきました。jQueryや様々なjQueryプラグインを駆使して、ユーザに分かりやすく使いやすいサービスを提供することは、もはやウェブエンジニアとしては持っていて当然のスキルになっています。 そのようなUIを作っている際に、JavaScript側に動作パラメータの初期値を渡すのに値を一つ一つテンプレート記法で埋め込むのが面倒だったので、一発で渡せるTwig Extensionを作ったので紹介します。 data_bind関数
これは PHP Advent Calendar 2013 - Qiita [キータ] の5日目の記事です。 みなさんこんにちは。fivestarことクロコスの小川です。 Composerを使うと簡単に依存ライブラリを管理することが可能です。Composer とはなんぞや、という方は下記の記事あたりに目を通してみてください。 Composerを活用したモダンな開発手法をPHPカンファレンス2013で発表してきた。 #phpcon2013 | Engine Yard Blog JP Composerでは例えば次のようにcomposer.jsonファイルを書くことで依存ライブラリを指定できます。この例だとFacebookのPHP SDKが使えるようになります。 { "require": { "facebook/php-sdk": "dev-master" } } Composerとオートロード
このエントリはPHP Advent Calendar 2013 - Qiita [キータ]の1日目です。 PHPの開発に幅広く利用されるようになったVagrantですが、公開されているVagrantfileがGitHub上だけでも300件以上と色々とあるのでまとめておこうと思います。 Search · Vagrant php yandod/php5-nginx-vagrant-sample こちらは手前味噌ですが、自分が使っているVagrantfileです。素のPHPやPHPUnit、各種フレームワークの動作検証に使うためにPHP5.5とNginxを構築しています。 またデータベースとしてMySQLとPostgreSQLを両方セットアップしてあり、ImageMagickも入っているあたりも特徴かと思います。 10up/varying-vagrant-vagrants 通称、「VVV」と呼
TLで話題になっているCodeIQでの問題と解説はこちらです。 これであなたもテスト駆動開発マスター!?和田卓人さんがテスト駆動開発問題を解答コード使いながら解説します~現在時刻が関わるテストから、テスト容易性設計を学ぶ #tdd|CodeIQ MAGAZINE 大変丁寧な解説、とても参考になりました。 ただ、参加されている方の採用したテスティングフレームワークにCodeceptionがない! 日本のPHP開発者にCodeceptionを流行らせたいワタクシとしては看過できない事態(=チャンス)です! ってことで、Codeceptionを使って書いてみました。 といいつつも、今回はCodeceptionがメインではなく、AspectMockがメイン。 AspectMockとは Codeceptionの開発者の@davertさんによる「ちょーすげー(not an ordinary)」PHP向
先日のPHP Conference 2013でPhpStormの便利な機能とか、フレームワーク開発での小ネタとかについて話してきました。 限られた時間だったので矢継ぎ早になってしまって、こちらで詳細書いてみます。 PhpStorm × Framework Symfony2 Symfony2 Plugin 強力なコード補完をサポートしてくれるSymfony2用のプラグインです。 xml/yamlファイル内でのジャンプとかもサポートしてくれます。 こんな感じで、サービスコンテナから取得したクラスに対してもコード補完してくれたりします。 詳しい設定や使い方はこちらが参考になります。 PhpStromのSymfony2 Pluginによる入力補完が便利すぎる CakePHP CakeStorm 私が個人的に作っているCakePHP用のプラグインです。1.3系、2系共に動きます。 Controlle
テスト駆動開発の巨匠・和田卓人さんからの『現在時刻とロケールに依存するテスト』問題をPHPメンターズの後藤秀宣さんが解答してくださいました! この記事は、その後藤さんによる解答コードの公開と解説記事になります!! by CodeIQ運営事務局 PHPメンターズの後藤です。 和田卓人さん出題の『現在時刻とロケールに依存するテスト』問題をPHPを使ってオブジェクト指向のアプローチで解答してみました。 ※問題文については、和田卓人さんの解説記事を参照にしてください。 https://codeiq.jp/magazine/2013/11/1475/ 解答例は次の環境で作成しています。 PHP 5.5.4 PHPUnit 3.7 Composer サンプルコードのリポジトリをGitHubにて公開しています。コミットログなど合わせてご参照ください。(解説中にも各コミットへのリンクを貼ってあります) g
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く