Laravel 확장 방법
등록 서비스
컨테이너에 서비스 등록
//
$container->bind('log', function(){
return new Log();
});
//
$container->singleton('log', function(){
return new Log();
});
확장 바인딩
기존 서비스 확장
$container->extend('log', function(Log $log){
return new RedisLog($log);
});
Manager
Manager는 사실상 하나의 공장으로 서비스에 구동 관리 기능을 제공한다.
Laravel의 많은 구성 요소는 Manager를 사용합니다. 예를 들어
Auth
, Cache
, Log
, Notification
, Queue
등등 모든 구성 요소에는 Redis
관리자가 있습니다.우리는 이 관리자를 통해 서비스를 확장할 수 있다.예를 들어, 만약에 우리가
xxxManager
서비스 지원Cache
을 구동시키려고 한다면, 우리는 RedisCache
서비스에 Cache
구동을 확장할 수 있다.Cache::extend('redis', function(){
return new RedisCache();
});
이때
redis
서비스는 Cache
이 드라이브를 지원한다.이제 redis
을 찾아 config/cache.php
옵션의 값을 default
로 변경합니다.이때 우리가 redis
서비스를 다시 사용할 때, Cache
드라이브를 사용하여 캐시를 사용합니다.Macro 및 Mixin
어떤 상황에서 우리는 하나의 유형 동태에 몇 가지 방법을 추가해야 한다.
RedisCache
또는 Macro
이 문제를 잘 해결했다.Laravel 밑바닥에는
Mixin
라고 불리는 Macroable
가 있는데 Trait
클래스를 도입하면 Macroable
와Macro
방식의 확장을 지원한다. 예를 들어 Mixin
, Request
, Response
, SessionGuard
, View
, Translator
등이다.Macroable
는 두 가지 방법을 제공했다. macro
과mixin
, macro
방법은 클래스에 하나의 방법을 추가할 수 있고, mixin
클래스에 하나의 방법을 혼합하는 것이다.예를 들어 우리는
Macroable
류에 두 가지 방법을 추가해야 한다.Request
메서드를 사용하는 경우:Request::macro('getContentType', function(){
// $this Request
return $this->headers->get('content-type');
});
Request::macro('hasField', function(){
return !is_null($this->get($name));
});
$contentType = Request::getContentstType();
$hasPassword = Request::hasField('password');
macro
메서드를 사용하는 경우:class MixinRequest{
public function getContentType(){
//
return function(){
return $this->headers->get('content-type');
};
}
public function hasField(){
return function($name){
return !is_null($this->get($name));
};
}
}
Request::mixin(new MixinRequest());
$contentType = Request::getContentType();
$hasPassword = Request::hasField('password');
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JSP 개발 입문(1)-기 계 를 설치 하여 JSP 를 사용 하 세 요.텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.