読者です 読者をやめる 読者になる 読者になる

DASHiの旅ノート

旅をしながら働くブロガー/翻訳者の雑記

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の関数を呼び出す
    }

TortoiseGitで新規プロジェクトを作成してからリモートにプッシュするまでの手順

Windows7+TortoiseGitで新規プロジェクトを作成してからリモートにプッシュするまでの手順に関するメモ

新規プロジェクトのフォルダを作る

適当な場所に新規プロジェクトのフォルダを作成する
※フォルダ名がPractieになっているのはTypo...

f:id:ohexuan:20150824151247p:plain

リポジトリを作成

コンテキストメニュー(右クリックメニュー)から「Git ここにリポジトリを作成(Y)...」を選択

f:id:ohexuan:20150824151258p:plain

そのまま(「Bareを作成」にはチェックせず)OKをクリック

f:id:ohexuan:20150824151307p:plain

リポジトリ作成完了

f:id:ohexuan:20150824151320p:plain

WIndowsエクスプローラの設定から隠しファイルを表示するに設定すると、「.git」フォルダが見える

f:id:ohexuan:20150824151326p:plain

ソースファイルを追加

ここでは適当にindex.phpという名前のファイルを配置

f:id:ohexuan:20150824151337p:plain

親フォルダに戻り、

f:id:ohexuan:20150824151349p:plain

コンテキストメニューから「TortoiseGit→追加(A)...」と選択

f:id:ohexuan:20150824151407p:plain

追加対象のファイルを選択してOKをクリック
(すべて追加して良いなら、左下のチェックボックスをチェックしても良い)

f:id:ohexuan:20150824152158p:plain

追加完了

f:id:ohexuan:20150824152219p:plain

 コミット

コンテキストメニューから「Git コミット(C)->"......."」を選択

f:id:ohexuan:20150824152237p:plain

メッセージを記入して(ここでは、「新規プロジェクト」とした)、コミットするファイルにチェックを入れてOKをクリック

f:id:ohexuan:20150824152316p:plain

コミット完了

f:id:ohexuan:20150824152549p:plain

SubversionとGitのコミットの違い

Subversionユーザーだった私が戸惑ったのは、「コミットしたらどこにデータが送られるのか?他の人に迷惑はかからないのか?」という点。

Subversionではコミットするとデータはすぐにリモートリポジトリに送信されるが、Gitのコミットではローカルで行われ、リモートリポジトリへの送信はプッシュ(以下に手順を説明します)で行われる。

Subversionのコミットが、Gitではプッシュとコミットに分かれているイメージ。

参考:

catcher-in-the-tech.net

リモート側リポジトリを作成

社内(自宅内)サーバーにリポジトリを作成する場合

サーバー内の適当な場所にリポジトリ用のディレクトリ(フォルダ)を作成する。

f:id:ohexuan:20150824152745p:plain

コンテキストメニュー(右クリックメニュー)から「Git ここにリポジトリを作成(Y)...」を選択

f:id:ohexuan:20150824152913p:plain

「Bareを作成」にチェックして、OKをクリック

f:id:ohexuan:20150824152941p:plain

f:id:ohexuan:20150824152954p:plain

(ローカルで)リモートリポジトリを設定

ローカル側のフォルダに戻り、コンテキストメニューから「TortoiseGit→設定(S)」を選択

f:id:ohexuan:20150824153148p:plain

OKをクリックして次に進む

f:id:ohexuan:20150824153219p:plain

設定画面の左ペインから「Git→リモート」を選択し、「リモート」と「URL」に入力して(URLは先ほど作成したリモートリポジトリのパスを入力する)OKをクリック

f:id:ohexuan:20150824154053p:plain

ここでは「いいえ」を選択

f:id:ohexuan:20150824154135p:plain

ローカル側のフォルダに戻り、コンテキストメニューから「TortoiseGit→プッシュ(リモートへ反映)...」を選択

f:id:ohexuan:20150824153447p:plain

項目「リモート」に上で設定したリモートリポジトリ名を選択し、OKをクリック

f:id:ohexuan:20150824153511p:plain

完了

f:id:ohexuan:20150824153612p:plain