※ ChatGPTを利用し、要約された質問です(原文:get_declared_classes()について)
get_declared_classes()について
このQ&Aのポイント
PHPでget_declared_classes()関数を使ってクラスの一覧を取得する方法について説明します。
get_declared_classes()関数は、現在のスクリプトで宣言されたクラスの名前の配列を返します。
しかし、実際にはデフォルトの定義済みクラスも含まれるため、意図しないクラスの名前が返されることがあります。
get_declared_classes()について
こんにちは。今、本を見ながら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です。どなたかアドバイスの方よろしくお願いします。
お礼
ありがとうございます。たしかに最後にありました。 これとは別の問題がありまして、(今回はサンプルスクリプトの一部ですがスクリプト全体のことで)また新たに質問を投稿しようと思ってますので何かございましたらまたよろしくお願いします。