>  기사  >  백엔드 개발  >  Laravel5.4의 IoC 컨테이너에 사용자 정의 클래스를 추가하는 방법에 대한 자세한 설명

Laravel5.4의 IoC 컨테이너에 사용자 정의 클래스를 추가하는 방법에 대한 자세한 설명

*文
*文원래의
2018-01-03 15:31:531477검색

Laravel은 사용하기 쉽지만 이해하기 쉽지 않은 프레임워크입니다. 왜 간단하지 않습니까? 소위 '고급' 개념이 많이 포함되어 있기 때문에 그 중 DI(종속성 주입)와 Ioc 컨테이너가 핵심 콘텐츠 중 하나입니다. 이번 글에서는 라라벨 5.4에서 IoC 컨테이너에 커스텀 클래스를 추가하는 방법에 대한 정보를 주로 소개합니다. 필요한 친구들이 참고할 수 있습니다. 그것이 모두에게 도움이 되기를 바랍니다.

IoC 컨테이너

컨테이너는 말 그대로 물건을 담는다는 뜻입니다. 공통 변수, 객체 속성 등은 컨테이너로 간주될 수 있습니다. 컨테이너에 담을 수 있는 내용은 전적으로 컨테이너를 정의하는 방법에 따라 달라집니다. 물론 텍스트나 값을 저장하지 않고 객체, 객체 설명(클래스, 인터페이스)을 저장하거나 객체에 대한 콜백을 제공하는 컨테이너가 있습니다. 이 컨테이너를 통해 우리는 많은 고급 기능을 구현할 수 있으며 그 중 가장 중요한 기능은 다음과 같습니다. 자주 언급되는 것은 "디커플링(decoupling)"과 "의존성 주입(DI)"입니다.

IoC 컨테이너 - Laravel의 핵심

Laravel의 핵심은 IoC 컨테이너로, 문서에 따르면 이름에서 알 수 있듯이 이 컨테이너는 전체 서비스에 필요한 일련의 서비스를 제공합니다. 뼈대. 초보자로서 많은 사람들이 이 개념에 어려움을 겪을 것입니다. 따라서 저는 몇 가지 기본적인 내용부터 시작하여 객체 지향 개발의 종속성 생성 및 해결 방법을 점차적으로 이해함으로써 "종속성 주입"의 베일을 벗겨나갈 계획입니다. 디자인 컨셉.

이 기사에서는 Laravel 5.4의 IoC 컨테이너에 사용자 정의 클래스를 추가하는 것과 관련된 내용을 자세히 소개하고 모든 사람의 참고와 학습을 위해 공유합니다. 아래에서는 많은 말을 하지 않겠습니다. 자세한 소개를 살펴보겠습니다.

IoC 컨테이너가 사용자 정의 클래스를 추가합니다

1. 거래 클래스 app/Trade/Sale.php

<?php
namespace App\Trade;
class Sale
{
public function exchange()
{
 dd(&#39;交易成功啦!&#39;);
}
}

2를 Providers 디렉터리에 생성합니다. TradeServiceProvider

php artisan make:provider TradeServiceProvider

3. , 그리고 TradeServiceProvider.php

/**
 * Register the application services.
 *
 * @return void
 */
public function register()
{
 //
 $this->app->bind(&#39;trade&#39;,function(){
  return new Sale();
 });
}

4의 등록 메소드에 클래스를 바인딩합니다. 그런 다음 config/app.php,

App\Providers\TradeServiceProvider::class,

5 아래의 공급자 배열에 한 줄을 추가합니다. 그런 다음 테스트를 작성하세요

.
Route::get(&#39;/&#39;,function (){
$trade = app(&#39;trade&#39;);
dd($trade->exchange());
}

출력 결과: 트랜잭션이 성공했습니다!

6. 이제 IoC 컨테이너에 자체 클래스를 추가했습니다

관련 권장 사항:

Laravel 5의 성능을 향상시키는 몇 가지 실용적인 방법 팁

Laravel Redis 여러 프로세스가 동시에 큐 문제를 가져오는 중

laravel 쓰기 앱 인터페이스(API)

위 내용은 Laravel5.4의 IoC 컨테이너에 사용자 정의 클래스를 추가하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.