[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