>  기사  >  백엔드 개발  >  PHP에서 애플리케이션을 상속하는 방법은 무엇입니까?

PHP에서 애플리케이션을 상속하는 방법은 무엇입니까?

伊谢尔伦
伊谢尔伦원래의
2017-06-30 09:18:561034검색

블로그 시스템을 직접 작성하려고 합니다. 기사를 탐색할 때 기사 삭제, 편집, 업데이트 등 작성자만이 수행할 수 있는 권한이 있는 작업이 있습니다. 이 문제를 해결하기 위해 상속을 생각했습니다. 이제는 로그인하여 사용자 수준을 설정하는 것이 훨씬 간단합니다. $session->get_status()는 값이 을 반환합니다. 0이면 현재 사용자가 블로거가 아니므로 기사를 삭제하거나 편집할 권한이 없음을 나타냅니다. 반환 값이 1이면 해당 블로거 자신임을 나타냅니다. 알았어

, 말도 안되는 소리는 그만둬. 코드부터 시작해 보겠습니다.

class operationLimit 
// operating limit. When no user login or is not this user 
{ 
/* for limit the user operat at post. 
* @author:xiaoai 8.12 2011 
*/ 
static $limitObject; 
public function construct() {} 
// when call the function but does not exist 
public static function getObject() 
{ 
if( !(self::$limitObject instanceof self)) 
self::$limitObject = new self; 
return self::$limitObject ; 
} 
protected function setLimit() {} 
public function getReadA($postName) 
{ 
return &#39;<a herf=\&#39;http://foodstory.me/post/&#39;.$postname. 
&#39;.php\&#39; class=\&#39;readmoreLink\&#39;>readmore</a>&#39;; 
} 
} 
class operationUnlimit 
extends
 operationLimit 
// when is this user 
{ 
public static function getObject() 
{ 
if( !(self::$limitObject instanceof self)) 
self::$limitObject = new self; 
return self::$limitObject ; 
} 
public function getUpdateA($name) 
{ 
return &#39;<a href=\&#39;http://foodstory.me/post/&#39;.$name. 
&#39;.php?do=update\&#39; id=\&#39;&#39;.$name.&#39;\&#39; >update</a>&#39;; 
} 
public function getDelectA($name) 
{ 
return &#39;<a href=\&#39;
javascript
:delectPOST(&#39;.$name 
.&#39;);\&#39; id=\&#39;delectPOST\&#39; >delect</a>&#39;; 
} 
} 
class LimitFactory 
{ 
public static function getLimitObject($userStatus) 
// $userStatus = $session->get_status(); 
{ 
switch ( $userStatus ) 
{ 
case 0: 
return operationLimit::getObject(); 
case 1: 
return operationUnlimit::getObject(); 
default: 
return limit::getObject(); 
} 
} 
}

LimitFactory는 팩토리 클래스이자 static 클래스입니다. 즉, 개체를 생성할 필요가 없습니다. 들어오는 사용자 권한 값을 기반으로 OperationLimit 클래스 또는 OperationUnlimit 클래스의 인스턴스를 반환할지 여부를 결정하는 역할만 합니다.
자세히 보기와 같은 몇 가지 일반적인 작업이 있습니다. OperationUnlimit 클래스는 이 메서드를 상속한 다음 삭제로 돌아가고 링크를 업데이트하는 등 몇 가지 새로운 메서드를 만듭니다.
사용 예

$limitObj = LimitFactory::getLimitObject($session->get_status()); 
echo $limitObj->getReadA(&#39;hi&#39;); 
echo $limitObj->getDelectA(&#39;hah&#39;);

처음에는 OperationUnlimit 클래스에 getObject() 정적 메서드를 작성하지 않았을 때
return OperationUnlimit::getObject(); 이상한 느낌이 들었습니다. 현재 클래스를 나타내기 위해 getObject() 메서드에 self를 사용했고, 슈퍼 클래스의 객체가 반환되어야 한다고 지정하지 않았습니다. 이 정적 메서드가 하위 클래스에서 재정의되는 경우에만 괜찮습니다. 나중에 Google을 확인해보니 컴파일러가 처음에 getObject 메서드를 슈퍼 클래스에 바인딩했기 때문에 하위 클래스의 호출이 여전히 슈퍼 클래스 개체를 반환한다는 것을 막연하게 이해했습니다.

또한
string
에서 너무 많은
이스케이프 문자를 구별하기 어렵다면 echo 4bb8d278a6e21df94340815edb3579a6자세히 보기5db79b134e9f6b82c0b36e0489ee08ed 아아아아
이게 훨씬 더 상쾌합니다.​

위 내용은 PHP에서 애플리케이션을 상속하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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