PHP -使用use关键字的变量调用类


PHP - Calling class using variable with use keyword

我希望在另一个文件中使用变量作为类名调用函数。当用户登录时,我获得他们的访问级别,并希望使用接收到的变量来调用他们的访问级别允许他们访问的不同菜单、页面等。例如,它们可以有以下访问权限:

    <
  • 管理员/gh>员工
  • 公共>

$access被设置为这些变量之一(字符串值)。

<标题> 1。在我的pages.php脚本中,我有以下内容(简化):
namespace Project'PageContent;
use Project'PageContent as pageContent;
class Administrator
{
    public function pageAccess()
    {
        return "Administrator access";
    }
}
class Employee
{
    public function pageAccess()
    {
        return "Employee access";
    }
}
class Public
{
    public function pageAccess()
    {
        return "Public access";
    }
}
<标题> 2。现在我可以访问它的方式(从另一个页面-简化):
namespace Project'Main;
use Project'Main as main;
require_once('pages.php');
use Project'PageContent as pageContent;
$response = pageContent'Administrator::pageAccess();
echo $response
<标题> 3。对于我想访问它的方式(简化)-这显然不起作用,否则我不会问这个问题:
namespace Project'Main;
use Project'Main as main;
$access = 'Administrator';
require_once('pages.php');
use Project'PageContent as pageContent;
$response = pageContent'.$access::pageAccess();
echo $response;

其中$access表示一个字符串,可以用来指向适当的类(在上面的例子中- Administrator)

3的输出应该匹配2的输出并返回Administrator access

对此的任何帮助都非常感激,谢谢!

你不能像那样访问公共方法。您需要实例化一个对象,然后访问该方法。你可以这样称呼它:

$class = 'pageContent''' . $otherClassName;
$obj = new $class();
$obj->pageAccess();

还值得一提的是,如果没有适当的验证,您所做的操作可能存在潜在的安全问题。