PhpStormに完全に乗り換えた

PhpStormを購入した、からはや1ヶ月が経過してどうだったかという話。

結論から書くと「自分は」完全に乗り換えるに至った。
「自分は」と書いたのは人によってはNetBeansで十分な条件を満たしてる可能性が大いにあるから。

まずPhpStormがNetBeansより優れている点

  • 参照元検索がNetBeansより精度が高い
    そもそも乗り換えた理由がこれ。
    SymphonyでNetBeansだと出てこなかった参照元がPhpStormだと出た。
  • IDEからVagrantが叩ける
    これは地味に便利
    2016-07-24 (4).png
  • IDEからSSHが繋がる
    Windows環境で使うには非常に便利
    キャプチャ.PNG
  • gistに直接コードを投げれる
  • メモリ使用量がNetBeansより少ない
    NetBeans使ってた時はメモリ1GBとか普通に使ってたけど、PhpStormは多くて500MBぐらいで済んでる。
  • ダークテーマがある
    NetBeansはエディタのテーマ編集できたけど、IDE全体のテーマを編集することが(多分)できない。
    PhpStormはIDE全体を(3種類だけど)変更出来る。
  • エディタのテーマにVisual Studio 2012/2013がある
    NetBeansでも頑張ればできるけど、用意されてるので楽
    http://www.phpstorm-themes.com/themes-list?title=Visual+Studio&field_tags_tid=All&field_tags_tid=All

逆にNetBeansが優れている点

  • 無料
    初年度1万円弱、2年目7000円強、3年目5000円半ばの金額を払えない、もしくは30日間のトライアルの結果払う価値を感じなかった場合はNetBeansでよい。
  • 日本語対応
    中学1年レベルの簡単な英語すら読む気のない人は自動的にこっち。
  • 複数のプロジェクトを同時に開ける
    このせいでメモリ使ってる説はあるけど個人的には便利でPhpStormで開けないのが悔やまれる。

こんなところです。
参照元検索の精度+ダークテーマで俺的にはもう乗り換えるしかなかったんですけど、まさかSSHまで叩けるとは思ってなくて複数プロジェクト開けないのは残念だけどNetBeansから完全に移行しました。

広告

PHPのend関数

特定のディレクトリにあるファイル名の一覧を取得しようと思ってこんなコードを書いたんです。

$file_list = glob(rtrim(APPPATH.'resources/json', '/') . '/*.json');
foreach($file_list as $key => $file)
{
	$file_list[$key] = end(explode('/', $file));
}

そしたら「Only variables should be passed by reference」とエラー。
PHPマニュアルを見ると以下のように書いてある。

この配列は参照渡しとなります。関数内で配列の中身を変更するからです。 つまり、ここには配列そのものを渡さなければならず、 配列を返す関数を指定することはできません。

という訳で以下のように修正

$file_list = glob(rtrim(APPPATH.'resources/json', '/') . '/*.json');
foreach($file_list as $key => $file)
{
	$tmp = explode('/', $file);
	$file_list[$key] = end($tmp);
}

マニュアルがあるって素晴らしい…

動的に生成したファイルをAWS SDK 2 for PHPでEC2からS3に転送する

AWS SDK 3ならStreamが使えるので、比較的簡単に転送できると思うんだけど、環境が稼働済みのPHP 5.3だったので下手にバージョンアップすることが許さない。

さらに、フレームワークはZend frameworkとEthnaっていう初めて聞いたフレームワークを、外注先の会社独自frameworkがwrapしてるっぽくて、この先一体どうなっちゃうの!?状態。

結果から書くとまる1日半かかって対応したので、恐らく参考にならないけどその対応方法。
(ちなみにその外注先の会社、どうやら知り合いの会社っぽくて業界狭すぎと思った。)

続きを読む

array_multisortでSORT_DESCを指定でWARNING

PHPで多次元配列をソートするときってarray_multisortを使用すると思うんですけど、以下の記述でWarningが出たのでメモ。

foreach($data as $key => $value):
	$sort_key[$key] = $value["rate_max"];
endforeach;
array_multisort($sort_key, SORT_DESC, SORT_NUMERIC, $data);

Warning: array_multisort(): Argument #1 is expected to be an array or a sort flag

調べたところ、 $sort_key が配列として宣言されていなかったのが理由らしいので、 foreach の前で $sort_key = array(); と宣言することで解決