In diesem Artikel werden hauptsächlich die erweiterten Funktionen, Muster und Praktiken von PHP-Objekten vorgestellt und die Konzepte und Einfachheit statischer Eigenschaften und Methoden, abstrakter Klassen, Schnittstellen, Interceptoren, geklonter Objekte usw. in der objektorientierten PHP-Programmierung analysiert In Form von Beispielen können sich Freunde, die sie benötigen, auf
wie folgt beziehen:
Zu den erweiterten Funktionen
gehören:
1. Statische Methode und Attribute (Zugriff auf Daten und Funktionalität über Klassen statt über Objekte)
2. Abstrakte Klassen und Schnittstellen (Design, Implementierungstrennung)
3. Fehlerbehandlung (Ausnahmen)
4. Endgültige Klassen und Methoden (Einschränkungen Vererbung)
5. Interceptor (automatische Delegation)
6. Destruktormethode (Bereinigung vor Objektzerstörung)
7. Objekt klonen (eine Kopie des Objekts erstellen)
8 . Analysieren Sie das Objekt in eine Zeichenfolge
PS, lernen Sie, den Code aus der Perspektive des Gedächtnisses zu betrachten. Stellen Sie sich die mikroskopische Welt der Computer vor.
Kleines Beispiel einer statischen Methode
<?php class StaticExample{ static public $aNum = 10; static public function sayHello(){ print "hello"; } } print StaticExample::$aNum."<br/>"; StaticExample::sayHello();
Tipps:
1. Statische Methoden können nicht sein Auf normale Eigenschaften in einer Klasse hat zugegriffen, da diese Eigenschaften zu einem Objekt gehören, auf statische Eigenschaften kann jedoch zugegriffen werden.
2. Wir können keine statischen Methoden in Objekten aufrufen, daher können wir die Pseudovariable $this nicht in statischen Methoden verwenden.
Großes Beispiel einer statischen Methode
<?php class ShopProduct{ private $title; private $producerMainName; private $producerFirstName; protected $price; private $discount = 0; private $id = 0; function __construct($title,$firstName,$mainName,$price){ $this->title = $title; $this->producerFirstName = $firstName; $this->producerMainName = $mainName; $this->price = $price; } public function setID($id){ $this->id = $id; } public static function getInstance($id,PDO $pdo){ $query = "select * from products where id= '$id'"; $stmt = $pdo->query($query); $row = $stmt->fetch(); if(empty($row)){ return null; } if($row['type'] == "book"){ $product = new BookProduct($row['title'], $row['firstname'], $row['mainname'], $row['price'], $row['numpages'] ); }else if($row['type'] == "cd"){ $product = new CdProduct($row['title'], $row['firstname'], $row['mainname'], $row['price'], $row['playLength'] ); }else{ $product = new ShopProduct($row['title'], $row['firstname'], $row['mainname'], $row['price'] ); } $product->setId($row['id']); $product->setDiscount($row['discount']); return $product; } public function getProducerFirstName(){ return $this->producerFirstName; } public function getProducerMainName(){ return $this->producerMainName; } public function setDiscount($num){ $this->discount = $num; } public function getDiscount(){ return $this->discount; } public function getTitle(){ return $this->title; } public function getPrice(){ return ($this->price - $this->discount); } function getProducer(){ return $this->producerFirstName." ".$this->producerMainName; } function getSummaryLine(){ $base = "$this->title({$this->producerMainName},"; $base .= "{$this->producerFirstName})"; return $base; } } class CdProduct extends ShopProduct{ private $playLength; function __construct($title,$firstName,$mainName,$price,$playLength){ parent::__construct($title,$firstName,$mainName,$price);//继承父类的构造函数 $this->playLength = $playLength; } function getPlayLength(){ return $this->playLength; } function getSummaryLine(){ $base = parent::getSummaryLine(); $base .= ":playing time {$this->playLength}"; return $base; } } class BookProduct extends ShopProduct{ private $numPages = 0; function __construct($title,$firstName,$mainName,$price,$numPages){ parent::__construct($title,$firstName,$mainName,$price); $this->numPages = $numPages; } function getnumPages(){ return $this->numPages; } function getSummaryLine(){ $base = parent::getSummaryLine(); $base .= ":page count {$this->numPages}"; return $base; } } $dsn = "sqlite:C:/Users/Administrator/Desktop/shop.db"; $pdo = new PDO($dsn,null,null); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $obj = ShopProduct::getInstance(1,$pdo); echo $obj->getSummaryLine();
Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, das wird so sein für die Lernhilfe aller nützlich sein.
Verwandte Empfehlungen:
php-objektorientierte Programmierung, PHP-objektorientierte Programmierung
PHP-objektorientiertes Klonobjekt
Serialisierung von Objekten in PHP, PHP-Objektserialisierung
Das obige ist der detaillierte Inhalt vonFallanalyse erweiterter Funktionen von PHP-Objekten, -Mustern und -Praktiken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!