コンテキストコードにジャンプしましょう。 (1)これは正常に動作します...if文内でクラスを見つける特別な条件はありますか?
を以下をお読みください:
new myClass();
class myClass{
// Stuff
}
(2)(致命的なエラークラスが見つからない)動作しません:
if ($_POST['apikey'] == "foo") {
new myClass();
class myClass{
// Stuff
}
}
(3)上記の解決策:
if ($_POST['apikey'] == "foo") {
class myClass{
// Stuff
}
new myClass();
}
なぜ私はそれを修正するために何をしたのか分かりません。私はそれがスクリプト言語だと知っていますが、なぜ(1)働くでしょうか? if文やそれに類するもので入れ子にしたら、それは動作しないPHPの生活の質の一種ですか?
クラスと関数を条件付きで作成することは悪い習慣であり、巨大なデバッグ頭痛を引き起こします。 – Devon
クラスを自分のファイルに入れ、オートローダーを使用してクラスをロードする必要があります(レイジーローディング=それらを使用しない限り含まれません)。その後、現在のソリューションでは使用できない再利用も可能です。 –
あなたのクラス定義は条件付きであり、それを使用しようとすると___after___定義されます。条件付きで定義されたクラスは一般的には良いアイデアではなく、オートローダーを使ったクラスファイルの方がはるかに効率的です –