애플리케이션은 객체 차트입니다.

8950 단어 BEAR.Sunday
HelloWorld
첫날에서 시험적으로 사용된 MyvVendor\HelloWorld 응용 프로그램은 가장 작은 설정의 응용 프로그램이다.

가능한 베어.Sunday 애플리케이션의 최소 구성PHP 파일은 4개입니다.
  • Index.php 페이지 자원
  • AppModule 애플리케이션 모듈
  • www/index.php 응용 스크립트
  • App.php 응용 프로그램 클래스
  • リソース는 MVC 프레임워크로 접근モデル하고 ページリソース는 웹 페이지에 대응한다.アプリケーションモジュール DI와 AOP의 설정을 통해 대상의 구성을 결정한다.
    응용 프로그램 실행에 필요한 서비스 대상アプリケーションオブジェクト을 유지하고 스크립트는 이 서비스로 응용 프로그램을 실행합니다.
    응용 프로그램 스크립트
    응용 프로그램의 실행 절차를 기술하였다.
    <?php
    
    use BEAR\Resource\Request;
    use BEAR\Sunday\Extension\Application\AbstractApp;
    use BEAR\Sunday\Extension\Application\AppInterface;
    use MyVendor\HelloWorld\AppModule;
    use Ray\Di\Injector;
    
    require dirname(__DIR__) . '/vendor/autoload.php';
    
    $app = (new Injector(new AppModule))->getInstance(AppInterface::class);
    /** @var $app AbstractApp */
    
    $request = $app->router->match($GLOBALS);
    try {
        // resource request
        $page = $app->resource
            ->{$request->method}
            ->uri($request->path)
            ->withQuery($request->query)
            ->request();
        /** @var $page Request */
    
        // representation transfer
        $page()->transfer($app->responder);
    
    } catch (\Exception $e) {
        $code = $e->getCode() ?: 500;
        http_response_code($code);
        echo $code;
        error_log($e);
    }
    
    순서대로 봅시다.5단계가 있습니다.
    1. 자동 적재기의 등록
    require dirname(__DIR__) . '/vendor/autoload.php';
    
    composer의 자동 로드를 사용합니다.
    2. 응용 사례 생성
    $app = (new Injector(new AppModule))->getInstance(AppInterface::class);
    
    응용 프로그램은 변수에 저장됩니다.BEAR.Sunday 전체 응용 프로그램이 DI를 사용하기 때문에 실제 클래스 이름은 거의 나타나지 않는다.모든 의존의 속박을 아는 것은AppModule.분사기는 그것을 사용하여 응용 클래스에서 응용 실례를 생성한다.
    응용 프로그램 종류의 이름도 여기에 등장하지 않을 것이니 주의하세요.AppInterface 제약된 응용 프로그램 종류를 사용합니다.
    기본적인 응용 프로그램 종류는 이렇다.
    <?php
    namespace BEAR\Sunday\Extension\Application;
    
    use BEAR\Resource\ResourceInterface;
    use BEAR\Sunday\Extension\Router\RouterInterface;
    use BEAR\Sunday\Extension\Transfer\TransferInterface;
    
    class AbstractApp implements AppInterface
    {
        /**
         * @var RouterInterface
         */
        public $router;
    
        /**
         * @var TransferInterface
         */
        public $responder;
    
        /**
         * @var ResourceInterface
         */
        public $resource;
    
        /**
         * @param RouterInterface   $router
         * @param TransferInterface $responder
         * @param ResourceInterface $resource
         */
        public function __construct(
            RouterInterface $router,
            TransferInterface $responder,
            ResourceInterface $resource
        ) {
            $this->router = $router;
            $this->responder = $responder;
            $this->resource = $resource;
        }
    }
    
    프로그램의 움직임 스크립트가 기술하기 때문에 이 분류는 기술하지 않고 스크립트에서 사용하는 서비스 대상 3개만 보존합니다.
    클래스는 간단하지만 실제 생성된 실례는 매우 복잡하다.
    http://bearsunday.github.io/readme/print_o/app.html
    http://bearsunday.github.io/readme/print_o/app_array.html(상세 정보)
    BEAR.Sunday는 적절한 DI를 사용하여 대상을 대상으로 하는 응용 프로그램입니다.
    대상을 대상으로 하는 응용 프로그램은 서로 연결된 복잡한 대상 네트워크를 포함한다.객체는 객체에 의해 소유되거나 다른 객체(또는 참조)를 포함하거나 객체의 임의의 객체를 통해 서로 연결됩니다.대상 네트워크를 대상 도표라고 부른다.
    위에서 설명한 링크의 객체 차트MyVendor\HelloWorld\App를 검색하십시오.세 개의 대상이 의존하는 루트 대상을 찾을 것입니다.이것은 AppInterface에 얽매인 응용 프로그램 종류의 실례이다.
    내일 이 세 서비스 대상을 계속 사용해서 프로그램을 실행합니다.

    좋은 웹페이지 즐겨찾기