Php 类如何获得';是作为函数参数启动的吗?
当一个函数有一个类作为参数时,您可以使用这个类而无需初始化它。有人能解释一下这个类是如何作为函数参数启动的吗?有关说明,请参见下面的代码Php 类如何获得';是作为函数参数启动的吗?,php,class,instantiation,Php,Class,Instantiation,当一个函数有一个类作为参数时,您可以使用这个类而无需初始化它。有人能解释一下这个类是如何作为函数参数启动的吗?有关说明,请参见下面的代码 /** * * @param PseudoClass $class * @return void */ public function pseudoFunction(PseudoClass $class) { // access PseudoClass instance from
/**
*
* @param PseudoClass $class
* @return void
*/
public function pseudoFunction(PseudoClass $class)
{
// access PseudoClass instance from function argument
$class->exampleFunction();
// instead of manually creating a new instance of the PseudoClass
new PseudoClass();
$class->exampleFunction();
}
它没有实例化。这只是一个类型暗示为伪类对象的参数。必须创建伪类对象并将其传递给伪函数,此代码才能在运行时工作。此代码仅显示方法逻辑。在现实生活中,在将类用作函数的参数之前,仍然需要实例化所使用的类 一些框架使用自动注入,但它们仍然是在后台实例化的。它被称为DI(依赖注入)。在面向对象编程中,我们使用这种模式,但这取决于您遵循的设计 依赖注入是一种由一个对象提供 另一个对象的依赖项 用例示例:
<?php
class Skills {
public function Web(){
return 'Web Developer';
}
public function Api(){
return 'API Developer';
}
}
class Programmer {
public function skill(Skills $skills){
echo $skills->Api();
}
}
// Instantiate Skills class to be used for DI.
$skills = new Skills();
$p = new Programmer();
// DI occurs here.
$p->skill($skills);
?>
了解更多关于DI的信息为了解释这一点,我在PHP项目中使用了laravel框架。Laravel提供自动注入,因此允许此代码工作。对于Laravel,所有类都通过bind或singleton方法自动绑定。无论何时在方法中调用它们,都会有一条说明,说明如何创建该类的实例。实例位于服务容器中。您可以在此处阅读此信息: