Latest Publications

CakePHP 2.2のHash::extract()はCentOS5/RHEL5系では使えない

先日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が新しいものになってました。

[NetBeans] PHPDocからpeclパッケージに含まれるクラス・関数などの補完用ファイルを作る

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だと、このあたりどうなのやら

CakePHP 2.xでJSONPに対応する

CakePHP 2.xにおいて、JSONPに対応する方法を紹介します。

下記に、jsonpに対応したレスポンスを返すためのコードを示します。
既にjsonでレスポンスを返せる状態となっていることが前提です。

リクエストクエリにcallbackが含まれる場合、Controller::afterFilterで、レスポンスを書き換えて返すようにします。

なお、JSONPを利用する場合は認証処理やCSRF対策も忘れずに行うようにしましょう。

参考: JSONとXMLビュー — CakePHP Cookbook v2.x documentation

CakePHP 2.x + PHPUnit on NetBeans 第2版

先日、CakePHPのテストをNetBeans上で実行する記事を書きましたが、Fixtureの作成に問題がありそのままでは実用に堪えませんでした。

色々試行錯誤した結果、NetBeans側を修正することでFixtureの読み込みを行うようにするのがよい感じでしたのでその方法をご紹介します。

(続きを読む…)

CakePHP 1.3/2.0でView blocksっぽいことを可能にするHelperメソッド

CakePHP 2.1がリリースされました。2.0から大きく変わる部分は少ないですが、2.1での目玉機能の一つとしてView blocksが挙げられます。

Viewの指定した部分をバッファリングして、後で呼び出すことができる機能ですが、1.3/2.0系でも似たようなことができるヘルパーメソッドを作成していたので公開します。

個別のビューでバッファリングした要素を、レイアウトctpなどから後で呼び出すことができるので、ビュー別のサイドバーカスタマイズなどに利用できます。

2.1のView blocksとの違いは、ViewクラスのメソッドではなくHelperクラスのメソッドであること、start/endによるバッファリングではなく、指定エレメントファイルをバッファリングするものであることです。


(続きを読む…)

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
 

Page optimized by WP Minify WordPress Plugin