4

我面临一个问题。我在一个变量中有我的类名,我需要实例化它,但我无法知道我的变量与类的大小写完全相同。

例子:

//The class I'm fetching is named "App_Utils_MyClass"
$var = "myclass";
$className = "App_Utils_".$var;
$obj = new $className();

我怎样才能使这项工作?

附加信息:

  • class_exists()在这个片段之前有一个检查(不区分大小写),以确保我想要的类确实存在。
  • 类名总是正确的驼峰式(例如MySuperAwesomeClass)。
4

1 回答 1

8

与流行的看法相反,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";
}




?>
于 2013-04-23T14:11:04.867 回答