0

PHPStorm買ったった。(初期設定やら)

食欲の秋ですね!!°˖✧◝(⁰▿⁰)◜✧˖°焼き肉ですね♫

あのIntelliJ Ideaで有名なJetBrains社の代理店、株式会社サムライズムの不定期割引企画

サムライズム / 【9月16日まで】食欲の秋、PHPの秋、PhpStormの秋 #焼肉割

こちらに乗っかって遂に購入しました。

IDEなんてほぼ使わずにVM内でのvimによる開発一本だったので、
正直乗り換えめんどくさいなーと思いながらも、
流行りには乗っかる性分の為、遅ればせながら使用開始。

以下はホント最初の簡単な設定を一通り。

  • 初期状態では行番号が表示されていないので表示する。

    Settings > Editor > Appearance > Show line numbers
  • WHITESPACESが表示されていないので表示する。(好み)

    Settings > Editor > Appearance > Show whitespaces
  • ファイルに差分が発生したら自動的にアップロード

    Tools > Deployment > Configuration

    からサーバの設定(ホストサーバやらlogin userやら秘密鍵やら)を行ったあと、

    Tools > Deployment > Automatic Upload(always)
  • また、Git上でブランチを移動した際に、ブランチの差分ファイルのみを自動アップロードしてくれる機能もあります。

    Tools > Deployment > Options >Upload external changesにチェックを入れる。

とりあえず使えるショートカットキー

Navigate

  • Navigate Class
    クラス名で検索。ネームスペースでも探せるしスペース区切りで絞り込みできる。

    win:Ctrl + N
    mac:⌘O
  • Navigate File
    ファイル名で検索。

    win:Ctrl + Shift + N
    mac:⇧⌘O
  • Navigate Symbol
    シンボル(変数名、メソッド名、定数名etc)で検索。

    win:Ctrl + Alt + Shift + N
    mac:⌥⌘O

最強コマンド

  • とりあえずここに適当に言葉(当然英語)を打ち込めば
    あらゆるコマンドをサジェストしてくれます。

    mac:⌘A

キーバインドはvimがいい!!って人へのプラグイン

  • キーバインドをVIM風にするPLUGINをインストール
    Settings > Plugins 下部のBrowse repositories...から検索
            "IdeaVim"で検索し、ダブルクリックでインストール。

その他参考にした記事

古い記事だと、ファイルの拡張子設定やらエンコーディング設定等も行っているようでしたが、
とりあえずPhpStorm6.0.3なら初期設定されているので問題ない模様。

まぁなんというか、とりあえずデフォルトでも全然問題なく使えますし、数百ファイルのプロジェクト読み込んでも全然重くない!!
このあとはXdebugとの連携やPHPUnitをこっから使ったりをやります。

0

例えばCakePHPでSQLでCASE文を使いたい時

cakeはver.2.3.9で動作確認済み。


 

$this->ActivityLog->find('all', array(
'fields' => array(
'ActivityLog.id',
'((CASE User.user_type WHEN 'admin' THEN concat_ws(' ',Admin.first_name,Admin.last_name) END)) AS UserName'
),
'joins' => array(
'LEFT JOIN users as User ON ActivityLog.user_id = User.id'
'LEFT JOIN admins as Admin on User.id = Admin.user_id'
),
);

 

結局他の解決方法を使用したので、今回は使わず。

0

【使い方】Migrations Plugin for CakePHP

Migrationについて。
ちょっと記事古いけど一番わかり易い気がする
Migrationsの実践的運用(CakePHP)

まずはインストール

% cd /path/to/CAKE_ROOT
% git submodule add https://github.com/CakeDC/migrations.git app/Plugin/Migrations
% git submodule update --init

Config/bootstrap.phpに以下を追加

CakePlugin::load('Migrations');

ヘルプ

% cake Migrations.migration help

使い方

初回はこのコマンドを【重要】

% cake Migrations.migration generate -f
% cake schema generate -f

スキーマ変更時

% cake Migrations.migration generate -f

反映

% cake Migrations.migration run all
0

Apache2にPHPのバージョン違いを複数インストールして使い分ける

新たな案件の開発環境を準備しなくちゃなんなくて
でも、新たにさーばを用意出来なかったので、
php5.3.13を使っているApache配下で別バージョンを使用する。
今回追加したのは5.2.17


・以前から使っているモジュール版PHPには影響なし。
・CGI版を、apxsを指定しないでコンパイルする。
・インストールディレクトリを /usr/local/lib/php-5.2.17 のようにバージョンごとに用意するとわかりやすく複数バージョンに対応しやすい。
・使いたいバージョンを .htaccess 内に記述することで、ディレクトリごとにバージョン指定する。
・httpd.conf内で指定することで、バーチャルホストごとや、ディレクトリごとに指定できる。

と簡単に言うとこんな感じ。

まずはソースを持ってきて展開し、configure。

$ tar zxvf php-5.2.17.tar.gz
$ cd php-5.2.17
 
$ ./configure  --prefix=/usr/local/lib/php-5.2.17 \
--with-config-file-path=/usr/local/lib/php-5.2.17 \
--enable-force-cgi-redirect \
--enable-mbstring \
--enable-mbstr-enc-trans \
--enable-track-vars --enable-mbregex \
--with-mysql=/usr/local/mysql

configureの際に–with-apxs2=/usr/local/apache2/bin/apxsを付けない事が重要。
その他オプションは適宜追加・削除する。

問題なければmakeしましょ。

make
make install

あとは以下のとおり。

■php-cgi を cgi-bin に設置する

php-cgiバイナリをコピーして使う。 ファイル名は適当に命名する。

 
$ cp /usr/local/lib/php-5.2.17/bin/php-cgi /export/home/piyopiyo/cgi-bin/php-5.2.17
 

■httpd.confでActionを設定する

/usr/local/apache/conf/httpd.conf
バーチャルホストを使っている場合は、内側に使いたいverを書けば複数使い分ける。
元のバージョンを使いたい場合は記述なし。

Action php-script-5.2.17 /cgi-bin/php-5.2.17

■.htaccessを使ってPHPバージョンを指定する場合

public_html/foo/.htaccess

 
AddHandler php-script-5.2.17 .php
 

■httpd.confを使ってPHPバージョンを指定する場合

/usr/local/apache/conf/httpd.conf
バーチャルホストを使っている場合は、内で指定する。

Actionを設定する

 
Action php-script-5.2.17 /cgi-bin/php-5.2.17
 

ディレクトリごとにバージョンを指定する

 
AddHandler php-script-5.2.17 .php
 

0

CakePHPでJSON等で値を返す場合について

あ、そうそう。
使ってるけいくのVerですが、現在の最新安定Verである2.1.2です。
結構1.x系と違いがあるのでご注意を。(参考サイトが少なくて困るんですが(´・ω・`))

んで、Ajax使って動的なエレメントを作りたいのですが、
Modelから引っ張ったデータをJSON形式でJavascriptに返したいわけです。
しかし、基本的にはViewが紐付けられてるのでAction内で設定。

 
$this->audoRender = false;
 

これだけ。ほら簡単(。╹ω╹。)

1 2