一般に信じられていることとは反対に、PHP の関数名は、クラス コンストラクターと同様に大文字と小文字を区別しません。あなたcase
はすでに動作しているはずです。これを試して
<?php
class TestClass {
var $testValue;
}
$a=new testclass();
$b=new TestClass();
$c=new TESTCLASS();
print_r($a);
print_r($b);
print_r($c);
?>
PHPマニュアルによると
注: 関数名は大文字と小文字を区別しませんが、通常は宣言に表示されているとおりに関数を呼び出すのが適切な形式です。
これは、クラス メソッドにも適用されます。
回避策/これらのクラスに名前を付けるより良い方法
以下は、クラス名が常にあなたが定義したとおりの正確な大文字と小文字になることを保証します。どのcase
ユーザーが入力しても関係ありません。
<?php
class TestClass {
var $testValue;
}
$userEnteredValue="testCLASS";
$myClasses=get_declared_classes();
$classNameIndex=array_search(strtolower($userEnteredValue), array_map('strtolower', $myClasses));
if($classNameIndex!==FALSE)
{
$classNameShouldBe=$myClasses[$classNameIndex];
echo $classNameShouldBe;
}
else
{
echo "This class is undefined";
}
?>