Laravel 5.5 핵심 구조 에 대한 깊 은 이해

5465 단어 laravel핵심 구조
머리말
본 고 는 주로 Laravel 5.5 핵심 구조 에 관 한 내용 을 소개 하고 참고 학습 을 제공 합 니 다.다음은 더 이상 할 말 이 없 으 니 상세 한 소 개 를 해 보 겠 습 니 다.
1.주입 의존
방법 은 구성 요소 이름 을 입력 하고 프레임 워 크 는 자동 으로 예화 되 며 방법 내 에서 직접 사용 할 수 있 습 니 다.
예 를 들 어 가장 자주 사용 하 는 requert 대상

2.서비스 용기
사실 Laravel 의 핵심 은 바로 IoC 용기 이다.Laravel 의 핵심 자 체 는 매우 가 볍 고 신기 하고 실질 적 인 응용 기능 이 없다.많은 사람들 이 사용 하 는 각종 기능 모듈,예 를 들 어 Route(경로),Eloquent ORM(데이터베이스 ORM 구성 요소),Request(요청)와 Response(응답)등 은 실제 적 으로 핵심 과 무관 한 클래스 모듈 에서 제공 되 는데 이런 유형 은 등록 에서 정례 화 까지 최종 적 으로 사용 되 고 사실은 모두 Laravel 의 서비스 용기 가 책임 집 니 다.
서비스 제공 자 는 주로 두 부분 으로 나 뉘 는데 register(등록)와 boot(안내,초기 화)이다.
3.서비스 제공 자
용기 에서 추출 할 수 있 는 종 류 는 이 용기 에 먼저 등록 해 야 합 니 다.Laravel 이 이 용 기 를 서비스 용기 라 고 부 르 는 이상 우 리 는 특정한 서비스 가 필요 하 다.먼저 이 서 비 스 를 용기 에 등록 하고 연결 해 야 한다.그러면 서 비 스 를 제공 하고 용기 에 서 비 스 를 연결 하 는 것 이 바로 서비스 제공 자(Service Provider)이다.
4、IOC 용기 에 자신의 클래스 추가
4.1,새 validate 클래스

4.2,새 validateProvider

4.3,vaidate 클래스 를 Provider 에 연결 합 니 다.

<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ValidateProvider extends ServiceProvider
{
 /**
 * Bootstrap the application services.
 *
 * @return void
 */
 public function boot()
 {
 //
 }

 /**
 * Register the application services.
 *
 * @return void
 */
 public function register()
 {
 $this->app->bind('valicate',function(){
  return new Validate();
 });
 }
}
4.4,IOC 용기 에 Provider 추가

4.5、사용

4.6、성공!

5.외관(facade)
facade 는 통 일 된 인 터 페 이 스 를 제공 하 는 데 사 용 됩 니 다.예 를 들 어 어떤 cache,redis,memcache 를 사용 하 든 클 라 이언 트 는 cache:get()방식 으로 value 를 얻 을 수 있 습 니 다.구체 적 으로 redis 또는 memcahe 를 사 용 했 는 지 는 sevice provider 에서 어느 것 을 연결 하 는 지 볼 수 있 습 니 다.cache::get()의 실현 방식 은 Facade 방법 getFacade Accessor 를 계승 하여 용기 에 연 결 된 key 값 을 되 돌려 주 는 것 입 니 다.예 를 들 어 cache,그리고 Facade 류 는 phop 마술 변 수 를 사용 합 니 다callstatic(),callstatic 의 논리 에 서 는 container 에서 cache 가 연 결 된 서 비 스 를 분석 합 니 다.바로 앞에서 언급 한 service provider 가 누 구 를 연 결 했 는 지 입 니 다.
5.1,예 를 들 어 config/app.php 의 mail

5.2 이 종 류 는 하나의 mailer 만 되 돌려 줍 니 다.

5.3、send 방법 을 사용 하면 존재 하지 않 으 면 callstatic 의 마술 방법 에 들 어 갑 니 다.

5.4.이 방법 은 mailer 의 인 스 턴 스,즉 app(mailer)를 얻 을 수 있 습 니 다.


5.5.이 인 스 턴 스 는 mailer 류 의 send 방법 을 호출 할 수 있 습 니 다.

6.계약
Laravel 의 계약 은 프레임 워 크 가 제공 하 는 핵심 서 비 스 를 정의 하 는 인터페이스 입 니 다.예 를 들 어 Illuminate\\Contracts\\Queue\\Queue 계약 은 대기 열 작업 에 필요 한 방법 을 정의 하고 Illuminate\\Contracts\Mail\\Mailer 계약 은 이메일 을 보 내 는 데 필요 한 방법 을 정의 합 니 다.틀 은 모든 계약 에 상응하는 실현 을 제공 했다.
장점 은 프로그램의 낮은 결합 과 단순 성 을 실현 한 것 이다.
낮은 결합
우선,고결 합 캐 시가 실 현 된 코드 를 살 펴 보 자.다음 과 같다.

<?php
namespace App\Orders;
class Repository
{
 /**
 *     。
 */
 protected $cache;
 /**
 *         。
 *
 * @param \SomePackage\Cache\Memcached $cache
 * @return void
 */
 public function __construct(\SomePackage\Cache\Memcached $cache)
 {
 $this->cache = $cache;
 }

 /**
 *    Id     
 *
 * @param int $id
 * @return Order
 */
 public function find($id)
 {
 if ($this->cache->has($id)) {
  //
 }
 }
}
이 클래스 에서 프로그램 은 주어진 캐 시 와 높 은 결합 을 실현 합 니 다.확장 패키지 의 특정 캐 시 클래스 에 의존 하기 때 문 입 니 다.이 확장 패키지 의 API 가 변경 되면 코드 가 바 뀌 어야 합 니 다.
마찬가지 로 바 텀 캐 시 기술(Memcached)을 다른 캐 시 기술(Redis)로 바 꾸 려 면 이 reposcory 류 를 다시 수정 해 야 합 니 다.리 포 지 토리 클래스 는 누가 이런 데 이 터 를 제 공 했 거나 어떻게 제 공 했 는 지 에 대해 너무 많이 알 아 서 는 안 된다.
위의 방법 보다 확장 패키지 와 무관 한 간단 한 인 터 페 이 스 를 사용 하여 코드 를 개선 할 수 있 습 니 다.

<?php
namespace App\Orders;
use Illuminate\Contracts\Cache\Repository as Cache;
class Repository
{
 /**
 *     。
 */
 protected $cache;

 /**
 *         。
 *
 * @param Cache $cache
 * @return void
 */
 public function __construct(Cache $cache)
 {
 $this->cache = $cache;
 }
}
현재 변 경 된 코드 는 확장 패키지 나 Laravel 과 결합 되 지 않 았 습 니 다.계약 확장 패 키 지 는 어떠한 실현 과 의존 항목 도 포함 하지 않 습 니 다.주어진 계약 의 대체 실현 을 쉽게 작성 하여 캐 시 소모 에 관 한 코드 를 수정 하지 않 으 면 캐 시 를 교체 할 수 있 습 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기