PHP

OSXにEclipseを日本語化してPHP開発環境を作るメモ

http://www.eclipse.org/pdt/downloads/
PDT(PHP Developpers Tool)ダウンロード
20111021時点では3.6 herios が最新

 

Pleoades ダウンロード
http://mergedoc.sourceforge.jp/
Eclipse 3.6.2 Helios SR2 (JRE無し)をとりあえずDL。WINDOWS版しかない。

 

  1. 2つとも解答
  2. ダウンロードしたPDTをAppフォスダにinstall
  3. ダウンロードしたPleiadesを解凍してできたdropinsフォルダで先ほどインストールしたMac版Eclipseのdropinsを上書き
  4. appに入れたeclipseのAPPアイコンを右クリックで「パッケージの内容を表示」
  5. Contents/MacOS/eclipse.iniを編集
  6. Pleoadesのeclipse.iniを開いて、「-javaagent:dropins ・・・」の箇所をコピー
  7. この一文を、先程開いたAppのEclipse.iniに。-javaagent:dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
  8. パスを変えてこんな感じで – javaagent:../../../dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

 

で、起動すれば日本語かされてるはず。

[参考]

  • http://nicomelmo.blog118.fc2.com/blog-entry-666.html
  • http://labs.uechoco.com/blog/2009/04/mac-eclipse-install-pleiades-japanese.html

PHP カンファレンス 2008のレポを待ってたんですよ。

PHP カンファレンス 2008 に行ってきた – Heavens hell
http://d.hatena.ne.jp/heavenshell/20080721/1216661644

追加
http://codezine.jp/a/article/aid/2850.aspx
http://d.hatena.ne.jp/siroi_mogutan/20080721
http://d.hatena.ne.jp/siroi_mogutan/20080721
http://d.hatena.ne.jp/lesamoureuses/20080721/1216650732
http://www.nicovideo.jp/mylist/7638087
http://techtalk.jp/2008/07/php2008.html
http://ideaup.seesaa.net/article/103354230.html
http://d.hatena.ne.jp/p4life/20080721/1216616570
http://www.teon-factory.com/wp/?p=66

レポを待っていました!

ライトニングトーク「激論!PHPの次に学ぶ言語はこれだ」の中身が気になって気になって。

楽天の発表もちょっとだけ気になって。
楽天のはなんとなく予想通りだったっぽいなぁ。。
詳細レポ出るのを待とう。

とりあえずもろもろ片付いたらRubyとASをボチボチいじってく感じだなー
環境も作り直さなきゃかー
cakeとPHP5もいじらねば。ねば・・・
ubuntsで建てるか・・・

[PHP]パスとかファイル名とかのメモ。

PHP自虐系メモ。
よく忘れがちだから。

echo __FILE__; //大前提 フルパス。

$pass = dirname(__FILE__);
$arrPath = split(‘/’, $pass);
$cdir = array_pop($arrPath);
echo “CURRENT DIR=”.$cdir; //カレントディレクトリ表示

echo getcwd(); // getcwd()=dirname(__FILE__)
$cdir = array_pop(split(‘/’, getcwd()));
echo “CURRENT DIR=”.$cdir; //カレントディレクトリ表示

class getClassTest{
function getClassTest(){
echo “get_class() = “.get_class($this);
}
}
$tes = new getClassTest();
//getclasstestを表示

echo basename(__FILE__); //実行ファイル名を表示 index.phpならindex.phpを表示

print_r(pathinfo(__FILE__));
//Array ( [dirname] => スクリプトのディレクトリ
// [basename] => スクリプト名 = basename(__FILE__)
// [extension] => 拡張子 ) を表示

echo $_SERVER[‘SCRIPT_NAME’].”
\n”; //WEBサーバからのパス ≠__FILE__

[PHP:メモ]月の計算の仕方を。

携帯の、会員期間の算出方法を
超忘れちゃってたからメモ。
確かこんな感じで計算してたはず・・・
下記コードで特に問題なく動作。
エラー処理は適宜入れなきゃだけど。

※入会年月日を、1ヶ月目として月初単位で1ヶ月継続として計算。

//test
$testDate = mktime(0,0,0, 12, 4, 2007);
$nowTime = time();

echo “チェック対象日付”. date(‘Ymd’,$testDate).”
\n”;
echo “現在日時”.date(‘Ymd’).”
\n”;

//チェック対象の月の初日
$startMonth = mktime(0,0,0, date(‘m’,$testDate), 1, date(‘Y’,$testDate));

//月数を求める
$termMon=1;
for( $i=0; $i < 1000; $i++){
$checkDatetime = mktime(0,0,0,date(‘m’)-$i,1,date(‘Y’));
if($checkDatetime >= $startMonth){
echo “CHECK DATE = “.date(‘Y/m/d’, $checkDatetime).”
\n”;
}else{
$termMon = $i;
break;
}
}
echo “期間(月)は”.$termMon.”っす
\n”;
echo “TEST”.date(‘Ymd’, mktime(0,0,0, 2+1,28,2007));

[PHP:Smarty]変なトコで落とし穴。条件文に定数使用するとき。

Smartyで思わず変なトコで引っかかったのでメモ。

テンプレ内で$smarty.const.XXXでPHPでdefineした定数にアクセスできるのはお約束として、

{if $hoge == $smarty.const.DEFINED_VALUE}
{/if}

みたいな条件判定をさせようとしたら、
どう考えても一致しないケースでもなぜか条件クリアしてしまう。

テンプレートキャッシュの中身をみたら
上記の文が

_tpl_vars[‘hoge’] == defined(‘DEFINED_VALUE’) ? DEFINED_VALUE : null ): ?>

とパースされてる。

これはこれでいいんじゃねー?と思ったが
念の為PHP側で一回テストしたらこれがなぜかアウト。

ex. if ($hoge == defined(‘DEFINED_VALUE’) ? DEFINED_VALUE : null ):

hogeに”HOGEHOGE”、define(DEFINE_VALUE,’DEFINE’)
みたいになっててもif文判定クリアしちゃう。
echo defined(‘DEFINED_VALUE’) ? DEFINED_VALUE : null;
ってすると、当然のように設定した文言”DEFINE”が表示。

PHPエンジン側の解釈のタイミング?みたいなので下記のようにする事で一応クリア。

{if $hoge == ($smarty.const.DEFINED_VALUE)}

あわせて、上記PHP側の例の場合

ex. if ($hoge == defined(‘DEFINED_VALUE’) ? DEFINED_VALUE : null ):

これも

ex. if ($hoge == (defined(‘DEFINED_VALUE’) ? DEFINED_VALUE : null) ):

って三項演算子の箇所を括ってやればOKだった。

ちょっと釈然としない気もするけど・・・一応メモ。

備忘録【smarty】

変数内容をチェックしたいときー。
忘れちゃうのでメモ。

パターン1はsmartyの標準関数での出力。
パターン2はまんまvar_dump通した場合。
1の方が改行やパラメータ名のボールドなどしてくれるので見やすい。

Patarn 1.
{$hoge|@debug_print_var}

Patarn 2.
{$hoge|var_dump}

【メモ】Smarty Support for PDT【開発用】

これは使ってみなくては・・・
PDT用のSmartyプラグイン。
smartypdt – Google Code
ネタ元:Smarty Support for PDT – Do You PHP はてな

あ、Eclipse。
pleiadesのAll In Oneパッケージで使ってた所、
携帯用のサイトのテンプレートファイルがどーしても文字化けしてたんだけど

(ヘッダでShift_jis宣言してるけどエンコードはEUCなファイル)
(続:勝手に解析して、shift_jisで表示してやがった)

ファイル毎に右クリックで設定できるの気づかなくて、
素のExlipse入れてみたり、PDT All In One入れてみたり苦闘。

久々に変なトコで躓いた。。

Eclipse 3.3?系 installメモ

自分用。
他 EUCの文字化け問題回避メモ

[[エクリプスWiki:http://eclipsewiki.net/eclipse/]]
PDT All-IN-ONEをDL[[PDT:http://www.eclipse.org/pdt/]]
無理やりAptana For Eclipse 3.2 pluginをぶっこみ[[AptanaPlugin:http://update.aptana.com/install/3.2/]]

文字化けする場合、下記からjarをDL
(WindowsのJavaでEUC-JPが文字化けする件について の箇所)
[[Eclipse PDT (PHP Development Tool) – Q&A?:http://hp.vector.co.jp/authors/VA000137/phpide/qanda.html]]
これで、aptanaの同期マネージャーがEclipse3.3.0では使えた。ウホッ。

TargetManeger(DSDP.TM)も活用してみねば。

http://hp.vector.co.jp/authors/VA000137/phpide/qanda.html
http://hp.vector.co.jp/authors/VA000137/workspace/eucjpwin.html

SFTP
http://blog.makies.com/archives/2007/03/26/593-eclipsephp.html
http://www006.upp.so-net.ne.jp/ugougo/blogger/2/2006_11_01_ugougo2_archive.html

PDTのがPHP Eclipseよりも軽いって話だが、
3.1+PHP Eclipseと3.3+PDTであまり差異は感じなかった。
もうちょっと使い込んでみないと実感できないかな。
機能的には3.3+PDTのが使いやすい。
ヒアドキュメントも判別してくれるし。

[PHP]簡易速度検証[自分用]

PEAR入れるのが面倒だったり、入れられないとき用の簡易実行速度測定関数
??? /**
???? * 簡易 実行速度検証用
???? */
var $_lastTimer;
var $_startTime;
function printTimer($line = null){
list($msec, $sec) = explode(” “, microtime());
$nowTime = (float)$sec + (float)$msec;

if(!isset($this->_startTime)) $this->_startTime = $nowTime;

$resultTime = $nowTime – $this->_lastTimer;
$this->_lastTimer = $nowTime;

if(isset($line)) echo $line.”行 計測時間:”;
printf(“%f”, $resultTime);
echo “   経過時間:”.sprintf(“%f”,$nowTime – $this->_startTime);
echo “
\n”;
//error_log(date(“Ymd H:i:s”).” 実行時間:”.sprintf(“%f”,$resTime).” \n\n”, 3, LOG);
}

んでも、やっぱすちゃんとしたモジュール使った方がキメは細かいやね。
log4php
PEAR:Log
zend_log
PEAR:Benchmark

[PHP]ディレクトリ展開ソース[自分用]

自分メモ用。
作業ディレクトリの展開indexソース。

header(“Content-Type: text/html;charset=SHIFT_JIS”);
$server_name = $_SERVER[“HTTP_HOST”];

?>




$dh = opendir(dirname(__FILE__));
while (false !== ($filename = readdir($dh))) {
if($filename != ‘.’
&& $filename != ‘..’
){
$files[] = $filename;
}
}
sort($files);

for($i = 0; $i < count($files); $i++){
if(is_dir($files[$i])){
if($filename != “.” && $filename != “..”){
echo ““.$files[$i].”
“;
}
}
}

?>
phpinfo.php