【发布时间】:2023-01-20 14:54:26
【问题描述】:
我继承了一些这样的代码
public static function instanciateRepository( $repositoryClass, ... ) {
...
new $repositoryClass( ... );
}
其中$repositoryClass是需要实例化的类类型。
我想添加语法检查以将错误的类参数传递给此函数,特别是将 $repositoryClass 限制为 CommonRepository 的子类。
是否有语法结构可以在 PHP 中实现,例如instanciateRepository( CommonRepository::class $repositoryClass, ..?
【问题讨论】:
-
您使用的是哪个版本?您可以像这样简单地限制参数类型:
import CommonRepository // import from specific location.和下一个public static function instanciateRepository( CommonRepository $repositoryClass, ... ) -
这意味着参数是一个类的实例,而我需要在这里传递一个类类型。 @OliwerLisek PHP 版本是 7.4
-
为什么你需要从字面上注入一个类,而不是类的实例?你想做什么?
-
@OliwerLisek 遗留代码使用它来实例化该类的新实例。
-
如果您更清楚
$repositoryClass参数是什么以及您试图用它做什么,将会有所帮助。但是您可以使用instanceof 来检查您的实例化类是否符合特定类型。 stackoverflow.com/a/1965730/11061164
标签: php static-typing function-parameter