PHP: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „Kategorie:Sprache = Besonderheiten = * Assignment von Objekten speichert Kopie. Aber möglich Referenzzuweisung: $obj2 = &$obj; = Syntax = * switch() erl…“) |
|||
Zeile 4: | Zeile 4: | ||
* Assignment von Objekten speichert Kopie. Aber möglich Referenzzuweisung: $obj2 = &$obj; | * Assignment von Objekten speichert Kopie. Aber möglich Referenzzuweisung: $obj2 = &$obj; | ||
= | = Anweisungen = | ||
* switch() erlaubt Strings als Marken. | * switch() erlaubt Strings als Marken. | ||
* continue im switch ist wie break. | * continue im switch ist wie break. | ||
* continue <level>: springt aus verschachtelten Statements (Schleifen + Switch) | * continue <level>: springt aus verschachtelten Statements (Schleifen + Switch) | ||
= Typen = | |||
= Klassen = | * Konvertierungen: string strval($expr) und integer intval($expr) | ||
== Arrays == | |||
* sequentiell oder assoziativ: | |||
* $a = array(1, 2); $b = array("a" => 1, "b" => 55); | |||
* ab 5.4: $a = [1, 2]; $b = ["a" => 1, "b" => 55]; | |||
* Test: array_key_exists($array, $key) oder isset($arr[$key]) | |||
* array_push($array, $value) hängt an... | |||
* count($arr) zählt Elemente (flach) oder rekursiv: count($arr, COUNT_RECURSIVE) | |||
== Klassen == | |||
* Konstruktor der Basisklasse aufrufen: | * Konstruktor der Basisklasse aufrufen: | ||
<pre>class Demo extends BaseDemo { | <pre>class Demo extends BaseDemo { | ||
Zeile 18: | Zeile 28: | ||
} | } | ||
</pre> | </pre> | ||
* abstrakte Klassen: | |||
<pre> | |||
abstract class AbstractClass { | |||
abstract protected function getValue(); | |||
} | |||
</pre> | |||
== Traits == | == Traits == | ||
Traits sind "Copy-Paste"-Klassenkonstruktionen, die anstatt von Mehrfachvererbung eingesetzt werden können. | Traits sind "Copy-Paste"-Klassenkonstruktionen, die anstatt von Mehrfachvererbung eingesetzt werden können. | ||
Zeile 27: | Zeile 42: | ||
Definition: | Definition: | ||
trait ExampleTrait { | |||
function doIt(){} | |||
} | |||
Benutzung: | Benutzung: | ||
<pre>use ExampleTrait; | <pre>class Example { | ||
use ExampleTrait; | |||
} | |||
</pre> | |||
Konfliktauflösung und Methoden-Umbenennung: | |||
<pre> | |||
trait A { | |||
public function smallTalk() { echo 'a'; } | |||
public function bigTalk() { echo 'A'; } | |||
} | |||
trait B { | |||
public function smallTalk() { echo 'b'; } | |||
public function bigTalk() { echo 'B'; } | |||
} | |||
class Talker { | |||
use A, B { | |||
B::smallTalk insteadof A; | |||
A::bigTalk insteadof B; | |||
B::bigTalk as talk; | |||
} | |||
} | |||
</pre> | </pre> | ||
== Generatoren == | == Generatoren == | ||
Wie in Python: Einfache Umsetzung von iterierbaren Objekten. | Wie in Python: Einfache Umsetzung von iterierbaren Objekten. | ||
<pre>function gen_one_to_three() { | |||
for ($i = 1; $i <= 3; $i++) { | |||
yield $i; | |||
} | |||
} | |||
</pre> | |||
= Metaprogrammierung = | |||
* string gettype($mixed), is_integer(), is_object(), is_bool(), is_array() isset() | |||
= | = Wichtige Funktionen = | ||
* | * $mixed print_r($var, $doReturnString = false) gibt menschenlesbare Form der Variablen aus oder liefert diese als String | ||
* |
Version vom 8. Mai 2017, 08:14 Uhr
Besonderheiten
- Assignment von Objekten speichert Kopie. Aber möglich Referenzzuweisung: $obj2 = &$obj;
Anweisungen
- switch() erlaubt Strings als Marken.
- continue im switch ist wie break.
- continue <level>: springt aus verschachtelten Statements (Schleifen + Switch)
Typen
- Konvertierungen: string strval($expr) und integer intval($expr)
Arrays
- sequentiell oder assoziativ:
- $a = array(1, 2); $b = array("a" => 1, "b" => 55);
- ab 5.4: $a = [1, 2]; $b = ["a" => 1, "b" => 55];
- Test: array_key_exists($array, $key) oder isset($arr[$key])
- array_push($array, $value) hängt an...
- count($arr) zählt Elemente (flach) oder rekursiv: count($arr, COUNT_RECURSIVE)
Klassen
- Konstruktor der Basisklasse aufrufen:
class Demo extends BaseDemo { function __construct($name){ parent::__construct ( $name ); } }
- abstrakte Klassen:
abstract class AbstractClass { abstract protected function getValue(); }
Traits
Traits sind "Copy-Paste"-Klassenkonstruktionen, die anstatt von Mehrfachvererbung eingesetzt werden können.
- Keine Instantiierungen
- Statische Elemente sind in jeder Anwendungsklasse extra instantiiert.
- Ausblenden/Umbenennen von Methoden möglich.
Definition: trait ExampleTrait {
function doIt(){}
} Benutzung:
class Example { use ExampleTrait; }
Konfliktauflösung und Methoden-Umbenennung:
trait A { public function smallTalk() { echo 'a'; } public function bigTalk() { echo 'A'; } } trait B { public function smallTalk() { echo 'b'; } public function bigTalk() { echo 'B'; } } class Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; B::bigTalk as talk; } }
Generatoren
Wie in Python: Einfache Umsetzung von iterierbaren Objekten.
function gen_one_to_three() { for ($i = 1; $i <= 3; $i++) { yield $i; } }
Metaprogrammierung
- string gettype($mixed), is_integer(), is_object(), is_bool(), is_array() isset()
Wichtige Funktionen
- $mixed print_r($var, $doReturnString = false) gibt menschenlesbare Form der Variablen aus oder liefert diese als String