読者です 読者をやめる 読者になる 読者になる

PHP

「基本からしっかり学ぶ Symfony2 入門」メモ(3)

「基本からしっかり学ぶ Symfony2 入門」を買った。 基本からしっかり学ぶ Symfony2入門作者: 後藤秀宣,金本貴志出版社/メーカー: 技術評論社発売日: 2015/12/16メディア: 大型本この商品を含むブログを見る 基本からしっかり学ぶ Symfony2入門:書籍案内|…

「基本からしっかり学ぶ Symfony2 入門」メモ(2)

「基本からしっかり学ぶ Symfony2 入門」を買った。 基本からしっかり学ぶ Symfony2入門作者: 後藤秀宣,金本貴志出版社/メーカー: 技術評論社発売日: 2015/12/16メディア: 大型本この商品を含むブログを見る 基本からしっかり学ぶ Symfony2入門:書籍案内|…

「基本からしっかり学ぶ Symfony2 入門」メモ(1)

「基本からしっかり学ぶ Symfony2 入門」を買った。 基本からしっかり学ぶ Symfony2入門作者: 後藤秀宣,金本貴志出版社/メーカー: 技術評論社発売日: 2015/12/16メディア: 大型本この商品を含むブログを見る 基本からしっかり学ぶ Symfony2入門:書籍案内|…

シンプルなテンプレートエンジンPlatesをSilexで使ってみる

PHP

Platesという、シンプルなテンプレートエンジンを使ってみた。 小さなWebアプリケーションでTwigが必要なほどではない場合にはちょうど良いと思う。 Plates - Native PHP Templatesplatesphp.com まずはSilexで最低限のものを実装しよう。 { "require": { "s…

OSC2015北海道で「phpspecで学ぶLondon School TDD」という発表をしてきました

見た目を重視してこんなタイトルにしてみましたが、基本的には私が「実践テスト駆動開発」と「phpspec」をどう解釈したか、というような内容になっています。 45分あってもなかなか伝えるのが難しいテーマだったのですが、とりあえず時間厳守はできてよかっ…

書初め

php

format("Y-m-d, o W D"), PHP_EOL; $dt->add($aDay); } $ php year.php 2014-12-27, 2014 52 Sat 2014-12-28, 2014 52 Sun 2014-12-29, 2015 01 Mon 2014-12-30, 2015 01 Tue 2014-…

StackPHPを使ってみる(Middlewareを作る)

PHP

自分でMiddlewareを作る ひな形はこんな感じ。 app = $app; } public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $…

StackPHPを使ってみる(Twitter認証)

PHP

StackPHPというのが正式名称なのかわからないけど。 http://stackphp.com/ ひな形 HttpKernelInterfaceを実装した$appを準備する。 スタックを作る。 $stack->resolve($app); $appを実行する push(...) ->push(...); $app = $stack->resolve($app); // 3. //…

"Design How Your Objects Talk Through Mocking"を見た

Konstantin Kudryashov - Design How Your Objects Talk Through Mocking at Laracon EU 2014 - YouTube BehatやPhpSpecの作者である@everzetによるLaracon EU 2014での講演です。 英語が苦手なので翻訳することはできませんが印象的かつ聞き取れた部分を要…

1つのSubjectに集中せよ - phpspecのコンセプト

1つ前のエントリで「知らないうちに」と書きましたが、実際は2012年からphpspec2という名前で存在していて、途中でphpspecのリポジトリに統合されたようです。 commit f6b8f26c563cfd07af28a7d4bdcf41a1aee33556 Author: Marcello Duarte <marcello.duarte@gmail.com> Date: Mon Apr 29 </marcello.duarte@gmail.com>…

知らないうちにphpspecがすごいことになっていた件

昔あったphpspecが進化したものなのかそれとも別のものなのかは知りませんが。 すごい。軽くキモい。17分の動画です。 Laracasts | PHPSpec is So Good まず、いきなり「MovieCollectionにMovieをadd()するとcountが1になること」というのスペックを書きます…

Pimple 2.0がリリースされたのでPimpleについて復習してみる

php

ぶっちゃけ出るなんて思ってませんでしたが、Pimple 2.0がリリースされたので、1.xの復習と2.0での変更について調べてみます。 Pimple - A simple PHP Dependency Injection Container Pimple(1.x)の基本 DIコンテナとは何か、という説明をはぶいてPimple…

個人的2012年のPHPの話題振り返り

PHP

Symfony2/Silex関連 Create your own framework... on top of the Symfony2 Componentsを読んだ - iakioの日記 Symfony2のControllerResolverを読む - iakioの日記 Symfony2/SilexのControllerResolverを読む2 - iakioの日記 私の今年最初の日記は、Fabien P…

たった数行のコードでひたすらアイドル水着画像をあつめるのをGoutteで書いてみた

PHP

あくまで勉強になると思って、あくまで勉強になると思って、Goutteでやってみました。 たった10行のコードでひたすらアイドル水着画像をあつめる - UT Startup Gym たった3行のコードでひたすらアイドル水着画像をあつめる(Rubyだよ) - maeharinの日記 Gou…

PHPUnitがファイル1つで動くようになったよ!

まだあまり話題になっていないようなので。PHPUnitは以前はPEARでインストールするのが主流でしたが*1、最近ファイル1つをダウンロードするだけで使えるようになりました。http://pear.phpunit.de/get/phpunit-3.7.5.pharこれをダウンロードして実行するだけ…

"Mock Roles, not Objects"をPHPで写経してみた

php

モックによるインターフェイスの発見 - Digital Romanticismを参考にしつつ、「モックをロールせよ(pdf)」をPHPで写経してみました。https://github.com/iakio/mrno-php 最初はPHPUnit_MockObjectを使おうと思っていたけど上手く書けなかったのでMockeryとPh…

EasyPHPでインストールしたPHPをコマンドプロンプトから使う

PHP

今まで知らなかったけどこれいいね。 EasyPHP | Install a local WAMP server : PHP 5 VC9, Apache 2 VC9, MySQL 5, PhpMyAdmin, Xdebug and Modules on Windows XP/Vista/Seven いわゆるWamp environment。気に入ったところは 管理者権限なくてもインストー…

antのmodifiedセレクタ

php

Template for Jenkins Jobs for PHP Projects を試してます。antのbuild.xmlを手書きするのなんて何年ぶりだろう。 <target name="lint" description="Perform syntax check of sourcecode files"> <apply executable="php" failonerror="true"> <arg value="-l" /> <fileset dir="${basedir}/src"> <include name="**/*.php" /> <modified /> </modified></include></fileset></arg></apply></target>

PHPUnitのDBUnit拡張をPHPUnitの外側で使う

php

DBUnitにはXML、YAML、CSVや任意のSQLを使ってDataSetを定義し、それらをINSERT、DELETE、UPDATE、TRUNCATEする機能があります。 第8章 データベースのテスト これらの機能をPHPUnitを使わずに呼び出すこともできます。

PHPUnitのMockが生成するコード

PHP

PHPUnitのMockはコードを生成してeval()しているわけだけれども、PHPUnit_Framework_TestCase#getMockBuilder()の引数に存在しないクラス名を渡すと、そのクラスを生成するコードも出力する。どんなコードを生成しているかはこのように確認できる。

Symfony2/SilexのControllerResolverを読む2

PHP

ところで、Silex\ControllerResolverにはこんなコードがあるんですがこれは何をやってるんでしょうねえ。 protected function doGetArguments(Request $request, $controller, array $parameters) { foreach ($parameters as $param) { if ($param->getClass…

Symfony2のControllerResolverを読む

php

"Create your own framework... on top of the Symfony2 Components"を読んで、Symfony2とSilexに興味がわいてきたので色々実験してみました。とりあえず"Create your own framework..."でやったCalendarをSilexでどう実装するかを考えてみます。Silexといえ…

Create your own framework... on top of the Symfony2 Componentsを読んだ

PHP

2ヶ月前にブックマークした"Create your own framework... on top of the Symfony2 Components"を写経しつつやっと読みました。面白かったです。フレームワークがどのような問題を解決しようとしているか、という話もありますが、それよりSymfonyやSilexをや…

Windowsでphpunit --colors

あるいはコマンドプロンプトでANSIカラーを表示させる方法。Windowsのコマンドプロンプトでphpunit --colorsすると、 こんな感じになります。ゲンナリです。グリーンにならないならテストに対する意欲も半減です。コマンドプロンプトに色を付けるには、SetCo…

TDD Boot Camp 札幌 2.3に参加してきた

TDD Boot Camp 札幌 2.3 : ATND お題はボーリングのスコア計算システム。PHPチームで参加してきました。ドキュメントを見ようとしたら、PHPUnitのサイトに全然接続できなくてどうしようかと思いましたが、githubでドキュメントのソースのxmlを見ながらどうに…

fork()した子プロセスが同じrand()を返す

PHP

第13回 LOCAL PHP部 勉強会でvimの話をしてきました

この手のイベントに参加するの、、、というか仕事以外で人と会うの何ヶ月ぶりだろうというくらい引き込もってましたが。 第13回 LOCAL PHP部 勉強会 : ATND 言い忘れてたことや補足など 去年のOSCでもvimの話をしてるのでこっちも見てね!! http://d.hatena.n…

5年遅れのブラウザリロードをPHPで

PHP

2006年頃、ブラウザリロードブームというのがあった。エディタでファイルを保存したら自動的にブラウザがリロードしたら便利だよねという話。 CSSファイルを保存すると同時にブラウザをリロード - Weblog - hail2u.net あーこれならPHPでも出来そうじゃん。…

そもそも最短の関数って何だろう

PHP

string(1) "_" [1]=> string(2) "dl" [2]=> string(2) "pi" [3]=> string(3) "tan" [4]=> …

与えられた引数をそのまま返す最短のビルトイン関数って何だろう

PHP

Rubyの文字列内の式展開みたいなことをPHPでやる方法として、与えられた引数をそのまま返す関数を作っておいて文字列内で可変関数として呼び出すという方法がある。 http://twitter.com/#!/iakio/status/21577621837 http://www.php.net/manual/ja/language.…

PHPってfoo()[0]みたいなこと出来なくて不便だよねって話

PHP

Using square brackets on a returned array : PHP echo array_keys($b)[0];って書けたらいいのに。って話。配列の先頭なら current(array_keys($b)); でいいんじゃない?って話なんだけど、current() が必ず先頭を返すわけでもない。そしたら、reset(array_…

真夏の勉強会ラッシュ中半

後半ってタイトルにしようかと思ったけど、夏はまだ終わりません。 日本PostgreSQLユーザ会 北海道支部 勉強会 日本PostgreSQLユーザ会 北海道支部 勉強会 : ATND 詳細はこちら 日本PostgreSQLユーザ会 北海道支部 勉強会 - iakioの日記 - postgresqlグルー…

arrayにobjectでアクセスするラッパー

PHP

ここ数ヶ月PHPばかり書いてるのですが、$ary['foo']よりも$obj->fooの方が書きやすいよなぁってのと、未定義のフィールドにアクセスした時にエラーになるようなのが欲しいってのでこんなのを考えてみた。案1 ary =& $ary; } function __get($name) { if (iss…

facebook製PHP拡張XHPが面白い

XHP面白い。単なるcross-site scripting対策以上のものを感じるんだけどうまく魅力を説明できるかどうか。 XHP: A New Way to Write PHP | Facebook FacebookのXHPを導入してみた - おぎろぐはてな XHPはfacebookが作ったPHPのextensionで、PHPのコンパイラ…

第7回 LOCALPHP部勉強会にいってきた

PHP

第7回 LOCAL PHP部 勉強会 : ATND デモ中にmake installしたら何故か笑われた。makeとgdbってUNIXで一番使うコマンドだよね? APCのしくみが気になった。ちょっと見たらデフォルトmmapで、--disable-apc-mmapするとshmemかな つーかspinlockのコードがPostgr…

PHPらしさって何だろうね

PHP

CakePHPをやっててふと、あのpostsテーブルに対するモデルがPostだったりする規約って、英語圏の人にとってわかりやすいというのもあるんだろうけど、そもそもはRailsのパクリで、Rubyだとクラス名は大文字で始まる必要があるからだったんじゃないのか?だっ…

CakePHPのpaginateにURLパラメータを渡す方法

PHP

akiyanさんのすばらしい資料を参考にさせていただいていたのだけれど、若干不満があって調べてみた。 極める routes.php (CakePHP 1.2) : akiyan.com スライド28ページ $this->paginate = array('Model' => array( 'options' => array( '?' => array('keywor…

unpack()が1はじまりの配列を返す

PHP

$ php -r 'var_dump(unpack("C*", "ABC"));' array(3) { [1]=> int(65) [2]=> int(66) [3]=> int(67) }何でだろうと思ってソースを見てみたらこんなコードを見つけた。 (ext/standard/pack.c) if (arg != 1 || namelen == 0) { /* Need to add element numbe…

CakePHP雑感

PHP

CakePHPくらいのフレームワークを使っていると、「いつフレームワークを逸脱するか」の判断が重要になってくる気がする。「これ絶対SQLで書いた方が速いのに」「トリガ使いてー」と身悶えしながら我慢してたり。 SQLでベタ書きするのと比べると、ActiveRecor…

beforeValidate

PHP

またCakePHP 1.1系の話です。 * beforeValidateUse this callback to modify model data before it is validated. (中略)In this context, model data is accessible via $this->data. vaidateする前にbeforeValidateが呼ばれて、そこで$this->dataを書き換…

PHPに関して1つだけ言っとくとすれば

PHP

http://webbingstudio.blog10.fc2.com/blog-entry-564.html http://d.hatena.ne.jp/riaf/20080922/1222056153 http://d.hatena.ne.jp/bobchin/20080923部分的にのっかります。 そもそも、PHPは何がどう「駄目な言語」なのか 簡単に習得できることとか、エレ…

$session->flash()が値を返す

久しぶりにCakePHP(1.1系)を使ってたら、$session->flash()してるところで、 Please correct errors below. 1とか出る。「1」って何?デフォルトのlayout/default.thtmlは、 check('Message.flash')) { $session->flash(); } echo $content_for_layout; ?> …

SmartyテンプレートからユニークなIDを生成

Smartyを使ってて、画像ファイルなんかがブラウザにキャッシュされるのを防ぐために、<img src="hoge.png?123456" />みたいなユニークなIDかランダムな値か、要するに毎回違う値を付けたくなった。もちろんPHP側からそういう値をassignしてあげればいいんだけど、これくらいテンプレート上…

PHPの良いところ

PHP

PHPが入りやすいのは、オブジェクトではなくて関数をバシバシ使っていくからってことが現実としてあるということなのかな? 個人的には他の言語と比べてPHPが簡単だとは思えないんだけど、ドキュメントよくまとまっているのと、http://www.php.net/docs.php…