アーカイブ

PHP T_PAAMAYIM_NEKUDOTAYIM エラー

<?php
class Foo {
 public function hello() {
  echo ‘Hello world!’;
 }
 public static function hello2() {
  echo ‘Hello world!’;
 }
}
$my_foo = Foo;
$a = new $my_foo();
$a->hello();
$my_foo2 = Foo;
$my_foo2::hello2();
?>

↑こんなコードを書いたら、↓下記のようなパースエラーですと怒られました。

Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in C:\www\aaa\aaa\test_1.php on line 15

調べた所、ヘブライ語でダブルコロン「::」をこのように表記するそうです。
スコープ定義演算子 (::)
スコープ定義演算子 (またの名を Paamayim Nekudotayim)、
平たく言うと「ダブルコロン」は、トークンのひとつです。
static, 定数 およびオーバーライドされたクラスのプロパティやメソッドにアクセスすることができます。
これらの要素をクラス定義の外から参照する際には、 クラスの名前を使用してください。
PHP 5.3.0 以降では、変数を用いてクラスを参照することも可能です。
変数の値に (self や parent、 static といった) キーワードを指定することはできません。

そこで下記のようにしたら動きました。
<?php
class Foo {
 public function hello() {
  echo ‘Hello world!’;
 }
 public static function hello2() {
  echo ‘Hello world!2222’;
 }
}
$my_foo = Foo;
$a = new $my_foo();
$a->hello();
Foo::hello2();
?>

PHPは何かPerlのようなC(JAVA?)のような言語ですね。
この記号とか矢印が何かまだ慣れません。。

phpをeclipseでデバック

PHPの勉強は全くはかどらず、環境構築しただけで、なかなかやる気になりません。
PHP5 + Apache2.2 + MySQL5.1.X で動く環境を作り
バーチャルホストの環境も整えることができました。
次はeclipseでデバックできると聞き、その環境を作るのに少してこずりました。
——————————————————————–
1.Eclipse
Eclipseの日本語PHP開発環境をインストールしました。Europa版を落としました。
Eclips3.3 Europa Pleiades All in One

解凍して
C:\eclipse フォルダへコピー

2.PHPEclipse
「net.sourceforge.phpeclipse_1.1.8.bin.dist.zip」をダウンロード
解凍して、featuresとpluginsをC:\eclipse フォルダへコピー

3.ZendDebugger
ZendDebugger-5.2.14-cygwin_nt-i386.zipをダウンロードして
phpのフォルダへ
PHP.iniの設定
一番下に追加
zend_extension_ts=C:\php\ext\ZendDebugger.dll
zend_debugger.allow_hosts=127.0.0.1
zend_debugger.expose_remotely=always
——————————————————————–

デバックすると「Incompatible Debug Server version」エラーになって
調べると、
ヘルプ→ソフトウェア更新で最新版にすればエラーでなくなったと書いてあるけど
途中で通信エラーになって何度やっても駄目でした。
ミラーの設定解除したり色々やったけど駄目でした。

そこで泣く泣く、こちらからインストールしてPleiades[プレアデス]の言語パックを入れました。
そしたら、あっさりとデバックできました。
これだと完璧な日本語化にならないので、ちょっと不便なんですが動くのでとりあえずこれで行きます。
PHPはインタプリタ型の言語なのに何でデバックできるの?と思っていましたが
PHPはソースコードをコンパイルしてから実行するため純粋なインタプリタとは言えないが、動きはインタプリタに似ている。ということで納得しました。