0

의존성 주입에 대해 많이 읽으므로 지금 뭔가를 만들고 있습니다. 간단한 양식 제출을 생각했습니다. 기본적으로 제목은 input 필드이고 본문은 textarea 인 양식입니다. 그런 다음컨테이너를 사용한 의존성 주입

나는이처럼 용기를 가지고 :

class IoC 
{ 
    protected $db; 

    public static function newPost() 
    { 
    $post = new Post(); // Instantiate post class so we can use the methods in there 
    $input = $post->getInput(); // Method that gets the POST values 
    $post->insertInput($input, $db); // Method that adds the post values to a database 
    } 
} 
//Call IoC::newPost(); on the page the form submits to 

Post 클래스 :

class Post 
{ 
    protected $db; 

    public function __construct($db) 
    { 
    $this->db = $db; 
    } 

    public function getInput() 
    { 
    // Should I get the post input here? Like $_POST['title'] etc. and put it 
    // into an array and then return it? 
    return $input; 
    } 

    public function insertIntoDB($db, $input) 
    { 
    // Should I hardcode the connection and query here? 
    } 
} 

당신이 볼 수 있듯이, 나는 연결에서 온해야하는 위치에 같은 혼란 스러워요 . 그것에 대해 생각해 보면 연결을 생성하고 해당 클래스를 컨테이너에서 호출하는 별도의 재사용 가능한 Database 클래스를 갖는 것이 현명 할 것이라고 생각하십니까?

나는 정말로 모른다. 당신이 어떻게 할 것인지 당신에게 이야기하고, 당신에게 어떤 사례가 있다면 그것을 말해 보라.

답변

1

의존성 주입의 아이디어는 말 그대로 모든 종속성을 주입한다는 것입니다. Post 클래스가 있다고 가정 해보십시오. 이 클래스는 - 당신의 경우 - 데이터베이스에 따라 다르므로 생성자에 Database 객체를 삽입해야합니다 (자세한 내용은 symfony2를 참조하십시오). 데이터베이스 클래스가 차례로 연결되고 연결을 설정하는 매개 변수가 필요하면 구성 (공급자) 객체를 주입하여이 작업을 수행 할 수 있습니다 (예!).

컨테이너는 개체를 관리하고 초기화하는 컨테이너 일뿐입니다. Post 객체에 삽입 할 수 있도록 데이터베이스 객체를 초기화하는 것은 컨테이너의 작업입니다.

귀하의 IoC가 무엇인지 모르겠지만 귀하의 컨테이너라면 개인적으로 그렇게하는 것을 권장하지 않습니다. 게시 객체를 요청하는 컨트롤러로 컨테이너를 전달할 수 있습니다.

http://symfony.com/doc/current/book/service_container.html