HydePHP의 내부 구조 - 2부: 서비스

서비스에 대한 심층 분석



Deep-Dives takes a closer look at the codebase and tries to explain what's going on.



이 기사는 HydePHP의 내부 아키텍처에 대한 제 시리즈의 두 번째 기사입니다.
1부를 아직 읽지 않았다면 먼저 읽어야 합니다. 다음은 빠른 링크입니다.

서비스 살펴보기



상대적으로 새로운 서비스 클래스인 DocumentationSidebarService를 살펴보고 실제 예제를 통해 서비스가 어떻게 사용되는지 더 잘 이해해 봅시다.

Here is a link to the source code on GitHub.



이 서비스는 문서 페이지에서 사이드바를 관리하는 데 사용되는 것으로 짐작할 수 있습니다!

블레이드 보기에서 사이드바 데이터를 사용할 때 필요한 데이터를 얻기 위해 서비스와 상호 작용합니다.

물론 look at the source code을 사용하여 모든 것이 어떻게 결합되는지 더 잘 이해할 수 있지만 다음은 코드에서 느슨하게 뽑아낸 몇 가지 예입니다.

$sidebar = Hyde\Framework\Services\DocumentationSidebarService::create();

@if($sidebar->hasCategories())
    @foreach ($sidebar->getCategories() as $category)
        @foreach ($sidebar->getItemsInCategory($category) as $item)

@else
    @foreach ($sidebar->getSidebar() as $item)


보시다시피 서비스는 많은 데이터와 논리에 대한 액세스를 제공합니다.
그러나 서비스는 무거운 작업을 많이 수행하지 않습니다. 사실, 서비스에는 데이터를 생성하고 수정하는 방법이 포함되어 있습니다.
사이드바 생성을 담당하지만 실제로는 다른 구성 요소를 활용하여 무거운 작업을 수행합니다.

예를 들어, DocumentationSidebarService::create() 메서드는 다음을 포함하는 서비스의 새 인스턴스를 만드는 데 사용됩니다.
새로 생성된 사이드바이지만 사이드바에 넣을 항목을 가져오는 작업은 CollectionService에 의해 수행됩니다.
머리말 데이터를 얻기 위한 실제 구문 분석은 사이드바 항목 모델에서 수행됩니다. 분류는 관심사에서 처리됩니다.

/**
 * @example Hyde\Framework\Services\DocumentationSidebarService::create()
 **/
public static function create(): static
{
    return (new static)->createSidebar()->withoutIndex()->withoutHidden();
}


다음



Hyde가 Markdown 게시물로 무엇을 해야 하는지를 어떻게 알 수 있는지(내일 시작)를 확인하십시오.

좋은 웹페이지 즐겨찾기