[PHP-users 6462] Parse error "${'class'}::example();"

Yoshitake Shinohara php-users@php.gr.jp
Sun, 24 Mar 2002 20:31:27 +0900 (JST)


こんばんは。
よしたけ@YYNです。

オブジェクト指向プログラムを今まで書いた事が無くて、今回えいや!で勉強はじめたのです
が、サンプルコードで動かない部分がありましたので、何が問題か教えてください。

http://www.php.net/manual/ja/keyword.paamayim-nekudotayim.php 中の
-------------
class A {
  function example() {
    return 'example!';
  }
}

$class = 'A';
$instance = 'a';

$a = new A;

// While you can do this in PHP4:
print ${$instance}->example();

// The parser doesn't seem to like this:
print ${'class'}::example();

// A workaround is to use eval()
print eval("return $class::example();");
-------------
のコードで、print ${'class'}::example();の部分でparse errorになります。

実際にやりたいことは、パラメータを与えて、パラメータのクラス/関数を動的に呼びたい
という事なので、$a = new $class; print ${$instance}->example(); とやれば
希望のことは出来るのですが、出来れば "::" を使って簡単に書きたいと思ってます。

どこか設定の問題なのか、ドキュメントの誤りなのか、versionの違いなのかを教えて
頂けませんでしょうか?。

現在の環境は
os : Debian woody
apache : 1.3.23
php : Version 4.1.2
 '../configure' '--prefix=/usr' '--with-apxs=/usr/bin/apxs' '--with- regex=system'
 '--with-config-file-path=/etc/php4/apache' '--disable- rpath' '--disable-debug' 
 '--enable-memory-limit' '--enable-calendar' '- -enable-sysvsem' '--enable-sysvshm'
 '--enable-track-vars' '-- enable-trans-sid' '--enable-bcmath' '--with-bz2' '--enable-ctype'
 '-- with-db2' '--with-iconv' '--with-ndbm' '--enable-exif' '--enable- filepro' '--enable-ftp'
 '--with-gettext' '--enable-mbstring' '--enable- zend-multibyte' '--enable-mbstr-enc-trans'
 '--with-pcre-regex=/usr' '--enable-shmop' '--enable-sockets' '--with-xml=/usr'
 '--with-expat- dir=/usr' '--enable-yp' '--with-zlib' '--without-pgsql' '--disable-static'
 '--with-layout=GNU' '--with-curl=shared,/usr' '--with-dom=shared,/ usr' '--with-zlib-dir=/usr'
 '--with-gd=shared,/usr' '--with-jpeg- dir=shared,/usr' '--with-xpm-dir=shared,/usr/X11R6'
 '--with-png- dir=shared,/usr' '--with-freetype-dir=shared,/usr' '--with- imap=shared,/usr'
 '--with-ldap=shared,/usr' '--with-mcal=shared,/usr' '--with-mhash=shared,/usr' '--with-mm'
 '--with-mysql=shared,/usr' '- -with-recode=shared,/usr' '--enable-xslt'
 '--with-xslt-sablot=shared,/ usr' '--without-sybase-ct' '--with-snmp=shared'
 '--enable-ucd-snmp- hack' '--with-ttf=shared,/usr' '--with-t1lib=shared,/usr'

↑多くてすみません。Debianで4.1.2を独自にパッケージした物です。
ちなみに、shared になっているモジュールで読み込んでいるのは、curl,gd,imap,pear,pgsql
です。

以上、よろしくお願いいたします。

------------------------
YYN partnership company
Yoshitake Shinohara
yoshi@yyn.jp