Czy jest to zastrzyk zależności i czy jest to zła praktyka?

Mam małą strukturę i tak to zakodowałem. Nie jestem pewien, czy nazywa się to wstrzykiwaniem zależności, czy nie. Nie wiem, czy jest to wzór projektu, czy nie. Ja też nie wiem i nie zastanawiam się, czy przemijam$this jak param to zła praktyka.

Zerknij na to; (Nie jest to przykład pracy, po prostu napisałem te kody do przeglądarki w celu wyjaśnienia.)

/* This is engine model */
require_once('Database.class.php');
require_once('Image.class.php');
require_once('Misc.class.php');
require_once('BBCode.class.php');

class FrameWork_Engine_Model
{
    public $database, $config, $misc, $bbcode, $controller, $image;

    function __construct($config)
    {
            $this->database = new Database($configParams);
            $this->image = new Image($this);
            $this->misc = new Misc($this);
            $this->bbcode = new BBCode($this);
            $this->controller = new Controller($this); //here I call Register controller depending on routing, in this case, register controller.
    }
 ...
 }
 /* This is register controller */
 class Register extends Base_Controller
 {
       /*I can access anything over Engine Model in my controllers */
       $this->engine->database->query(); //I access database model
       $this->engine->bbcode->tag('you'); //I access bbcode model
       $this->engine->image->sanitizeUploadedFile(); //I access image model

       //etc. I can access others models like this.
 }

Zasadniczo, moje kontrolery mogą uzyskać dostęp do wszystkich modeli za pomocą modelu silnika. wierzędependency injection is all about injecting dependencies into controllers? Podobnie, mój kontroler rejestru potrzebuje modelu bazy danych, modelu routingu i modelu szablonów do pracy. Tutaj ma wszystko, od czego zależy. Czy się mylę?

Z tymi, którzy powiedzieli, moje pytania to:

Czy jest to poprawny przykład wstrzykiwania zależności? Jeśli nie, co to jest? Czy ma nazwę w wzorach projektowych?

Jeśli nie ma to nic wspólnego z wstrzykiwaniem zależności, jakie zmiany należy wprowadzić, aby uzyskać DI?

Mija$this parametr na nowo utworzonych klasach to zła praktyka? Jeśli tak, to dlaczego?

Ps. Wiem, że zadawanie 3 pytań w temacie nie jest czymś, co lubi stackoverflow, ale nie chcę kopiować wklejającego całego tekstu, aby je zapytać.

questionAnswers(2)

yourAnswerToTheQuestion