라이브러리

[PHP] ComponereAbstractDefinition::addInterface - 인터페이스 추가




PHP의 Componere는 Dependency Injection Container를 제공하는 프레임워크입니다. Componere는 객체의 의존성을 관리하여 객체를 생성하고, 객체 간의 의존성을 주입하는 역할을 합니다. Componere의 AbstractDefinition 클래스는 객체의 정의를 제공하며, 인터페이스, 클래스, 함수 등을 정의할 수 있습니다.

ComponereAbstractDefinition::addInterface 메소드는 인터페이스를 추가하는 메소드입니다. 이 메소드는 인터페이스를 정의하고, 해당 인터페이스를 구현하는 클래스를 등록할 수 있습니다.

인터페이스 추가 예제


#hostingforum.kr
php

use ComponereAbstractDefinition;

use ComponereContainer;



// 인터페이스 정의

interface Logger {

    public function log($message);

}



// 인터페이스를 구현하는 클래스 정의

class FileLogger implements Logger {

    public function log($message) {

        file_put_contents('log.txt', $message . "
", FILE_APPEND);

    }

}



// Componere Container 생성

$container = new Container();



// 인터페이스 추가

$definition = $container->getDefinition('Logger');

$definition->addInterface(Logger::class);



// 인터페이스를 구현하는 클래스 등록

$container->register('Logger', FileLogger::class);



// 인터페이스 사용

$logger = $container->get('Logger');

$logger->log('Hello, World!');



인터페이스 추가와 구현 클래스 등록 예제


#hostingforum.kr
php

use ComponereAbstractDefinition;

use ComponereContainer;



// 인터페이스 정의

interface Logger {

    public function log($message);

}



// 인터페이스를 구현하는 클래스 정의

class FileLogger implements Logger {

    public function log($message) {

        file_put_contents('log.txt', $message . "
", FILE_APPEND);

    }

}



class DatabaseLogger implements Logger {

    public function log($message) {

        // 데이터베이스 로그 저장

    }

}



// Componere Container 생성

$container = new Container();



// 인터페이스 추가

$definition = $container->getDefinition('Logger');

$definition->addInterface(Logger::class);



// 인터페이스를 구현하는 클래스 등록

$container->register('Logger', FileLogger::class);

$container->register('Logger', DatabaseLogger::class);



// 인터페이스 사용

$logger = $container->get('Logger');

$logger->log('Hello, World!');



인터페이스 추가와 구현 클래스 등록에 대한 의존성 주입 예제


#hostingforum.kr
php

use ComponereAbstractDefinition;

use ComponereContainer;



// 인터페이스 정의

interface Logger {

    public function log($message);

}



// 인터페이스를 구현하는 클래스 정의

class FileLogger implements Logger {

    private $writer;



    public function __construct(Writer $writer) {

        $this->writer = $writer;

    }



    public function log($message) {

        $this->writer->write($message);

    }

}



class Writer {

    public function write($message) {

        file_put_contents('log.txt', $message . "
", FILE_APPEND);

    }

}



// Componere Container 생성

$container = new Container();



// 인터페이스 추가

$definition = $container->getDefinition('Logger');

$definition->addInterface(Logger::class);



// 인터페이스를 구현하는 클래스 등록

$container->register('Logger', FileLogger::class);

$container->register('Writer', Writer::class);



// 인터페이스 사용

$logger = $container->get('Logger');

$logger->log('Hello, World!');



이 예제에서는 인터페이스 `Logger`를 추가하고, 인터페이스를 구현하는 클래스 `FileLogger`를 등록합니다. `FileLogger` 클래스는 `Writer` 인터페이스를 의존성 주입받아, `Writer` 클래스를 등록하여 의존성을 해결합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 647 페이지

검색

게시물 검색