Posted in 2013年5月10日 ¬ 22:50h.nojimage
先日CakePHPのバグレポートをしたのでご報告。
#3821 Hash::extract() not working on CentOS 5 – CakePHP – cakephp
※この話はCakePHP2.2 – 2.3.4までが該当します。次バージョン(2.3.5)以降は修正が適用されるため大丈夫です。
CakePHP 2.2から追加されたHashクラスのextractメソッドは、RHEL5/CentOS5系の標準パッケージでインストールされたPHPでは利用できません。
理由は、PCREライブラリのバージョンが6.6と古いためです。
これを修正するには、lib/Cake/Utility/Hash.phpの173行目を変更します。パッチは以下を参照してください。
Make named capture groups compatible with older PCRE versions. · b533c1b · cakephp/cakephp
# CentOSはクソという話になっています 
# 古いpcreは色々問題があったりするので、PCRE自体をバージョンアップするかphpにバンドルされているものを使用するのがいいでしょうね。
# remiレポジトリのphpパッケージはPCREが新しいものになってました。
Posted in 2013年2月21日 ¬ 23:33h.nojimage
NetBeansではPHPの組み込み関数やクラスなどを補完してくれる機能があり効率よくコーディングが可能です。しかし、pecl拡張については補完用ファイルが存在しないため、そのままでは補完してくれません。
補完自体は、クラス、関数定義を書いたPHPファイルを所定の場所に配置すれば完了なのですが、定義を書くのが一苦労です。
そこでPHPDocからクラス等の定義ファイルを生成して、補完用ファイルとする方法がありましたのでご紹介します。
なお、この方法で作成した定義ファイルは、Eclipseでも使用可能です。(元々Eclipseプロジェクトで使用されている変換スクリプトを使用しているため。
1. generate.phpの取得
PHPDocから補完用ファイルを生成するためのgenerate.phpをEclipseプロジェクトのレポジトリより取得します。
generate.php
※同パスにあるREADME.txtに書かれている方法が今回紹介する方法です。
2. PHPDocの取得
svn export http://svn.php.net/repository/phpdoc/en/trunk php-doc
ドキュメントの元データを取得します。
3. 補完用ファイルの生成
path_to_bin/php -q generate.php php-doc
取得したPHPDocの場所を指定して、generate.phpを実行します。
しばらくするとphpバージョンでディレクトリが作成され、各ライブラリの補完用ファイルが作成されます。
4. NetBeansへ補完用ファイルをコピー
Mac OS Xであれば
NetBeans {バージョン}.app/Contents/Resources/NetBeans/php/phpstubs/phpruntime/
へ、必要なライブラリの補完用ファイルをコピーします。
5. NetBeansを再起動
以上で、pecl等各種拡張ライブラリの補完が可能になります。
参考:
http://www.eclipse.org/forums/index.php/mv/msg/164312/520736/
(PhpStormだと、このあたりどうなのやら
Posted in 2013年1月23日 ¬ 20:05h.nojimage
CakePHP 2.xにおいて、JSONPに対応する方法を紹介します。
下記に、jsonpに対応したレスポンスを返すためのコードを示します。
既にjsonでレスポンスを返せる状態となっていることが前提です。
リクエストクエリにcallbackが含まれる場合、Controller::afterFilterで、レスポンスを書き換えて返すようにします。
なお、JSONPを利用する場合は認証処理やCSRF対策も忘れずに行うようにしましょう。
参考: JSONとXMLビュー — CakePHP Cookbook v2.x documentation
Posted in 2012年3月19日 ¬ 09:00h.nojimage
先日、CakePHPのテストをNetBeans上で実行する記事を書きましたが、Fixtureの作成に問題がありそのままでは実用に堪えませんでした。
色々試行錯誤した結果、NetBeans側を修正することでFixtureの読み込みを行うようにするのがよい感じでしたのでその方法をご紹介します。
(続きを読む…)
Posted in 2012年3月15日 ¬ 09:00h.nojimage
CakePHP 2.1がリリースされました。2.0から大きく変わる部分は少ないですが、2.1での目玉機能の一つとしてView blocksが挙げられます。
Viewの指定した部分をバッファリングして、後で呼び出すことができる機能ですが、1.3/2.0系でも似たようなことができるヘルパーメソッドを作成していたので公開します。
個別のビューでバッファリングした要素を、レイアウトctpなどから後で呼び出すことができるので、ビュー別のサイドバーカスタマイズなどに利用できます。
2.1のView blocksとの違いは、ViewクラスのメソッドではなくHelperクラスのメソッドであること、start/endによるバッファリングではなく、指定エレメントファイルをバッファリングするものであることです。
(続きを読む…)