ラベル PHP の投稿を表示しています。 すべての投稿を表示
ラベル PHP の投稿を表示しています。 すべての投稿を表示

2013年3月10日日曜日

Intellij IDEA で少しだけPHPを書くのが楽になるかもしれない方法

去年末の75%offの際に Intellij IDEA 買いました。

いやもう凄い便利です、PHP書くときに… (´;ω;`)

ってことで本当は年初にでも書けばよかったんですけど…
かなり今更感ありますが取り敢えず書いとこ〜ってことで書きました。

あと今月から個人的にはもうPHPほとんど書く予定はない! はず…






2012年12月16日日曜日

phpbrew + Template for Jenkins Jobs for PHP Projects 的なもの

そろそろPHP通算歴が半年くらいになっちゃうんじゃないかなぁ…

今や 継続インテグレーションは強みではなくなった [プログラマー現役続行] らしいですし、
PHPヤダヤダ言っててもしゃーないしで試してみました。

ていうか自動テスト環境すらないもの引き継がせんじゃねぇ糞が

ちなみに強引に動かしてます。


用意した環境
  • Cent0S6.3 64bit的な環境

主な参考サイト
Template for Jenkins Jobs for PHP Projects
c9s/phpbrew

Template for jenkins Jobs for PHP Project のリンク先に Integrating PHP Projects with Jenkinsなんて本がありますね。
2011/09 に出てたっぽいのですね。
うーむ、CIはもう常識なんですね、やばいなぁ…



jdkとかjenkinsはテキトーに入っている前提
jenkinsの導入はこの通りにyumで


phpbrew install

phpbrewのサイトのほぼ指示通りですね
Install phpbrew into system-wide environment の部分を参考にしています。
理由はjenkinsに無理やり使わせるためです

phpbrewで5.3.10を入れている理由は、phpbrew variants でサンプルで出てきたからという理由です。
皆さんお好きな環境でどうぞ。
+iconvしているのは、後々入れるphpmdやらphplocやらが使うからという理由です。
その他yumで入れているものは、カラの環境だと インストール時に怒られるから…という理由から入れています。

なお、自前でオプションを指定したい場合は「--」のあとに続けるとできます




Template for Jenkins Jobs for PHP Projects とビミョーに違うところとか

まあ大体一緒です。
phpdoxじゃなくてphpdoc入れているところとかですかね。(ppwが作るやつがphpdoc使っているし)
あとppwでプロジェクト作るから…とかが差異だったりとか
その他plugin入れたり、テンプレートプロジェクトを入れたりとかは
同じことしているので省略





jenkins先生に頑張っていただく

まずはプロジェクトを作ります。
テンプレがあるので楽ですね。
Template for Jenkins Jobs for PHP Projects 様様です

さて、Antを実行と見せかけて下記のようにします。
無理やりphpbrewを使うためです。
antもシェル上で叩いていますが、これを分離してしまうと
せっかく無理やり認識させたphpbrewが使えないからです。
うーむ無理やりw
なお、使用しているAntはJenkins先生が自分でインストールしてくる奴のパスを叩いています。
一度はAntタスクを実行しないとインストールされませんので、その辺は適当に。

export PHPBREW_ROOT=/opt/phpbrew
source /opt/phpbrew/bashrc
phpbrew use php-5.3.10
$JENKINS_HOME/tools/Ant/1.8.4/bin/ant


publish HTML report もほんのちょびっとだけいじります
index.xhtml → index.html にするだけ。
実際上記の通り作ると、build/api 以下にそう作られていたから…以上の意味は無いです。




準備ができたらppwでプロジェクトを作ります。
別に自前でant用のbuild.xml書いてもいいですけど、メンドイですよね。

他にもMave for phpなんてのもあるし、
そもそも時代はGradleらしいです。
Ant使っている場合じゃねぇ(AAry

そこはとりあえず置いといて…

ppwがデフォルトで作成してくれる状態に超テキトーにソースを加えたものを実行してみました。
→ ここに置いときます


テストは通ってないし、警告は出るしで最低ですねw
常にJenkins先生を怒らせないような状態を保つようにすれば、
もしかしたらPHPもゴミクズのように言われない日が来るかもしれませんね。







まあそんな日は来ないだろうけどな





2011年11月18日金曜日

PHPUnit vfsStream メモ

PHPを触りだして3日。
サポートのはずなのになんか気が付いたら俺主体なんだけど…

という訳でメモ

なんだかんだでテスト系は情報無いよなぁ…

最初使い方に詰まったvfsStreamですが、これは使いやすいのでは?
重要なのはvfsStreamで生成したファイルをvfsStreamのディレクトリにちゃんと登録することw

// setup 何も指定しなければvfs://root というディレクトリがある前提になるはず
vfsStream::setup();
// rootの取得
$root = vfsStreamWrapper::getRoot();
// rootディレクトリパスの取得 実際にis_dirがtrueを返す
$rootDirPath = vfsStream::url($this->root->getName().DIRECTORY_SEPARATOR);

//モックファイルの生成と登録
$file = vfsStream::newFile("hoge.txt");
$root->addChild($file); // これに気が付かなくてチョットハマった

//モックファイルパス
$path = $rootDirPath.$file->getName();

//あとはこのpathをテストしたい奴に渡して何かしら処理させた後
//$fileの中身を見たりすればOKな感じ?

とりあえず動作確認



Gistを初めて使うけどまさかPHPで使用するとは思わなかったよw
でもGistいいかも?

2011年11月17日木曜日

MACに PDT + PHPUnit + XAMPP + MakeGood 環境を構築してみた

前回に引き続き、今度はphp関連の開発環境を構築してみました。

まるで環境構築マニアみたいですが、phpはちょっと必要に駆られてなので…

本末転倒ですが別にエディタでもいいとは思います。
めんどいし。
もっというとXAMPPじゃなくて個別にインストールしたほうが
後々いいかもしれません。なんとなく。
だってどうせサーバ上ではXAMPPじゃないでしょ。

とはいうもののPHP書いたこと無いし、vimさんだけで生きて行けるほど強くないし、
IDE無いとミスっていることにすら気が付かないし(ぇ



◯以下をとりあえずDL
PDTはプラグインだけでもOKですが、
なんとなくこれ以上プラグインを追加したくなかったので、
All IN One (eclipse-php?)を落としました。

XAMPPは上記サイトに従って動作確認までは余裕かと。



◯XAMPP上にPHPUnitをインストール

とりあえず以下をターミナルで実行
パスからも想像出来るようにルート権限必要です。

#cd /Applications/XAMPP/xamppfiles/bin
#sudo ./pear upgrade-all
#sudo ./pear channel-discover pear.phpunit.de
#sudo ./pear install phpunit/PHPUnit
インストールされている気配が無かったので再度実行
#sudo ./pear install phpunit/PHPUnit
Unknown remote channel: pear.symfony-project.com
と出たので
#sudo ./pear channel-discover pear.symfony-project.com
#sudo ./pear install phpunit/PHPUnit
#./phpunit --version
バージョン表記されてメデタシ(2011年11月15日 3.6.3でした)

依存関係をまとめてinstallできるpearのコマンドオプションがあった気がするけど
メモ忘れました…



◯XAMPP上にtestrunner
#cd /Applications/XAMPP/xamppfiles/bin
#sudo ./pear channel-discover pear.piece-framework.com
#sudo ./pear install piece/stagehand_testrunner



◯ /Applications/XAMPP/xamppfiles/bin にパスを通す
先にやればよかった…



◯他

またDB関連もテストするなら下記も入れておくといいかも

#sudo pear install phpunit/DbUnit

http://www.phpunit.de/manual/3.6/ja/database.html



◯PDT関連
makegood追加(help → install new software)
http://eclipse.piece-framework.com/
-clean で再起動



◯これは正直いいのかわかんない
PDT使ってPHP作ってローカルで動作確認したいのに、
当たり前といえば当たり前なんだけど、/Applications/XAMPP以下が軒並み読取り専用です。
結果としてリンク先にあるように最初から準備されているドキュメントルートに、
Eclipseがファイル配置出来なかったりします。
なので、httpd.confをいじって適当な場所にドキュメントルートを移動させるか、
最初から配置されている場所に書き込めるようにするかの2択だと思います。

ちなみに後者のhttpd.confを弄ってちゃんとうまく動くかは確認していません。

そして本当に読取り専用じゃなくしてしまっていいのかは知りませんw

まあ一番最初にpear実行段階で管理者権限でファイルイジりまくっているから
いいっちゃいいんでしょうけど…

なおeclipse-phpのPreferences → PHP → PHP Server → Edit Server に
Path Mapping ってあるんですけど、これうまく動いている気がしない。
これが動けば別にどこに配置したっていいんでしょうけどねぇ…



◯とりあえず作ってみる

まず悩みながら下記パスにワークスペースを作成

新規作成→PHPプロジェクト→hellophp.php / hellophpTest.phpを作成
環境設定でpearの設定を入れておく
(多分php.iniとかにinclude_pathを追加で指定しても一緒)



一応マニュアルを日本語のURL指定にしてみる。
まあしたんだけど英語しか出ないのはなぜなんだろ…

phpのパス指定

以下「個別プロジェクト」で設定
phpunit.xmlは指定しなくてもOK
下のテストフォルダの追加を忘れずに



include pathにさっき追加したpearを追加

上記で設定は終わり
hellophp.php

hellophpTest.php
assertEquals("hoge", $hello->hoge());
    }
}
?>
phpunit.xml



    
        
        
    


んで右クリック→すべてのテストを実行すると

やった!グリーンだね!

ちなみにこやつは設定次第では保存時に毎回全テストを実行してくれるので、
知らず知らずのうちにデグレが避けれる?
まあなんかうざい時もあるけど、ちょっとしたCI気分が味わえます。

なお、phpunit.xmlを上記のように設定していると
テスト完了後に指定したパス(ここでは/tmp/hello_report)以下にコードカバレッジ結果も。
phpunit.xmlは色々と設定ができそうで面白そうです。
Jenkinsなんかと合わせ安いんじゃなかろうか。
Jenkins使ったこと無いんで想像で書いてますが。そして使ってみたいけど…
上記を抜けなくやったのに、テストが実行されない場合は
一旦eclipse-phpを再起動するとなぜか動く場合も…

その前にコマンドラインでPHPUnitが使用可能かは確認してもいいかも。

まあこんだけやったけど、俺がPHPを書くのって多分今だけな気がする…
(てかなんでPHP書く事になったんだっけ…)