Heim  >  Artikel  >  Backend-Entwicklung  >  Vertieftes Verständnis der objektorientierten PHP-, Muster- und Praxis-erweiterten Funktionen (1)

Vertieftes Verständnis der objektorientierten PHP-, Muster- und Praxis-erweiterten Funktionen (1)

黄舟
黄舟Original
2017-03-20 09:51:421385Durchsuche

Statische Methoden und Eigenschaften

Wir können auf Methoden und Eigenschaften nicht nur über Objekte, sondern auch über Klassen zugreifen. Solche Methoden und Eigenschaften sind „statisch“ (static) und müssen mit dem Schlüsselwort static deklariert werden.

class StaticExample{    
static public $aNum=0;    
static public function sayHello()    
{        
self::$aNum++;        
print "hello (".self::$aNum.")/n";    
}
}
print StaticExample::$aNum;StaticExample::sayHello();

Statische Methoden sind Funktionen mit Klasse als Gültigkeitsbereich. Statische Methoden können in dieser Klasse nicht auf normale Eigenschaften zugreifen, da diese Eigenschaften zu einem Objekt gehören, auf statische Eigenschaften kann jedoch zugegriffen werden. Wenn Sie eine statische Eigenschaft ändern, können alle Instanzen der Klasse auf den neuen Wert zugreifen. Verwenden Sie beim Zugriff auf statische Elemente ::, um Klassennamen und -attribute oder Klassennamen und -methoden zu verbinden. Um auf eine statische Methode oder Eigenschaft der aktuellen Klasse zuzugreifen, können Sie das Schlüsselwort self verwenden. self zeigt auf die aktuelle Klasse, genau wie die Pseudovariable$this auf das aktuelle Objekt zeigt. Per Definition können wir keine statischen Methoden in Objekten aufrufen, daher werden statische Methoden und Eigenschaften auch als Klassenvariablen und -eigenschaften bezeichnet, sodass Pseudovariablen nicht in statischen Methoden verwendet werden können.

Im Folgenden wird eine statische Methode der ShopProduct-Klasse erstellt, um das ShopProduct-Objekt automatisch zu instanziieren. Verwenden Sie sqlite, um die Tabellenprodukte wie folgt zu definieren:

CREATE TABLE products(    
id INTEGER PRIMARY KEY AUTOINCREMENT,    
type TEXT,    
firstname TEXT,    
mainname TEXT,    
title TEXT,    
price float,    
numpages int,    
playlength int,    
discount int )

Die getInstance()-Methode ist unten aufgebaut und ihre Parameter sind die ID des Datenbankdatensatzes und das pdo Objekt. Verwenden Sie sie, um eine Zeile mit Datensätzen aus der Datenbank abzurufen und dann das ShopProduct-Objekt zurückzugeben.

//ShopProduct类, 
private $id = 0;    
//...    
public function setID($id)    
{        
$this->$id;    
}    
//...   
 public static function getInstance($id, PDO $pdo)    
 {        
 $stmt   = $pdo->prepare("select * from products where id=?");        
 $result = $stmt->execute(array($id));        
 $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']);        
  $producerMainName->setDiscount($row['discount']);       
   return $product;    
   }    
   //...

Solange es ein gültiges PDO-Objekt gibt, können wir diese Methode überall im Programm aufrufen:

$dsn = "sqlite://home/bob/projects/products.db";$pdo = new PDO($dsn, null, null);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$obj = ShopProduct::getInstance(1, $pdo);

Eine solche Methode ist wie eine „Fabrik“ und akzeptabel Rohdaten (z. B. eine Datenspalte oder Konfigurationsinformationen) und dann darauf basierende Objekte generieren.

PHP5 kann konstante Attribute in einer Klasse definieren. Konstante Attribute werden mit dem Schlüsselwort const deklariert. Konstanten beginnen nicht wie normale Eigenschaften mit einem Dollarzeichen. Konventionell können Konstanten nur mit Großbuchstaben benannt werden. Konstante Attribute können nur grundlegende Datentypen enthalten, und auf konstante Attribute kann nur über Klassen zugegriffen werden.

class ShopProduct{    
const AVAILABLE    = 0;    
const OUT_OF_STOCK = 1;    
//...}print ShopProduct::AVAILABLE;

Das obige ist der detaillierte Inhalt vonVertieftes Verständnis der objektorientierten PHP-, Muster- und Praxis-erweiterten Funktionen (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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