PHP
PHPマニュアルの説明を読んでも違いがよく分からない SplFileInfo のファイル名やパスを取得する類のメソッドを、ファイルシステム関数と比較調査したメモです。SplFileInfo::__construct() の説明には "file_name で指定したファイル用の新しい SplFileInfo…
auto_prepend_fileで既存コードに手を加えずエラー発生時の処理を変更する方法の続きです。参考リンク紹介するだけというのもなんなので、シャットダウン関数を併用したエラー処理について試してみました。 試行錯誤する中で、どうにも無名関数だけでやるの…
PHPではエラー発生時も普通にレスポンスヘッダでステータス200を返しますが、それだと困るという場合もあるかと思います。 PHPの設定ディレクティブに auto_prepend_file という、全てのスクリプトが読み込まれる前に別のスクリプトを自動で差し込める機能が…
今まで、ディレクトリ内ファイルの再帰処理にはSPLの RecursiveDirectoryIterator + RecursiveIteratorIterator 、フィルタ処理が必要な場合は RecursiveFilterIterator 、独自ソートが必要な場合は SplHeap を継承という感じで組み合わせて使っていたんです…
※この記事は2012年7月19日時点のsandboxアプリケーションを元に書いたものなので、あまり参考にはなりません。BEAR.Sundayを触ってみたメモ (1)インストール BEAR.Sundayを触ってみたメモ (2)はじめてのアプリケーションリソース の続きです。今回は はじめ…
BEAR.Sundayを触ってみたメモ (1)インストール の続きです。2つ用意されているチュートリアルのどちらにしようか考えましたが、DBありきではなく簡単なアプリケーションリソースの作成からやった方が、リソース指向を謳うBEARらしいかなと思い、"はじめての"…
BEAR.Sundayを試してみる人が増えてきたので、自分も試してみました。 以前(dev2)はWindowsではうまく動かせずインストール途中で挫折してしまったのですが、今回はどうでしょうか。手順は公式Wikiを参考に http://code.google.com/p/bearsunday/wiki/Instal…
名前空間を使わないPSR-0のライブラリをComposerのオートローダで利用する方法について調べたメモです。英語が不得手な自分は、マニュアルのサンプルを眺めながら試行錯誤を繰り返すしかないわけで、トンチンカンなことをやってる/書いてるかもしれないと、…
Composerの使い方を調べたメモ(1)の続きです。 ライブラリ側のcomposer.jsonの書き方を調査する成り行きで、Githubに登録しているバリデーションライブラリをPackagistに登録し、composerでインストールしてみました。composer.json require にPHP 5.3.3以上…
Composer の使い方を調べたメモ。 Ryuzee.comの記事で分からなかった部分を実際に使って試してみました。 以下、内容はほぼ推測なので、間違いがあれば指摘していただけると嬉しいです。composer.json 上記の定義で "php composer.phar install" した結果、s…
Fileinfo関数は以前はPECL拡張モジュールでしたが、PHP5.3.0以降は特にCライブラリの追加も必要なく、デフォルトで有効になってます。 今回、初めてこの関数をWindows版で使ってみたメモです。サンプルコード ソートとか余計な処理も入ってますが、Recursive…
filesize()関数におけるというか、要は32bit整数の話なのですが。 マニュアルにもある通り、filesize()関数は2GBを越えるファイルについては期待通りの値を返さない場合があります。 PHP filesize - Manual今まで2GB超のファイルに対してファイルシステム関…
Smarty(3.1.8)を使っていますが、いつからかこんなエラーが発生するようになりました。 'filemtime(): stat failed for /path/to/compiled_template.html.php' in /path/to/vendor/Smarty/sysplugins/smarty_resource.php on line 693エラーメッセージから、…
今更ながら Composer というものを使ってみようと思い立ち、Windows7でwgetコマンドとcomposer.pharを使ってみたメモです。検索してみたら、GNU toolsのWindows版プロジェクト「GnuWin32」にwgetコマンドが移植されていることが分かったので、まずはそちらを…
なんかMacユーザの皆さんがGrowl Growlって言ってるけど…どーせWindowsじゃ使えないんでしょ、って勝手にやさぐれてたら、実はWindows用のクローンがあったんです。(今更気付きました…)そろそろ、エディタの裏で動いてるStagehand_TestRunnerのAutotestを…
Apache 2.4のWindows版バイナリがApache Loungeに公開されてると知って、Windows7でApache 2.4 + PHP5.4環境に挑戦したものの、どうにも安定動作させられませんでした。 時間的な余裕もないので、とりあえずXAMPPのバージョンを1.7.4(PHP 5.3.5)から1.7.7(PH…
フレームワークのコードをななめ読みしていると、getterとsetterを兼ねた短い名前のメソッドが使われている例を、ちょくちょく見かけます。 たとえばJava風なら getName(), setName('foo') とするところを、name(), name('foo') とするようなメソッドです。…
今時Smartyなんて使うのは情弱だけだそうですが(すみません)、Smarty3で文字列をテンプレートとして使う方法を紹介します。コード 出力結果 なんてことはない、標準で対応していたのでした。 Smarty->registerResource()とか使わなくても良かった。リソー…
Railsの仕様(と言っていいのかな?)に起因する、GitHubのMass Assignment脆弱性が狙い撃ちされたのが話題になりましたが、ORMライブラリRedBeanの、RedBean_OODBBean::import()がそのまんま、そういう実装だったのを思い出したので確認してみました。 You …
昨年夏頃に話題になっていた、fluxflexというクラウドホスティングサービス(いわゆるPaaS)を触ってみました。今までPHPに対応したPaaSを何度か触ってみようとしたことはありましたが、いずれも恥ずかしながら何かを公開するまで到達できませんでした。 英…
output_add_rewrite_var() は、session.use_trans_sid で利用されているURLリライト機能に新しい名前と値のペアを追加する関数。session.use_trans_sidの場合と同様、有効になるHTML要素と属性は url_rewriter.tags の設定によって決まります。url_rewriter.…
SQLiteで正規表現マッチが使えるのか調べてて、公式ドキュメントの SQLite Query Language: expression http://www.sqlite.org/lang_expr.html で、LIKE, GLOB とともに REGEXP や MATCH が記載されているのを発見。 しかしながら、こんなことも書いてありま…
下記のような構造のディレクトリとファイルに対して、RecursiveDirectoryIteratorで走査し、RecursiveIteratorIteratorで処理を行う場合 DIR ├──DIR-1 │ ├──DIR-1-1 │ │ ├──DIR-1-1-1 │ │ │ ├──FILE-1-1-1-1.php │ │ │ └──FILE-1-1-1-2.txt │ │ ├──FILE-1-1-…
系図管理システム(仮)というものをSilex + SQLiteで作成していたんですが、SlimというSilex同様のREST APIを提供するマイクロフレームワークに書き換えてみました。 (SilexでもDoctrine2ではなくRedbean、TwigではなくPHPTALを使ってたので、フレームワー…
普段はSPLをほとんど使っていない(DBからのファイル出力でIteratorを使ったことがあるくらい)のですが、練習のためにSplFileObjectを使ったCSV処理を書いてみました。 ただそれだけだと面白くないので、SplFileObjectを拡張してcurrent()メソッドにコール…
stream_resolve_include_path()はファイル名からinclude_pathを考慮したファイル検索を行なって、ファイルが存在すればパスを返してくれる関数。(5.3.2以降) http://jp.php.net/manual/ja/function.stream-resolve-include-path.phpこの関数を使って、includ…
str_getcsv()はCSV1レコード分の文字列をパースして配列を返してくれるとても便利な関数。(5.3以降) http://jp.php.net/manual/ja/function.str-getcsv.phpこの関数、第2引数のdelimiter(区切り文字)、第3引数のenclosure(囲み文字)はいいとして、第4引…
@calpo22 さんの記事 PyrusでプロジェクトローカルなPEARライブラリインストール : PHP Advent Calendar jp 2011 Day 10 - くろまほうさいきょうでんせつ にき続き、 PHP Advent Calendar jp 2011 11日目の記事です。皆さん、エラー処理ちゃんとやってますか…