>  기사  >  백엔드 개발  >  PHP 디자인 모드 Decorator(장식 모드)

PHP 디자인 모드 Decorator(장식 모드)

高洛峰
高洛峰원래의
2016-11-30 09:36:351170검색

코드 복사 코드는 다음과 같습니다:
/**
* 데코레이션 모드
*
* 객체에 몇 가지 추가 책임을 동적으로 추가합니다. 이는 확장된 기능 측면에서 하위 클래스를 생성하는 것보다 더 유연합니다.
*/
header("Content-type:text/html;charset=utf-8") ;
추상 클래스 MessageBoardHandler
{
공용 함수 __construct(){}
추상 공용 함수 필터($msg)
}

class MessageBoard는 MessageBoardHandler를 확장합니다. {
공용 함수 필터($msg)
{
return "게시판 내용 처리|".$msg;
}
}

$obj; new MessageBoard() ;
echo $obj->filter("데코레이션 모드를 꼭 배워보세요
")

// --- 다음은 데코레이션 모드의 사용입니다. ----
클래스 MessageBoardDecorator는 MessageBoardHandler를 확장합니다.
{
private $_handler = null

공용 함수 __construct($handler)
{
parent::__construct() ;
$this- >_handler = $handler
}

공용 함수 필터($msg)
{
return $this->_handler->filter( $msg);
}
}

// 필터 html
class HtmlFilter 확장 MessageBoardDecorator
{
공용 함수 __construct($handler)
{
parent::__construct($handler );
}

공개 함수 필터($msg)
{
return "HTML 태그 필터링|".parent::filter($msg) ;; // HTML 필터링 현재 태그 처리는 처리 없이 텍스트만 추가하는 것입니다.
}
}

// 민감한 단어 필터링
class SensitiveFilter는 MessageBoardDecorator를 확장합니다
{
공용 함수 __construct($ handler)
{
parent::__construct($handler)
}

공용 함수 필터($msg)
{
return "민감한 단어 필터링|" .parent::filter($msg); // 이때는 처리하지 않고 텍스트만 추가합니다.
}
}

$obj = new HtmlFilter(new SensitiveFilter( new MessageBoard()));
echo $obj->filter("장식 모드를 꼭 배워보세요!
");

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