yii2 Essay (7) Dependency Injection - (2) Simple Implementation of PHP Dependency Injection

黄舟
Release: 2023-03-04 21:16:01
Original
1306 people have browsed it

We knew the problem earlier, so how does PHP solve this problem? Because it is yii2, we use yii2 to briefly introduce it. I integrated the core code of yii2 to explain the process of dependency injection in PHP.

Those who have used yii2 development are familiar with Yii::createObject. It is an "entry" for dependency injection. I will bring it up and change it:

//$p 可以想象的yii2的配置文件,如$p = ['class'=>'sdk/Test', 'file'=>'xxxx'];
// 'class' 是将要实现的类,‘file’是将要实现的对象的属性
function createObject($p){
    $class = $p['class'];
    unset($p['class']);
    $obj = new $class;//require 使用的是 autoload 实现的
    foreach($p as $f => $v){
        $class->$f = $v;    
    }

    return $obj;
Copy after login

Of course, yii2 createObject is far more than that. I wrote it so simply just to illustrate a way for PHP to implement "dependency injection". Of course, it is very rudimentary (it does not have the most basic fault-tolerant function, and it does not have all the functions of dependency injection. For example, parameter management, compatible closures, etc., these will all emerge when we actually look at the yii2 DI implementation).

The above is the content of yii2 Essay (7) Dependency Injection - (2) Simple implementation of PHP dependency injection. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!