|
Vordefinierte Interfaces und KlassenInhaltsverzeichnis
Siehe auch SPL-Interfaces und reservierte Klassen. Das Traversable-InterfaceEinführungInterface, um herauszufinden, ob eine Klasse mittels foreach traversierbar ist. Das abstrakte Interface kann nicht direkt implementiert werden. Stattdessen müssen Sie es entweder mittels IteratorAggregate oder Iterator implementieren.
Interface-ÜbersichtTraversable
class Traversable
{
}Dieses Interface besitzt keine Methoden, sein einziger Sinn ist es, als Basisinterface für alle traversierbaren Klassen zu dienen. Das Iterator-InterfaceEinführungInterface für externe Iteratoren oder Objekte, die selbstiterierend sind. Interface-ÜbersichtIterator
class Iterator
extends
Traversable
{
/* Methoden */
abstract public mixed current
( void
)
abstract public scalar key
( void
)
abstract public void next
( void
)
abstract public void rewind
( void
)
abstract public boolean valid
( void
)
}Vordefinierte IteratorenPHP bietet bereits eine Anzahl von Iteratoren für viele alltägliche Aufgaben an. SPL iterators enthält eine entsprechende Liste. BeispieleBeispiel #1 Basisnutzung Dieses Beispiel demonstriert, in welcher Reihenfolge Methoden aufgerufen werden, wenn Sie foreach auf einem Iterator anwenden.
<?phpDas oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie: string(18) "meinIterator::rewind" string(17) "meinIterator::valid" string(19) "meinIterator::current" string(15) "meinIterator::key" int(0) string(12) "erstesElement" string(16) "meinIterator::next" string(17) "meinIterator::valid" string(19) "meinIterator::current" string(15) "meinIterator::key" int(1) string(13) "zweitesElement" string(16) "meinIterator::next" string(17) "meinIterator::valid" string(19) "meinIterator::current" string(15) "meinIterator::key" int(2) string(11) "letztesElement" string(16) "meinIterator::next" string(17) "meinIterator::valid" Das IteratorAggregate-InterfaceEinführungInterface, um einen externen Iterator zu erzeugen. Interface-ÜbersichtIteratorAggregate
class IteratorAggregate
extends
Traversable
{
/* Methoden */
abstract public Traversable getIterator
( void
)
}Beispiel #1 Basisnutzung
<?phpDas oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie: string(9) "property1" string(19) "Öffentliche Eigenschaft eins" string(9) "property2" string(19) "Öffentliche Eigenschaft zwei" string(9) "property3" string(21) "Öffentliche Eigenschaft drei" string(9) "property4" string(13) "letzte Eigenschaft" Das ArrayAccess-InterfaceEinführungInterface, um Objekte als Arrays ansprechen zu können Interface-ÜbersichtArrayAccess
class ArrayAccess
{
/* Methoden */
abstract public boolean offsetExists
( mixed
$offset
)
abstract public mixed offsetGet
( mixed
$offset
)
abstract public void offsetSet
( mixed
$offset
, mixed $value
)
abstract public void offsetUnset
( mixed
}$offset
)Beispiel #1 Basisnutzung
<?phpDas oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
bool(true)
int(2)
bool(false)
string(7) "Ein Wert"
obj Object
(
[container:obj:private] => Array
(
[eins] => 1
[drei] => 3
[zwei] => Ein Wert
[0] => Anhängen 1
[1] => Anhängen 2
[2] => Anhängen 3
)
)
Das Serializable-InterfaceEinführungInterface für benutzerdefiniertes Serialisieren. Klassen, die dieses Interface implementieren, unterstützen __sleep und __wakeup nicht mehr. Die Methode serialize wird immer aufgerufen, wenn eine Instanz serialisiert werden muss. Dabei wird weder __destruct() aufgerufen noch irgend ein anderer Seiteneffekt erzeugt, es sei denn, ein solcher wird in der Methode serialize explizit erzeugt. Wenn die Daten deserialisiert werden, ist die Klasse bekannt und die passende unserialize()-Methode wird anstelle des Konstruktors __construct() aufgerufen. Falls notwendig, kann der Standardkonstruktor innerhalb von unserialize() aufgerufen werden. Interface-ÜbersichtSerializable
class Serializable
{
/* Methoden */
abstract public string serialize
( void
)
abstract public void unserialize
( string
}$serialized
)Beispiel #1 Basisnutzung
<?phpDas oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
string(42) "C:3:"obj":27:{s:19:"Meine private-Daten";}"
string(15) "Meine private-Daten"
The Closure classEinführungClass used to represent anonymous functions. Anonymous functions, implemented in PHP 5.3, yield objects of this type. This fact used to be considered an implementation detail, but it can now be relied upon. Starting with PHP 5.4, this class has methods that allow further control of the anonymous function after it has been created. Besides the methods listed here, this class also has an __invoke method. This is for consistency with other classes that implement calling magic, as this method is not used for calling the function. KlassenbeschreibungClosure
class Closure
{
/* Methoden */
private __construct
( void
)
public static Closure bind
( Closure
$closure
, object $newthis
[, mixed $newscope
= "static"
] )
public Closure bindTo
( object
$newthis
[, mixed $newscope
= "static"
] )
public mixed call
( object
$newthis
[, mixed $...
] )
public static Closure fromCallable
( callable
}$callable
)Die Generator KlasseEinführungGenerator Objekte werden von Generatoren zurückgeliefert. Achtung
Generator Objekte können nicht durch new instanziiert werden. KlassenbeschreibungGenerator
class Generator
implements
Iterator
{
/* Methoden */
public mixed current
( void
)
public mixed getReturn
( void
)
public mixed key
( void
)
public void next
( void
)
public void rewind
( void
)
public mixed send
( mixed
$value
)
public mixed throw
( Throwable
$exception
)
public bool valid
( void
)
public void __wakeup
( void
)
} |