티스토리 뷰

PHP도 DI가 가능하다

DI(의존성 주입)는 Java 진영의 Spring 프레임워크가 폭발적으로 유행시킨 개념이다. Phalcon 프레임워크를 이용하면 PHP에서도 DI가 가능하다. 이번 글에서는 Phancon에서의 DI 사용법을 설명하고자 한다.

사전지식

DI 사용하기

use Phalcon\Di\FactoryDefault;
use Phalcon\Http\Response;
use Phalcon\Mvc\Micro;

// 1
$di = new FactoryDefault();
$di->set("something", function () {
    return array(
        [
            "some_key" => "some_value",
            "another_key" => "another_value"
        ]);
});


// 2
$app = new Micro();
$app->setDI($di);

// 3
$app->get(
    "/v1/something",
    function ($name) use ($app) {
        $res = new Response();
        $res->setStatusCode(200);
        $res->setContentType("application/json", 'UTF-8');
        $res->setContent(json_encode(array(
            "something" => $app["something"]
        ), JSON_PRETTY_PRINT));

        return $res;
    }
);

$app->handle();
  • 1: FactoryDefault 오브젝트를 생성하면 set()을 이용하여 Key, Value 형태로 디펜던시 인젝션(DI)이 가능하다. 인젝션이 가능한 예로는 데이터베이스 연결 정보를 담은 Phalcon\Db\Adapter\Pdo\Mysql 오브젝트, INI 파일 정보를 담은 Phalcon\Config\Adapter\Ini 오브젝트를 들 수 있다.

  • 2: Micro 오브젝트의 setDI()를 이용하여 앞서 설정한 DI 오브젝트를 주입하면 $app이 이용되는 프로젝트 전역 범위에서 인젝션된 오브젝트에 접근하여 이용할 수 있다.

  • 3: 앞서 DIsomething이란 이름의 오브젝트를 $app["something"]의 형태로 가져와서 이용할 수 있다.

참고 글

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함