Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP? In über 120.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
Statische Eigenschaften und Methoden




Statische Eigenschaften und Methoden werden direkt von der Klasse aus angesprochen, und nicht über das Objekt. Damit teilen sich sämtliche Objekte einer Klasse diese Mitglieder, ganz gleich, ob es sich dabei um Eigenschaften oder Methoden handelt. Anstatt ein Objekt der Klasse zu erzeugen, um dann von diesem aus auf die Attribute und Methoden zugreifen zu können, kann immer direkt auf die Eigenschaften und Methoden der Klasse zugegriffen werden. Sollten Sie eine statische Eigenschaft oder Methode erzeugen wollen, verwenden Sie beim Deklarieren das Schlüsselwort static.

Einsatzfälle für statische Variablen und Methoden:
  • Nutzen Sie statische Mitglieder für Aufgaben, die keinen Bezug zu den spezifischen Daten eines Objekts haben, beispielsweise Umrechnungen.
  • Statische Mitglieder ermöglichen die Implementierung von Verweiszählern, wie beispielsweise Eigenschaften, die allen Objekten gleich sind.
  • Statische Mitglieder ermöglichen den direkten Aufruf ohne vorherige Instanziierung. Dies ist sinnvoll, wenn man ohnehin nur ein Objekt benötigt.


<?php

class Klasse {
   static $static_var = 5;
   public $mein_prop = 'Hallo';
  
   public static function ausgabe() {
       return "Ein Text...";
   }

}

// Abfrage der statischen Variablen
echo Klasse::$static_var;

// Abfrage der statischen Funktion
echo Klasse::ausgabe();

$objekt = new Klasse;

// Abfrage der public-Variablen durch das Objekt
echo $objekt->mein_prop;

?>

Beispiel – Anzahl der erzeugten Objekte bzw. Entwickler

<?php
class Entwickler
{
   static $zaehler;

   public function __construct()
   {
        Entwickler::$zaehler++;
   }

   public function GetEntwicklerAnzahl()
   {
        return Entwickler::$zaehler;
   }
}
$entwickler1 = new Entwickler();
$entwickler1 = new Entwickler();
$entwickler1 = new Entwickler();

echo "Es existieren " . $entwickler1->GetEntwicklerAnzahl() . " Entwickler.";
?>

Ausgabe
Es existieren 3 Entwickler.

Um auf einfache Weise eine Klasse zu schaffen, die in der Lage ist, die Anzahl ihrer erzeugten Objekte zu erfassen, ist das Schlüsselwort static Gold wert. Durch Einsatz von static ist die Variable $counter der Klasse Entwickler in den Klassenkontext überführt worden. Diese Variable existiert für sämtliche Objekte lediglich einmal. Sobald ein neues Objekt erzeugt wird, wird der Wert im Konstruktor um 1 erhöht. Um dabei die Variablen $counter verarbeiten zu können, erfolgt der Zugriff über einen Klassenverweis, die Pseudovariable $this kann nicht verwendet werden. Dabei wird der Zugriff durch den statischen Verweisoperator :: und den vollständigen Namen der Variablen, inklusive $-Zeichen, ermöglicht. Dies gilt sowohl für Zugriffe innerhalb der Klasse, wie im vorliegenden Beispiel, als auch für externe.

Hinweis: Statische Variablen und Methoden können darüber hinaus als public, private oder protected gekennzeichnet werden.



Beispiel – statische Methoden

<?php
class Datenbank
{
  // Variablendeklaration
  protected $db;
  
  // Statische Methode
  public static function verbindeDB($host, $user, $password)
  {
    @$db = new mysqli($host, $user, $password);
    
    if (mysqli_connect_errno()) {
        printf("Verbindungsfehler: %s\n", mysqli_connect_error());
        exit();
    }    
    return $db;    
  }
  public function oeffneDB()
  {
    $this->db = $this->verbindeDB("localhost", "root", "");
    return $this->db;
  }
}
// Methodenaufruf ohne Objekterzeugung
// Lediglich bei static-Methoden möglich!
$privatzugang_a = Datenbank::verbindeDB("localhost", "root", "");
echo $privatzugang_a;

// Aus einem Objekt heraus
$zugang = new Datenbank();
$privatzugang_b = $zugang->oeffneDB();
echo $privatzugang_b;
?>



 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner LeaseWeb Germany GmbH
Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


DM Solutions
Microsoft Deutschland GmbH
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2013 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt