gpt4 book ai didi

php - 变量类名忽略 "use"

转载 作者:可可西里 更新时间:2023-10-31 23:22:43 24 4
gpt4 key购买 nike

从其他帖子看来,如果您定义了 namespace 并希望在另一个 namespace 中动态创建对象,则必须构造一个字符串并在新调用中使用它。但是,我的行为很奇怪。看来此方法无法跨 namespace 工作。

用户.php:

namespace application\models;

class User {

public function hello() {
echo "Hello from User!";
}
}

Controller .php:

namespace application\controllers;

use application\models;

require('User.php');

$userStr = 'models\\User';
//$userOne = new $userStr(); //Doesn't work. Gets a "Class 'models\User' not found" error
$userOne = new models\User(); //Works fine

$userStr = '\\application\\models\\User';
$userTwo = new $userStr(); //Works fine

$userOne->hello();
$userTwo->hello();

知道为什么当使用变量作为类名时,我需要在变量中使用完全限定的命名空间,但硬编码后,我可以利用“使用”命令吗?

最佳答案

您不能使用 use 导入变量类名。这是 PHP 的限制。

请参阅相关问题:

关于php - 变量类名忽略 "use",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13313904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com