CakePHP2.xで非CakePHPの外部PHPコードを使う方法

CakePHP案件で、クライアントから非CakePHP(「素」のPHP)のクラス化されていない(ライブラリではない)共通関数を使うよう指定されたので、CakePHPから非Cakeの関数を呼び出す方法についてメモしておく。

App/Vendor/にファイルを置く

CakePHPプロジェクトのApp/Vendorに利用したい非CakePHPファイルをコピーする。サブディレクトリを作ってその中にコピーしても良い。

f:id:ohexuan:20150825114237p:plain

(ここではphpfunctions.phpというファイルを配置した)

App::Importで読み込み

利用したいControllerやModelの先頭(クラス定義の前)で、App::Importを使ってロードする。

  • phpファイルの拡張子は指定しない。
  • phpファイル名はすべて小文字。
  • サブディレクトリに配置した場合はスラッシュで区切る。
App::import('Vendor', 'phpfunctions');

下の画像はAppControllerでの書き方の例

f:id:ohexuan:20150825120118p:plain

App:UsesではなくApp::Import

App:Uses()はCakePHPのライブラリをロードする場合に使用するので、非CakeのPHP関数を使う場合は、App::Importを使う。

関数を呼び出す

関数の呼び出しは通常のPHPの呼び方で良い。

    function wrapper(){
        phpfunction(); // phpfunctions.phpの関数を呼び出す
    }