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