dポイントプレゼントキャンペーン実施中!

こんにちは。今、本を見ながらPHPの勉強をしている者です。
オブジェクトの章に入って、サンプルコードをまる写しして動作させたのですが、うまく動作しないので悪い部分だけ探したところ、get_declared_classes()が思惑通りに動いてないことに気付きました。
思惑どおりいかないところを以下にまとめました。
スクリプト名は、kensa.phpです。クラスの宣言なんですが、どこに書けばいいか本にははっきりと書かれてませんでしたが、同じスクリプト内に書けばいいと思い最後に記述しました。
<?php
$classes=get_declared_classes();
print_r($classes);

class A{
var $foo='foo';
var $bar='bar';
var $baz=17.0;

function first_function(){ }
function second_function(){ }
};

class B extends A{
var $quux=false;

function third_function(){ }
};

class C extends B{
};

$a=new A;
$a->foo='sylvie';
$a->bar=23;

$b=new B;
$b->foo='bruno';
$b->quux=true;

$c=new C;
?>


Array ( [0] => A [1] => B [2] => C ) といった結果を出したかったのですが、出力された結果は、
Array ( [0] => stdClass [1] => Exception [2] => ErrorException [3] => COMPersistHelper [4] => com_exception……
こんな感じの配列が沢山でてきました。これはいったい何なのかインターネットで調べたら、「デフォルトの定義済みクラス」とか書いてありました。

<?php
$classes=get_declared_classes();
print_r($classes);
?>
これだけでも上と同じ出力結果になりました。

PHPマニュアルには、「この関数は、現在のスクリプトで宣言されたクラスの名前の配列を返します。」と書いてありますが、例文も少ないしわかりませんでした。他にも調べましたがわかりませんでした。クラスを宣言した場所が悪いのでしょうか?
こちらの環境はwindows vistaにxampp 1.6.5です。
phpは5.2.5です。どなたかアドバイスの方よろしくお願いします。

A 回答 (1件)

PHPで定義済みのクラスが入っていると思います。


配列の最後の方に A B Cというクラス定義が入ってるんじゃないですかね?
    • good
    • 0
この回答へのお礼

ありがとうございます。たしかに最後にありました。
これとは別の問題がありまして、(今回はサンプルスクリプトの一部ですがスクリプト全体のことで)また新たに質問を投稿しようと思ってますので何かございましたらまたよろしくお願いします。

お礼日時:2008/03/28 11:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!