class 如何作为函数参数启动?
How does a class get's initiated as a function argument?
当函数以 class 作为参数时,您可以使用此 class 而无需启动它。有人可以解释这个 class 是如何作为函数参数启动的吗?请参阅下面的代码进行说明。
/**
*
* @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();
}
它没有实例化。这只是一个被类型提示为 PseudoClass 对象的参数。必须创建一个 PseudoClass 对象并将其传递给 pseudoFunction,此代码才能在运行时运行。
代码仅显示方法逻辑。在现实生活中,您仍然需要实例化您使用的 class 才能将其用作函数的参数。
一些框架使用自动注入,但它们仍然在后台被实例化。
它被称为DI(依赖注入)。在面向对象编程中,我们使用这种模式,但取决于您遵循的设计。
dependency injection is a technique whereby one object supplies the
dependencies of another object.
用例示例:
<?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 here
当函数以 class 作为参数时,您可以使用此 class 而无需启动它。有人可以解释这个 class 是如何作为函数参数启动的吗?请参阅下面的代码进行说明。
/**
*
* @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();
}
它没有实例化。这只是一个被类型提示为 PseudoClass 对象的参数。必须创建一个 PseudoClass 对象并将其传递给 pseudoFunction,此代码才能在运行时运行。
代码仅显示方法逻辑。在现实生活中,您仍然需要实例化您使用的 class 才能将其用作函数的参数。
一些框架使用自动注入,但它们仍然在后台被实例化。
它被称为DI(依赖注入)。在面向对象编程中,我们使用这种模式,但取决于您遵循的设计。
dependency injection is a technique whereby one object supplies the dependencies of another object.
用例示例:
<?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 here