PHP-Einfach.de
  • PHP Tutorial
  • MySQL Tutorial
  • Für Fortgeschrittene
  • Webhosting
  • Forum

Statische Methoden und Eigenschaften

10. Februar 2020
  1. Home
  2. »
  3. Für Fortgeschrittene
  4. »
  5. Objektorientierte Programmierung
  6. »
  7. Statische Methoden und Eigenschaften

Mittels dem Schlüsselwort static  könnt ihr bei der Objektorientierten Programmierung (OOP) statische Methoden und Eigenschaften definieren. Diese Methoden und Eigenschaften sind nicht an ein einzelnes Objekt gekoppelt, also beispielsweise nicht an einen einzelnen Nutzer, sondern sie gelten global.

Beispiel

Nachfolgend ein Beispiel, um die Nutzung von statischen Klasseneigenschaften und Klassenmethoden zu verdeutlichen:

<?php
class User {
	public $name;
	
	public static $allUsers = array();
	
	public static function numberOfUsers() {
		return count(self::$allUsers);
	}
	
	public static function createNewUser($name) {
		if(strlen($name) < 10) {
			echo "Nur User mit langen Namen sind erlaubt!<br>";
			return null;
		} else {
			$user = new User();
			$user->name = $name;
		
			self::$allUsers[] = $user;
		
			return $user;
		}
	}
}

User::createNewUser("Max Mustermann");
echo "Anzahl Nutzer: ".User::numberOfUsers()."<br>";
User::createNewUser("Lisa Kurz");
echo "Anzahl Nutzer: ".User::numberOfUsers()."<br>";
?>

Dieses Script besitzt eine nicht-statische Klasseneigenschaft $name sowie die statische Eigenschaft $allUsers. Ebenfalls besitzt die Klasse zwei statische Methoden, $numberOfUsers und $createNewUser.

Möchten wir auf die statische Klasseneigenschaft $allUsers zugreifen, so müssen wir vorab den Klassenname spezifizieren. Beispielsweise wie folgt:

1
echo count(User::$allUser);

Sofern ihr innerhalb der Klasse seid, könnt ihr auf diese statische Eigenschaft auch mittels self::$allUsers zugreifen wie in Zeile 8 und 19 zu sehen.

Mittels der statischen Methode createNewUser($name) können wir neue User-Objekte erzeugen, aber nur wenn der angegeben Name auch ausreichend lang war. Jedes erzeugte User-Objekt wird dann in self::$allUsers abgespeichert.

Um auf diese Methode von außerhalb zuzugreifen, müsst ihr entsprechend User::createNewUser("Name");  ausführen. Identisch User::numberOfUser(); um die Methode auszuführen. Wie schon bei den statischen Klasseneigenschaften könnt ihr self::methodenName()  ausführen, falls ihr euch innerhalb einer Methode befindet.

Wann verwende ich statische Methoden und Eigenschaften?

Vorallem statische Methoden werden häufig verwendet, um gewisse Funktionalitäten zu kapseln. Angenommen ihr baut einen Online-Shop. In einer Klasse User könnt ihr alle Methoden definieren, um eure Datenbanktabelle mit Benutzer zu verwalten. Beispielsweise habt ihr eine statische Methode zum Erzeugen eines neuen Benutzers oder zum finden von existenten Benutzern. Neben der User-Klasse habt ihr dann eine weitere Klasse für eure Produkte, in der ebenfalls entsprechende statische Methoden definiert sind. Euer Programmcode wird, wie im nachfolgenden Beispiel gezeigt, deutlich lesbarer.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class User {
// Entsprechender Code für eure Benutzerverwaltung
}
 
class Product {
// Entsprechender Code für eure Produktverwaltung
}
 
//Erstellung neuer Nutzer
User::createNewUser("Max Muster", "[email protected]", "geheimes passwort");
 
//Finden eines Users
$lisa = User::find("[email protected]");
echo $lisa->email;
 
//Erzeugen eines Produkts
Product::createNewProduct("Spielekonsole", "19,99 Euro");
 
$playstation = Product::find("Playstation");
echo $playstation->price;
?>

 

Autor: Nils Reimers
Zurück: Methoden und Konstruktoren
Weiter: Vererbung

Für Fortgeschrittene

  • Objektorientierte Programmierung
    • Referenzierung in OOP
    • Sichtbarkeit in OOP
    • Methoden und Konstruktoren
    • Statische Methoden und Eigenschaften
    • Vererbung
    • Design Patterns
  • PHP Sicherheit
  • Script-Beispiele
  • Codeschnipsel
  • Stellenmarkt
Mit freundlicher Unterstützung von:
  • Punkt191 Werbeagentur

Hoster – Geringste Ausfallzeit

  1. netcup Ø 0 Min.
  2. webgo Ø 0 Min.
  3. Linevast Ø 3 Min.
  4. All-Inkl.com Ø 3 Min.
  5. checkdomain Ø 4 Min.
  6. dogado Ø 6 Min.
  7. Strato Ø 8 Min.
  8. manitu Ø 10 Min.
  9. 1&1 Ø 10 Min.
  10. DomainFactory Ø 14 Min.
» Mehr erfahren

Impressum | Datenschutz | Auf PHP-Einfach.de werben

© PHP-Einfach.de 2003 - 2025

Cookie-Zustimmung verwalten
Um dir ein optimales Erlebnis zu bieten, verwenden wir Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wenn du diesen Technologien zustimmst, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn du deine Zustimmung nicht erteilst oder zurückziehst, können bestimmte Merkmale und Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Anbieter verwalten Lese mehr über diese Zwecke
Einstellungen ansehen
{title} {title} {title}