<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect3 id="zend.ldap.api.reference.zend-ldap-attribute">
    <title>Zend_Ldap_Attribute</title>

    <para>
        <classname>Zend_Ldap_Attribute</classname> ist eine Helfer Klasse die nur Statische Methoden
        anbietet für die Manipulation von Arrays die zur Struktur passen welche in den
        <classname>Zend_Ldap</classname> Data Änderungs Methoden verwendet werden und zum
        Datenformat das vom <classname>Zend_Ldap</classname> Server benötigt wird.
        <acronym>PHP</acronym> Datentypen werden wie folgt konvertiert:
    </para>

    <variablelist>
        <varlistentry>
            <term><code>string</code></term>
            <listitem><para>Es wird keine Konvertierung durchgeführt.</para></listitem>
        </varlistentry>

        <varlistentry>
            <term><code>integer</code> und <code>float</code></term>
            <listitem><para>Der Wert wird zu einem String konvertiert.</para></listitem>
        </varlistentry>

        <varlistentry>
            <term><code>boolean</code></term>

            <listitem>
                <para>
                    <constant>TRUE</constant> wird zu
                    <emphasis>'<constant>TRUE</constant>'</emphasis> konvertiert und
                    <constant>FALSE</constant> zu <emphasis>'<constant>FALSE</constant>'</emphasis>
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><code>object</code> und <code>array</code></term>

            <listitem>
                <para>
                    Diese Werte werden zu einem String konvertiert indem
                    <methodname>serialize()</methodname> verwendet wird.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term><code>resource</code></term>

            <listitem>
                <para>
                    Wenn eine <code>stream</code> Ressource angegeben wurde, werden die Daten
                    durch den Aufruf von <methodname>stream_get_contents()</methodname> geholt.
                </para>
            </listitem>
        </varlistentry>

        <varlistentry>
            <term>others</term>

            <listitem>
                <para>
                    Alle anderen Datentypen (speziell nicht-Stream Ressourcen) werden verweigert.
                </para>
            </listitem>
        </varlistentry>
    </variablelist>

    <para>Beim Lesen von Attributwerten werden die folgenden Konvertierungen durchgeführt:</para>

    <variablelist>
        <varlistentry>
            <term><emphasis>'<constant>TRUE</constant>'</emphasis></term>
            <listitem><para>Wird zu <constant>TRUE</constant> konvertiert.</para></listitem>
        </varlistentry>

        <varlistentry>
            <term><emphasis>'<constant>FALSE</constant>'</emphasis></term>
            <listitem><para>Wird zu <constant>FALSE</constant> konvertiert.</para></listitem>
        </varlistentry>

        <varlistentry>
            <term>others</term>

            <listitem>
                <para>
                    Alle anderen Strings werden nicht automatisch konvertiert und so wie Sie sind
                    übergeben.
                </para>
            </listitem>
        </varlistentry>
    </variablelist>

    <table id="zend.ldap.api.reference.zend-ldap-attribute.table">
        <title>Zend_Ldap_Attribute API</title>

        <tgroup cols="2">
            <thead>
                <row>
                    <entry>Methode</entry>
                    <entry>Beschreibung</entry>
                </row>
            </thead>

            <tbody>
                <row>
                    <entry>
                        <emphasis><code>void setAttribute(array &amp;$data, string
                            $attribName, mixed $value, boolean $append)</code>
                        </emphasis>
                    </entry>

                    <entry>
                        Setzt die Attribute <varname>$attribName</varname> in
                        <varname>$data</varname> auf den Wert <varname>$value</varname>. Wenn
                        <varname>$append</varname> <constant>TRUE</constant> ist (standardmäßig
                        <constant>FALSE</constant>) wird <varname>$value</varname> an das Attribut
                        angehängt. <varname>$value</varname> kann ein skalarer Wert oder ein Array
                        von skalaren Werten sein. Eine Konvertierung wird durchgeführt.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>array|mixed getAttribute(array $data,
                            string $attribName, integer|null $index)</code></emphasis>
                    </entry>

                    <entry>
                        Gibt das Attribut <varname>$attribName</varname> von
                        <varname>$data</varname> zurück. Wenn <varname>$index</varname>
                        <constant>NULL</constant> ist (Standardwert) wird ein Array zurückgegeben
                        welches alle Werte für das angegebene Attribut enthält. Ein leeres Array
                        wird zurückgegeben wenn das Attribut im angegebenen Array nicht existiert.
                        Wenn ein Integer für den Index spezifiziert wird, dann wird der
                        korrespondierende Wert mit dem gegebenen Index zurückgegeben. Wenn der Index
                        ausserhalb der Grenzen ist wird <constant>NULL</constant> zurückgegeben.
                        Eine Konvertierung wird durchgeführt.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>boolean attributeHasValue(array &amp;$data,
                            string $attribName, mixed|array $value)</code></emphasis>
                    </entry>

                    <entry>
                        Prüft ob das Attribut <varname>$attribName</varname> in
                        <varname>$data</varname> den Wert oder die Werte welche in
                        <varname>$value</varname> angegeben wurden hat. Die Methode gibt nur dann
                        <constant>TRUE</constant> zurück wenn alle Werte von
                        <varname>$value</varname> im Attribut enthalten sind. Der Vergleich wird
                        strikt durchgeführt (der Datentyp wird respektiert).
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>void removeDuplicatesFromAttribute(array
                            &amp;$data, string $attribName)</code></emphasis>
                    </entry>

                    <entry>
                        Entfernt alle Duplikate vom Attribut <varname>$attribName</varname> in
                        <varname>$data</varname>.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>void removeFromAttribute(array &amp;$data,
                            string $attribName, mixed|array $value)</code></emphasis>
                    </entry>

                    <entry>
                        Entfernt den Wert oder die Werte vom Attribut <varname>$attribName</varname>
                        die in <varname>$value</varname> angegeben werden von
                        <varname>$data</varname>.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>string|null convertToLdapValue(mixed
                            $value)</code></emphasis>
                    </entry>

                    <entry>
                        Konvertiert einen <acronym>PHP</acronym> Datentyp in seine
                        <acronym>LDAP</acronym> Repräsentation. Siehe die Einleitung für Details.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>mixed convertFromLdapValue(string
                            $value)</code></emphasis>
                    </entry>

                    <entry>
                        Konvertiert einen <acronym>LDAP</acronym> Wert in seinen
                        <acronym>PHP</acronym> Datentyp. Siehe die Einleitung für Details.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>string|null
                            convertToLdapDateTimeValue(integer $value, boolean $utc)</code>
                        </emphasis>
                    </entry>

                    <entry>
                        Konvertiert einen Zeitpunkt in seine <acronym>LDAP</acronym> Datum und Zeit
                        Repräsentation. Wenn <varname>$utc</varname> <constant>TRUE</constant> ist
                        (standardmäßig ist es <constant>FALSE</constant>) dann wird der
                        resultierende <acronym>LDAP</acronym> Datum und Zeit String in
                        <acronym>UTC</acronym> sein, andernfalls wird ein lokaler Datum und Zeit
                        String zurückgegeben.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>integer|null
                            convertFromLdapDateTimeValue(string $value)</code>
                        </emphasis>
                    </entry>

                    <entry>
                        Konvertiert eine Datum und Zeit Repräsentation für <acronym>LDAP</acronym>
                        in einen Zeitpunkt. Die Methode gibt <constant>NULL</constant> zurück wenn
                        <varname>$value</varname> nicht in einen <acronym>PHP</acronym> Zeitpunkt
                        zurückkonvertiert werden kann.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>void setPassword(array &amp;$data, string
                            $password, string $hashType, string $attribName)</code></emphasis>
                    </entry>

                    <entry>
                        Setzt ein <acronym>LDAP</acronym> Passwort für das Attribut
                        <varname>$attribName</varname> in <varname>$data</varname> zurück.
                        <varname>$attribName</varname> ist standardmäßig <code>'userPassword'</code>
                        welches das standardmäßige Attribut für Passwörter ist. Der Hash für das
                        Passwort kann mit <varname>$hashType</varname> spezifiziert werden. Der
                        Standardwert ist <constant>Zend_Ldap_Attribute::PASSWORD_HASH_MD5</constant>
                        wobei <constant>Zend_Ldap_Attribute::PASSWORD_HASH_SHA</constant> die andere
                        Möglichkeit ist.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>string createPassword(string $password,
                            string $hashType)</code></emphasis>
                    </entry>

                    <entry>
                        Erstellt ein <acronym>LDAP</acronym> Passwort. Der Hash für das Passwort
                        kann mit <varname>$hashType</varname> spezifiziert werden. Der Standardwert
                        ist <constant>Zend_Ldap_Attribute::PASSWORD_HASH_MD5</constant> wobei
                        <constant>Zend_Ldap_Attribute::PASSWORD_HASH_SHA</constant> die andere
                        Möglichkeit ist.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>void setDateTimeAttribute(array &amp;$data,
                            string $attribName, integer|array $value, boolean $utc, boolean
                            $append)</code></emphasis>
                    </entry>

                    <entry>
                        Setzt das Attribut <varname>$attribName</varname> in
                        <varname>$data</varname> auf den Datum und Zeitwert
                        <varname>$value</varname>. Wenn <varname>$append</varname>
                        <constant>TRUE</constant> ist (standardmäßig ist er
                        <constant>FALSE</constant>) dann wird <varname>$value</varname> an das
                        Attribut angehängt. <varname>$value</varname> kann ein Integerwert oder ein
                        Array von Integerwerten sein. Die Konvertierung von Datum und Zeit wird
                        entsprechend zu
                        <methodname>Zend_Ldap_Attribute::convertToLdapDateTimeValue()</methodname>
                        durchgeführt.
                    </entry>
                </row>

                <row>
                    <entry>
                        <emphasis><code>array|integer getDateTimeAttribute(array
                            $data, string $attribName, integer|null $index)</code></emphasis>
                    </entry>

                    <entry>
                        Gibt das Datum und Zeit Attribut <varname>$attribName</varname> von
                        <varname>$data</varname> zurück. Wenn <varname>$index</varname>
                        <constant>NULL</constant> ist (das ist der Standardwert) dann wird ein Array
                        zurückgegeben welches alle Datum und Zeitwerte für das angegebene Attribut
                        enthält. Ein leeres Array wird zurückgegeben wenn das Attribut im
                        angegebenen Array nicht existiert. Wenn ein Integer Index spezifiziert wird,
                        dann wird der korrespondierende Datum und Zeitwert vom angegebenen Index
                        zurückgegeben. Wenn der Index ausserhalb der Grenzen ist dann wird
                        <constant>NULL</constant> zurückgegeben. Die Konvertierung von Datum und
                        Zeit wird entsprechend zu
                        <methodname>Zend_Ldap_Attribute::convertFromLdapDateTimeValue()</methodname>
                        durchgeführt.
                    </entry>
                </row>
            </tbody>
        </tgroup>
    </table>
</sect3>
