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에 따라 라이센스가 부여됩니다.