self
Aus php bar
self ist ein Schlüsselwort in PHP 5, welches vor allem bei statischen Klassen eine Bedeutung hat.
Mit Hilfe des Schlüsselworts self kann auf die statischen Elemente einer nicht instanzierten Klasse zugegriffen werden. Das nachfolgende Beispiel geht zwar weit über die reine Darstellung des Schlüsselworts self hinaus, zeigt aber deutlich den sinnvollen Einsatz für nicht instanzierte Klassen, deren Einsatz sich vor allem für statische oder globale Konstruktionen eignet. Das Beispiel nutzt die Funktionalität von PHP 5, die Extensions gettext und mysql und verwendet die in PHP 5 neuen OOP-Techniken abstrakter Klassen und Ausnahmen.
1 /** 2 * Exceptions für die Datenbankklassen 3 * 4 * Rudimentäre Exception-Klasse. 5 */ 6 class EDatabase extends Exception 7 { 8 /** 9 * Konstruktor 10 * 11 * Der Konstruktor 12 * 13 * @param string $message Eine Textmeldung 14 * @param int $code Ein Fehler-Code 15 */ 16 function __construct($message = '', $code = 0) 17 { 18 parent::__construct($message, $code); 19 } 20 } 21 22 /** 23 * Datenbank-Wrapper 24 */ 25 abstract class Database 26 { 27 /** 28 * Datenbank-Handle 29 * 30 * @var resource 31 * @access protected 32 */ 33 protected static $handle = false; 34 35 /** 36 * Datenbankverbindung herstellen 37 * 38 * @param string $name Der Name der Datenbank 39 * @param string $user Der berechtigte Benutzer 40 * @param string $passwd Das zugehörige Kennwort 41 * @param string $host Der Hostname oder die IP 42 */ 43 abstract public function Connect($name, $user = 'root', $passwd = '', $host = 'localhost'); 44 45 /** 46 * Datenbankverbindung lösen 47 */ 48 public function DisConnect() 49 { 50 self::$handle = false; 51 } 52 } 53 54 /** 55 * MySQL-Wrapper 56 * 57 * Die Beispielklasse könnte die Zugriffe auf die Datenbank übernehmen. 58 */ 59 class MySQL extends Database 60 { 61 /** 62 * Datenbankverbindung herstellen 63 * 64 * @param string $name Der Name der Datenbank 65 * @param string $user Der berechtigte Benutzer 66 * @param string $passwd Das zugehörige Kennwort 67 * @param string $host Der Hostname oder die IP 68 */ 69 public function Connect($name, $user = 'root', $passwd = '', $host = 'localhost') 70 { 71 if (self::$handle !== false) 72 self::DisConnect(); 73 if (false === (self::$handle = mysql_connect($host, $user, $passwd))) 74 throw new EDatabase(sprintf(_("Cannot connect to %s!"), $host)); 75 if (false === mysql_select_db($name, self::$handle)) 76 throw new EDatabase(sprintf(_("Cannot select database '%s'"), $name)); 77 return true; 78 } 79 80 /** 81 * Datenbankverbindung lösen 82 */ 83 public function DisConnect() 84 { 85 if (self::$handle === false) 86 throw new EDatabase(sprintf(_("No connection established!"))); 87 mysql_close(); 88 parent::DisConnect(); 89 return true; 90 } 91 92 // Weitere Methoden in dieser Klasse 93 // 94 } 95 96 // Datenbankverbindung herstellen 97 // 98 try { 99 MySQL::Connect('foo', 'me', 'secret', 'localhost'); 100 } 101 catch (EDatabase $e) 102 { 103 die(_("Cannot connect to the database!")); 104 } 105 catch (Exception $e) 106 { 107 die($e); 108 }
Kategorien: OOP | Schlüsselwort | PHP 5

