PHP: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 115: | Zeile 115: | ||
= Wichtige Funktionen = | = Wichtige Funktionen = | ||
* $mixed print_r($var, $doReturnString = false) gibt menschenlesbare Form der Variablen aus oder liefert diese als String | * $mixed print_r($var, $doReturnString = false) gibt menschenlesbare Form der Variablen aus oder liefert diese als String | ||
= Reguläre Ausdrücke = | |||
<pre>if (preg_match('/id=(\d+)/', "id=222 name=Hans", $match)){ | |||
$id = $match[1]; | |||
$assignment = $match[0]; | |||
assert($id == 222); | |||
assert ($assignment === "id=222" | |||
} | |||
</pre> | |||
Version vom 18. September 2018, 08:50 Uhr
Links
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)
Strings
- 'string' kennt nur 2 ESC-Zeichen: \' und \\: 'Geht\'s wieder' 'c:\\windows'
- "string" kennt alle C-ESC-Zeichen ('\t'...) und Variablenexpansion: "$path/$node"
Stringformatierung
sprintf("%3.3f", $number);
Klassen
- Konstruktor der Basisklasse aufrufen:
class Demo extends BaseDemo {
function __construct($name){
parent::__construct ( $name );
}
}
- abstrakte Klassen:
abstract class AbstractClass {
abstract protected function getValue();
}
Datum/Zeit
$date = date_create_from_format('d.m.Y H:I', '1.2.2018 17:14');
$date2 = new DateTime("2012-07-08 11:14:15.638276");
$date3 = new \DateTime();
$date3->setDate($year, $month, $day);
$date3->setTime($hour, $minute, $second);
$string = $date->format('d.m.Y H:i.s');
$diff = $date2 - $date1;
$date->add($diff);
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 oneTwoThree() {
for ($i = 1; $i <= 3; $i++) {
yield $i;
}
}
foreach (oneTwoThree() as $val) { print $val; }
Metaprogrammierung
- string gettype($mixed), is_integer(), is_object(), is_bool(), is_array() isset() ...
- if ($var instanceof ExampleClass) {}
Wichtige Funktionen
- $mixed print_r($var, $doReturnString = false) gibt menschenlesbare Form der Variablen aus oder liefert diese als String
Reguläre Ausdrücke
if (preg_match('/id=(\d+)/', "id=222 name=Hans", $match)){
$id = $match[1];
$assignment = $match[0];
assert($id == 222);
assert ($assignment === "id=222"
}