# Zend_Ldap_Node

`Zend_Ldap_Node` enthält die magischen Zugriffsmethoden `__set()`, `__get()`, `__unset()` und `__isset()` um auf die Attribute mit Ihrem Namen zugreifen zu können. Sie verweisen auf `Zend_Ldap_Node::setAttribute()`, `Zend_Ldap_Node::getAttribute()`, `Zend_Ldap_Node::deleteAttribute()` und `Zend_Ldap_Node::existsAttribute()`. Weiters implementiert die Klasse `ArrayAccess` für einen Array-artigen Zugriff auf die Attribute. `Zend_Ldap_Node` implementiert auch `Iterator` und `RecursiveIterator` um rekursive Suchen im Baum zu erlauben.

## Zend_Ldap_Node API

Methode | Beschreibung
--- | ---
`Zend_Ldap getLdap()` | Gibt die aktuelle LDAP Verbindung zurück. Wirft eine `Zend_Ldap_Exception` wenn der aktuelle Node im abgehängten Modus ist (nicht mit einer `Zend_Ldap` Instanz verbunden).
`Zend_Ldap_Node attachLdap(Zend_Ldap $ldap)` | Hängt den aktuellen Node an die `Zend_Ldap` Instanz `$ldap` an. Wirft eine `Zend_Ldap_Exception` wenn `$ldap` für den aktuellen Node nicht verantwortlich ist (wenn der Node kein Kind der Basis DN von `$ldap` ist).
`Zend_Ldap_Node detachLdap()` | Hängt den Node von der LDAP Verbindung ab.
`boolean isAttached()` | Prüft ob der aktuelle Node an eine LDAP Verbindung angehängt ist.
`Zend_Ldap_Node create(string|array|Zend_Ldap_Dn $dn, array $objectClass)` | Factory Methode um einen neuen abgehängten `Zend_Ldap_Node` für einen angegebenen DN zu erstellen. Erstellt einen neuen `Zend_Ldap_Node` mit dem DN `$dn` und der Objektklasse `$objectClass`.
`Zend_Ldap_Node fromLdap(string|array|Zend_Ldap_Dn $dn, Zend_Ldap $ldap)` | Factory Methode um einen angehängten `Zend_Ldap_Node` für einen angegebenen DN zu erstellen. Lädt einen existierenden `Zend_Ldap_Node` mit dem DN `$dn` von der LDAP Verbindung `$ldap`.
`Zend_Ldap_Node fromArray((array $data, boolean $fromDataSource)` | Factory Methode um einen abgehängten `Zend_Ldap_Node` aus den Array Daten `$data` zu erstellen. Wenn `$fromDataSource` `TRUE` ist (der Standardwert ist `FALSE`), werden die Daten als, in einem LDAP Baum vorhanden, betrachtet.
`boolean isNew()` | Sagt ob der Node als Neu betrachtet wird (nicht auf dem Server vorhanden). Es ist zu beachten dass das nicht sagt ob der Node wirklich auf dem Server vorhanden ist. Man muss `Zend_Ldap_Node::exists()` verwenden um zu sehen ob der Node dort bereits existiert.
`boolean willBeDeleted()` | Sagt ob dieser Node gelöscht wird sobald `Zend_Ldap_Node::update()` aufgerufen wird. Tells if this node is going to be deleted once `Zend_Ldap_Node::update()` is called.
`Zend_Ldap_Node delete()` | Markiert den Node als gelöscht. Nodes werden beim Aufruf von `Zend_Ldap_Node::update()` gelöscht, wenn `Zend_Ldap_Node::willBeDeleted()` true ist.
`boolean willBeMoved()` | Sagt ob dieser Node verschoben wird sobald `Zend_Ldap_Node::update()` aufgerufen wird.
`Zend_Ldap_Node update(Zend_Ldap $ldap)` | Sendet alle wartenden Änderungen an den LDAP Server. Wenn `$ldap` unterdrückt wird, dann wird die aktuelle LDAP Verbindung verwendet. Wenn der aktuelle Node von einer LDAP Verbindung getrennt ist, wird eine `Zend_Ldap_Exception` geworfen. Wenn `$ldap` angegeben wird, dann wird der aktuelle Node an die angegebene LDAP Verbindung angehängt.
`Zend_Ldap_Dn getCurrentDn()` | Gibt den aktuellen DN des aktuellen Nodes als Zend_Ldap_Dn zurück. Das reflektiert mögliche rename-Operationen.
`Zend_Ldap_Dn getDn()` | Gibt den originalen DN des aktuellen Nodes als Zend_Ldap_Dn zurück. Das reflektiert mögliche rename-Operationen.
`string getDnString(string $caseFold)` | Gibt den originalen DN des aktuellen Nodes als String zurück. Das reflektiert mögliche rename-Operationen.
`array getDnArray(string $caseFold)` | Gibt den originalen DN des aktuellen Nodes als Array zurück. Das reflektiert mögliche rename-Operationen.
`string getRdnString(string $caseFold)` | Gibt den RDN des aktuellen Nodes als String zurück. Das reflektiert mögliche rename-Operationen.
`array getRdnArray(string $caseFold)` | Gibt den RDN des aktuellen Nodes als Array zurück. Das reflektiert mögliche rename-Operationen.
`Zend_Ldap_Node setDn(Zend_Ldap_Dn|string|array $newDn)` | Setzt den neuen DB für diesen Node und verschiebt diesen Node effektiv sobald `Zend_Ldap_Node::update()` aufgerufen wird.
`Zend_Ldap_Node move(Zend_Ldap_Dn|string|array $newDn)` | Das ist ein Alias für `Zend_Ldap_Node::setDn()`.
`Zend_Ldap_Node rename(Zend_Ldap_Dn|string|array $newDn)` | Das ist ein Alias für `Zend_Ldap_Node::setDn()`.
`array getObjectClass()` | Gibt objectClass des Nodes zurück.
`Zend_Ldap_Node setObjectClass(array|string $value)` | Setzt das objectClass Attribut.
`Zend_Ldap_Node appendObjectClass(array|string $value)` | Stellt dem objectClass Attribut voran.
`string toLdif(array $options)` | Gibt eine LDIF Repräsentation des aktuellen Nodes zurück. `$options` wird an `Zend_Ldap_Ldif_Encoder` übergeben.
`array getChangedData()` | Gibt geänderte Node Daten zurück. Das Array enthält alle geänderten Attribute. Dieses format kann in `Zend_Ldap::add()` und `Zend_Ldap::update()` verwendet werden.
`array getChanges()` | Gibt alle gemachten Änderungen zurück.
`string toString()` | Gibt den DN des aktuellen Nodes zurück - leitet auf `Zend_Ldap_Dn::getDnString()` weiter.
`string __toString()` | Castet auf eine String Repräsentation - leitet auf `Zend_Ldap_Dn::toString()` weiter.
`array toArray(boolean $includeSystemAttributes)` | Gibt eine Array Repräsentation des aktuellen Nodes zurück. Wenn `$includeSystemAttributes` `FALSE` ist (der Standardwert ist `TRUE`), werden Systemspezifische Attribute vom Array entfernt. Anders als `Zend_Ldap_Node::getAttributes()` enthält das resultierende Array den DN mit dem Schlüssel `'dn'`.
`string toJson(boolean $includeSystemAttributes)` | Gibt eine JSON Repräsentation des aktuellen Nodes zurück wobei `Zend_Ldap_Node::toArray()` verwendet wird.
`array getData(boolean $includeSystemAttributes)` | Gibt die Attribute des Nodes zurück. Das Array enthält alle Attribute in Ihrem internen Format (keine Konvertierung).

`boolean existsAttribute(string $name, boolean $emptyExists)`

Prüft ob ein angegebenes Attribut existiert. Wenn `$emptyExists` `FALSE` ist werden leere Attrbute (welche nur array() enthalten) als nicht-existent betrachtet und es wird `FALSE` zurückgegeben. Wenn `$emptyExists` true ist werden leere Attribute als existent betrachtet und es wird `TRUE` zurückgegeben. In diesem Fall gibt die Methode nur dann `FALSE` zurck wenn der Name des Attributs in der Sammlung der Schlüssel fehlt.

`boolean attributeHasValue(string $name, mixed|array $value)` | Prüft ob die angegebenen Werte im Attribut existieren. Die Methode gibt nur dann `TRUE` zurück wenn alle Werte von `$value` im Attribut vorhanden sind. Der Vergleich wird strikt durchgeführt (er respektiert den Datentyp).
`integer count()` | Gibt die Anzahl der Attribute im Node zurück. Implementiert Countable.
`mixed getAttribute(string $name, integer|null $index)` | Holt ein LDAP Attribut. Die Datenkonvertierung wird angewendet durch Verwendung von `Zend_Ldap_Attribute::getAttribute()`.
`array getAttributes(boolean $includeSystemAttributes)` | Holt alle Attribute des Nodes. Wenn `$includeSystemAttributes` `FALSE` ist (der Standardwert ist `TRUE`) dann werden die System spezifischen Attribute vom Array entfernt.
`Zend_Ldap_Node setAttribute(string $name, mixed $value)` | Setzt ein LDAP Attribut. Die Datenkonvertierung wird angewendet durch Verwendung von `Zend_Ldap_Attribute::setAttribute()`.
`Zend_Ldap_Node appendToAttribute(string $name, mixed $value)` | Hängt etwas an ein LDAP Attribut an. Die Datenkonvertierung wird angewendet durch Verwendung von `Zend_Ldap_Attribute::setAttribute()`.
`array|integer getDateTimeAttribute(string $name, integer|null $index)` | Holt ein LDAP Date/Time Attribut. Die Datenkonvertierung wird angewendet durch Verwendung von `Zend_Ldap_Attribute::setDateTimeAttribute()`.
`Zend_Ldap_Node setDateTimeAttribute(string $name, integer|array $value, boolean $utc)` | Setzt ein LDAP Date/Time Attribut. Die Datenkonvertierung wird angewendet durch Verwendung von `Zend_Ldap_Attribute::setDateTimeAttribute()`.
`Zend_Ldap_Node appendToDateTimeAttribute(string $name, integer|array $value, boolean $utc)` | Hängt etwas an ein LDAP Date/Time Attribut an. Die Datenkonvertierung wird angewendet durch Verwendung von `Zend_Ldap_Attribute::setDateTimeAttribute()`.
`Zend_Ldap_Node setPasswordAttribute(string $password, string $hashType, string $attribName)` | Setzt ein LDAP Passwort bei `$attribName` (der Standardwert ist `'userPassword'`) auf `$password` mit dem Hashtyp `$hashType` (der Standardwert ist `Zend_Ldap_Attribute::PASSWORD_HASH_MD5`).
`Zend_Ldap_Node deleteAttribute(string $name)` | Löscht ein LDAP Attribut.
`void removeDuplicatesFromAttribute(string $name)` | Entfernt doppelte Werte von einem LDAP Attribut.
`void removeFromAttribute(string $attribName, mixed|array $value)` | Entfernt die angegebenen Werte von einem LDAP Attribut.
`boolean exists(Zend_Ldap $ldap)` | Prüft ob der aktuelle Node im angegebenen LDAP Server existiert (der aktuelle Server wird verwendet wenn `NULL` übergeben wird).
`Zend_Ldap_Node reload(Zend_Ldap $ldap)` | Lädt die Attribute des aktuellen Nodes nochmalig vom angegebenen LDAP Server (der aktuelle Server wird verwendet wenn `NULL` übergeben wird).
`Zend_Ldap_Node_Collection searchSubtree(string|Zend_Ldap_Filter_Abstract $filter, integer $scope, string $sort)` | Sucht den Unterbaum des Nodes mit dem angegebenen `$filter` und den angegebenen Suchparametern ab. Siehe `Zend_Ldap::search()` für Details über die Parameter `$scope` und `$sort`.
`integer countSubtree(string|Zend_Ldap_Filter_Abstract $filter, integer $scope)` | Zählt die Elemente des Unterbaums vom Node welche dem angegebenen `$filter` entsprechen und dem angegebenen Suchbereich. Siehe `Zend_Ldap::search()` für Details über den `$scope` Parameter.
`integer countChildren()` | Zählt die Kinder des Nodes.
`Zend_Ldap_Node_Collection searchChildren(string|Zend_Ldap_Filter_Abstract $filter, string $sort)` | Sucht nach Kindern des Nodes die dem angegebenen `$filter` entsprechen. Siehe `Zend_Ldap::search()` für Details über den `$sort` Parameter.
`boolean hasChildren()` | Gibt zurück ob der aktuelle Node Kinder hat.
`Zend_Ldap_Node_ChildrenIterator getChildren()` | Gibt alle Kinder des aktuellen Nodes zurück.
`Zend_Ldap_Node getParent(Zend_Ldap $ldap)` | Gibt den Elternteil des aktuellen Nodes zurück wobei die LDAP Verbindung `$ldap` verwendet wird (verwendet die aktuelle LDAP Verbindung wenn diese nicht angegeben wird).