k-holyのPHPとか諸々メモ

Webで働くk-holyがPHP(スクリプト言語)とか諸々のことをメモしていきます。ソースコードはだいたいWindowsで動かしてます。

PHP

マイクロフレームワークをつくろう - Pimpleの上に(Monolog導入・エラーログとスタックトレース出力編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(ルーティング編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(Symfony HttpFoundationでフラッシュメッセージとCSRF対策編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(例外処理とエラー画面・Twitter Bootstrap導入編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(PHPTAL導入編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(RESTインタフェース編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編) マイクロフレームワークをつくろう - Pimpleの…

マイクロフレームワークをつくろう - Pimpleの上に(Rendererクラス作成編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に マイクロフレームワークをつくろう - Pimpleの上に(とりあえず…

マイクロフレームワークをつくろう - Pimpleの上に(Symfony HttpFoundation導入編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に マイクロフレームワークをつくろう - Pimpleの上に(とりあえず…

マイクロフレームワークをつくろう - Pimpleの上に(とりあえずフォーム編)

Pimpleを拡張して自分好みに使うために作成した小さなアプリケーションクラスを使って、マイクロフレームワークっぽいものを作る試みです。 マイクロフレームワークをつくろう - Pimpleの上に コードはWindows版 PHP5.4 ビルトインWebサーバにて動作確認して…

マイクロフレームワークをつくろう - Pimpleの上に(Pimple拡張編)

DIコンテナの効能が謳われだして久しい昨今、業務でもSilexでいくつか小さなアプリケーションを作ったりする中で、ようやくその利点を実感するようになりました。 そのうち、実は自分が惚れたのはSilexではなくて、その母体たるPimpleだったんじゃないかと考…

Fabricタスクをモジュール分割して楽々composer更新

Windows7 (MinGW / MSYS) で Fabric シリーズ記事です。 Windows7 (MinGW / MSYS) に Python 2.7 + virtualenv + Fabric を入れたメモ Windows7 (MinGW / MSYS) に virtualenvwrapper を入れたメモ Fabricで接続情報を指定する方法いろいろ&FabricからPHPス…

真性PHPerでも分かった?FabricでWindowsからファイルアップロード

Windows7 (MinGW / MSYS) で Fabric の続きです。 Windows7 (MinGW / MSYS) に Python 2.7 + virtualenv + Fabric を入れたメモ Windows7 (MinGW / MSYS) に virtualenvwrapper を入れたメモ Fabricで接続情報を指定する方法いろいろ&FabricからPHPスクリプ…

Fabricで接続情報を指定する方法いろいろ&FabricからPHPスクリプトを実行してみたメモ

Windows7 (MinGW / MSYS) で Fabric の続きです。 Windows7 (MinGW / MSYS) に Python 2.7 + virtualenv + Fabric を入れたメモ Windows7 (MinGW / MSYS) に virtualenvwrapper を入れたメモ ですが、多分今回の内容は実行環境に関係なく共通だと思います。 …

SqaleでPHPアプリケーションのデプロイ時にPHPスクリプトから.htaccessファイルを作成してみたメモ

SqaleでPHPアプリケーションを動かす記事の続きです。 Sqaleではデプロイ完了後にフックさせるpostinstallスクリプトに対応しており、これを使ってCLI版のPHPを呼び出せることが分かりました。 前回の記事 SqaleのPHPアプリケーションでSwiftMailerを使って…

SqaleのPHPアプリケーションでSwiftMailerを使ってメール送信してみたメモ

SqaleでPHPアプリケーションを動かす記事の続きです。 最近、メールサーバを導入していない環境でメールを送信するため、Symfony系フレームワークで標準採用されているライブラリ swiftmailer を扱う機会がありました。 Sqale のアプリケーション環境におい…

SqaleのPHPアプリケーションでSilexを動かしてみたメモ

私のような真性PHPerは指を咥えて見ているしかなかったクラウドPaaS Sqale ですが、PHPに対応されたとの嬉しい知らせがありました。 SqaleでPHPアプリケーションも利用可能になりました! | Sqale Information 更に、このタイミングでアプリケーション1個が…

Volcanus_CsvとSymfony-FinderでローテートされたApacheログをLTSVフォーマットに集約してみる

CSVファイルの入出力用ライブラリ Volcanus_Csv を使ったシリーズ記事です。 話題の LTSV を扱ってみようと思い立ったものの、お世話になっているレンタルサーバGehirn RS2ではApacheのログフォーマット変更は難しい…。 そんなわけで、ローテート済みのcombi…

Silexアプリケーションをサブディレクトリで運用する(mod_rewriteとUrlGenerator)

Advent Calendar 用のサンプルコードを書くに当たって、Silexアプリケーションをサブディレクトリで運用したメモです。 なお、例のごとくサンプルコードではテンプレートエンジンにSmartyを使っています。 Apache + mod_rewrite で解決 Apache + mod_rewrite…

HttpFoundationで画像の条件付きGETを実装してみる (Symfony Advent Calendar JP 2012 - Day 22)

Symfony Advent Calendar JP 2012 22日目の記事です。 まずはじめにお断りしておきますが、この記事はSymfony未経験者向けです。 (飛び入り参加なのに低レベルな内容ですみません…) HTTP/1.1 には If-Modified-Since, If-Unmodified-Since, If-Match, If-N…

Smarty3のHTMLエスケープ方法いろいろ + 修飾子プラグインと変数フィルタ (PHP Advent Calendar 2012 Day 11)

PHP Advent Calendar 2012 11日目の記事です。昨日は Shusuke Otomo さんの 初めて Pull Request した話。 #phpadvent2012 | slumbers でした。 皆さん、テンプレートエンジンは何を使ってますか? おおっぴらに使ってますと発言するのもちょっと勇気がいる…

Silex + Volcanus_Csv + PDO_SQLiteユーザー定義関数で KEN_ALL.CSV と戦う(準備編)

CSVファイルの入出力用ライブラリ Volcanus_Csv を使ったシリーズ記事 CSVファイルの入出力処理用ライブラリ Volcanus_Csv を公開しました SilexでVolcanus_CsvとStreamedResponseを使ってCSV出力・Content-Dispositionヘッダの設定方法いろいろ Silex + PDO…

Silex + PDO + Volcanus_CsvでSQLiteに郵便番号データを取り込んでみた

先日、CSVファイルの入出力用ライブラリ Volcanus_Csv を公開しました。CSV処理クラスを作成した者の宿命として、まずは全国の郵便番号データ…悪名高き「ken_all.csv」と戦ってみるつもりでいたのですが…。どうやら全国多数のプログラマ達の怨嗟の声を受け z…

SilexでVolcanus_CsvとStreamedResponseを使ってCSV出力・Content-Dispositionヘッダの設定方法いろいろ

先日公開したCSV入出力用ライブラリ Volcanus_Csv ですが、実際に使わないと改善点も見えてこないので、あれこれやってみます。今回は Silex で Volcanus_Csv のレスポンス出力を利用せず、通常のコントローラと同様に Response オブジェクトを利用してみま…

CSVファイルの入出力処理用ライブラリ Volcanus_Csv を公開しました

CSV形式ファイルの入出力処理を簡潔に行うためのPHPクラスライブラリ Volcanus_Csv を公開しました。データベースから取得したデータのCSV形式でのエクスポートや、CSV形式ファイルからのデータベースへのインポートにおいて、簡潔かつ柔軟に対応できること…

Gehirn (ゲヒルン) RS2を使ってみたメモ その2 Silex + MySQL

Gehirn (ゲヒルン) RS2を使ってみたけどPharファイルが使えないと思ったら使えるようになった件 の続き。 今回はSilexからMySQLを使ってみます。事前準備として、Gehirn WebServices ControlPanel にてデータベースを作成する必要があります。 コントロール…

Gehirn (ゲヒルン) RS2を使ってみたけどPharファイルが使えないと思ったら使えるようになった件

こちらの記事 22歳のセキュリティーコンサルタントが立ち上げたのはたった315円で利用できるインフラサービス で知った Gehirn RS2 というサーバレンタルサービス。 クラウド環境のレンタルサーバで、いわゆるPaaSになるんでしょうか? 独自ドメイン対応、複…

Silex + OptionsResolver で FizzBuzz パラメータ編

Silex + OptionsResolver で FizzBuzz の続きです。前回のサンプルだとSilex使っている意味がないので、パスで指定された値を使ってFizzBuzzを実行するよう、エントリスクリプトを書き換えました。"/{var}/{type}" という2つのパラメータを含んだパスへのGET…

Silex + OptionsResolver で FizzBuzz

Symfony2.1からOptionsResolverというコンポーネントが追加されましたが、連想配列によるオプション引数を扱うのに便利そうなので、こちらの記事を参考に試してみました。OptionsResolver を使って FizzBuzz 問題に取り組む - Sarabande.jpついでに、長い間…

WindowsでStagehand_TestRunnerの設定ファイルとカラーリングを有効にしたメモ

諸々の事情でまだ業務においてはCIはおろか自動テスト環境も整っていないんですが、クラスライブラリの開発ではいつも Stagehand_TestRunner を使った自動テストを行っています。V3になってから全面的にSymfonyコンポーネントを採用され、コマンドやオプショ…

キーでarray_filter()する方法とIMAGETYPE定数から得られる情報

PHP

イテレータよりも配列大好きなPHPerは array_filter() を愛用していることと思いますが(?)、PHPには配列のキーでフィルタかける関数がないのが残念なところです。何か代替案はないかと思って調べたところ、array_intersect_ukey() を使って実現できました…