Wie erbe ich eine Anwendung in PHP?

伊谢尔伦
Freigeben: 2023-03-12 06:40:02
Original
1087 Leute haben es durchsucht

Ich versuche, selbst ein Blog-System zu schreiben. Beim Durchsuchen von Artikeln gibt es einige Vorgänge, zu deren Ausführung nur der Autor berechtigt ist, z. B. das Löschen, Bearbeiten und Aktualisieren von Artikeln. Ich habe über Vererbung nachgedacht, um das Problem zu lösen, aber jetzt ist es viel einfacher, die Benutzerebene festzulegen, $Sitzung-> ;get_status() Wenn der zurückgegebene -Wert 0 ist, bedeutet dies, dass der aktuelle Benutzer nicht der Blogger ist und daher nicht über die Berechtigung zum Löschen oder Bearbeiten von Artikeln verfügt. Wenn der Rückgabewert 1 ist, bedeutet dies, dass es sich um den Blogger selbst handelt. Okay

, hör auf, Unsinn zu reden. Beginnen wir mit dem Code

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(); 
} 
} 
}
Nach dem Login kopieren

LimitFactory ist eine Factory-Klasse und auch eine statische-Klasse. Das heißt, es ist nicht erforderlich, ein Objekt zu erstellen. Seine Aufgabe besteht lediglich darin, anhand des eingehenden Benutzerberechtigungswerts zu bestimmen, ob eine Instanz der OperationLimit-Klasse oder der OperationUnlimit-Klasse zurückgegeben werden soll.
Es gibt einige allgemeine Vorgänge, z. B. das Lesen weiterer Methoden. Die OperationUnlimit-Klasse erbt diese Methode und erstellt dann einige neue Methoden, z. B. das Zurückkehren zum Löschen und Aktualisieren von Links.
Anwendungsbeispiel

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

Lassen Sie uns über etwas sprechen, das nichts damit zu tun hat. Als ich zunächst nicht die statische Methode getObject() in der Klasse operationUnlimit schrieb, stellte ich fest, dass
operationUnlimit zurückgegeben wurde: getObject();
Was zurückgegeben wird, ist ein Objekt der Superklasse, was sich seltsam anfühlt. Ich habe self in der Methode getObject(); verwendet und nicht angegeben, dass das Objekt der Superklasse sein muss zurückgegeben werden. Es ist nur in Ordnung, wenn diese statische Methode in der Unterklasse
überschrieben wird. Später habe ich bei Google nachgesehen und vage verstanden, dass der Compiler die getObject-Methode zu Beginn an die Superklasse gebunden hat, sodass Aufrufe von
in einer Unterklasse immer noch das Superklassenobjekt zurückgeben.

Wenn Sie außerdem Schwierigkeiten haben, so viele Escape-Zeichen in der Zeichenfolge zu unterscheiden, verwenden Sie
echo <<weiterlesen
Eeeeee; Das ist viel erfrischender. 

Das obige ist der detaillierte Inhalt vonWie erbe ich eine Anwendung in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage