svn: /phpdoc/de/trunk/ language/variables.xml reference/exif/functions/exif-read-data.xml reference/openssl/functions/openssl-csr-new.xml reference/openssl/functions/openssl-encrypt.xml reference/sqlite3/sqlite3/createaggregate.xml

[email protected] (Christoph Michael Becker)
Newsgroups php.doc.de
Message-ID <[email protected]>
cmb                                      Wed, 21 Nov 2018 16:26:44 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=346023

Log:
Sync with EN

Changed paths:
    U   phpdoc/de/trunk/language/variables.xml
    U   phpdoc/de/trunk/reference/exif/functions/exif-read-data.xml
    U   phpdoc/de/trunk/reference/openssl/functions/openssl-csr-new.xml
    U   phpdoc/de/trunk/reference/openssl/functions/openssl-encrypt.xml
    U   phpdoc/de/trunk/reference/sqlite3/sqlite3/createaggregate.xml
svn-diffs-346023.txt (text/x-diff, 18.3 KB)
Modified: phpdoc/de/trunk/language/variables.xml
===================================================================
--- phpdoc/de/trunk/language/variables.xml	2018-11-21 14:14:13 UTC (rev 346022)
+++ phpdoc/de/trunk/language/variables.xml	2018-11-21 16:26:44 UTC (rev 346023)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 345951 Maintainer: nobody Status: ready -->
+<!-- EN-Revision: 346017 Maintainer: nobody Status: ready -->
 <!-- Credits: betz -->

  <chapter xml:id="language.variables" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
@@ -977,6 +977,15 @@
      </example>
     </para>

+    <note>
+     <simpara>
+      Beginnt der Name einer externen Variablen mit einer gültigen Array-Syntax,
+      dann werden darauf folgende Zeichen stillschweigend ignoriert. Zum
+      Beispiel wird <literal>&lt;input name="foo[bar]baz"&gt;</literal> zu
+      <literal>$_REQUEST['foo']['bar']</literal>.
+     </simpara>
+    </note>
+
     <sect3 xml:id="language.variables.external.form.submit">
      <title>IMAGE SUBMIT Variablen-Bezeichner</title>


Modified: phpdoc/de/trunk/reference/exif/functions/exif-read-data.xml
===================================================================
--- phpdoc/de/trunk/reference/exif/functions/exif-read-data.xml	2018-11-21 14:14:13 UTC (rev 346022)
+++ phpdoc/de/trunk/reference/exif/functions/exif-read-data.xml	2018-11-21 16:26:44 UTC (rev 346023)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 343899 Maintainer: nobody Status: ready -->
+<!-- EN-Revision: 346020 Maintainer: nobody Status: ready -->

 <refentry xml:id="function.exif-read-data" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
  <refnamediv>
@@ -368,8 +368,8 @@
 $fp = fopen('/path/to/image.jpg', 'rb');

 if (!$fp) {
-	echo 'Fehler: Konnte das Bild nicht fürs Lesen öffnen';
-	exit;
+    echo 'Fehler: Konnte das Bild nicht fürs Lesen öffnen';
+    exit;
 }

 // Versuche die Exif-Header zu lesen
@@ -376,8 +376,8 @@
 $headers = exif_read_data($fp);

 if (!$headers) {
-	echo 'Fehler: Konnte die Exif-Header nicht lesen';
-	exit;
+    echo 'Fehler: Konnte die Exif-Header nicht lesen';
+    exit;
 }

 // Gib die 'COMPUTED'-Header aus
@@ -384,7 +384,7 @@
 echo 'EXIF Header:' . PHP_EOL;

 foreach ($headers['COMPUTED'] as $header => $value) {
-	printf(' %s => %s%s', $header, $value, PHP_EOL);
+    printf(' %s => %s%s', $header, $value, PHP_EOL);
 }
 ?>
 ]]>

Modified: phpdoc/de/trunk/reference/openssl/functions/openssl-csr-new.xml
===================================================================
--- phpdoc/de/trunk/reference/openssl/functions/openssl-csr-new.xml	2018-11-21 14:14:13 UTC (rev 346022)
+++ phpdoc/de/trunk/reference/openssl/functions/openssl-csr-new.xml	2018-11-21 16:26:44 UTC (rev 346023)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 343014 Maintainer: jaenecke Status: ready -->
+<!-- EN-Revision: 346020 Maintainer: jaenecke Status: ready -->
 <refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.openssl-csr-new">
  <refnamediv>
   <refname>openssl_csr_new</refname>
@@ -19,8 +19,7 @@
   <para>
    <function>openssl_csr_new</function> erzeugt einen neuen CSR
    (Zertifikatssignierungsanfrage) basierend auf den Informationen, die mit
-   dem Parameter <parameter>dn</parameter> angegeben werden. Dieser
-   bestimmt den Distinguished Name, der im Betreff des Zertifikat benutzt werden soll.
+   dem Parameter <parameter>dn</parameter> angegeben werden.
   </para>
   &note.openssl.cnf;
  </refsect1>
@@ -126,10 +125,10 @@
             Bestimmt den Typ des privaten Schlüssels der erzeugt werden soll.
             Der Typ kann einer der folgenden sein:
             <constant>OPENSSL_KEYTYPE_DSA</constant>,
-            <constant>OPENSSL_KEYTYPE_DH</constant> oder
-            <constant>OPENSSL_KEYTYPE_RSA</constant>. Der Standardwert ist
-            <constant>OPENSSL_KEYTYPE_RSA</constant>, momentan ist das der
-            einzige Schlüsseltyp, der unterstützt wird.
+            <constant>OPENSSL_KEYTYPE_DH</constant>,
+            <constant>OPENSSL_KEYTYPE_RSA</constant> oder
+            <constant>OPENSSL_KEYTYPE_EC</constant>.
+            Der Standardwert ist <constant>OPENSSL_KEYTYPE_RSA</constant>.
            </entry>
           </row>
           <row>
@@ -149,7 +148,23 @@
             Eine der <link linkend="openssl.ciphers">Ziffer-Konstanten</link>.
            </entry>
           </row>
-         </tbody>
+          <row>
+           <entry>curve_name</entry>
+           <entry><type>string</type></entry>
+           <entry>none</entry>
+           <entry>
+            PHP 7.1+. Einer der <function>openssl_get_curve_names</function>.
+           </entry>
+          </row>
+          <row>
+           <entry>config</entry>
+           <entry><type>string</type></entry>
+           <entry>N/A</entry>
+           <entry>
+            Pfad zur eigenen alternativen openssl.conf Datei.
+           </entry>
+          </row>
+          </tbody>
         </tgroup>
        </table>
       </para>
@@ -174,16 +189,12 @@
     <programlisting role="php">
 <![CDATA[
 <?php
-// Angabe der Daten für den distinguished name, der in dem Zertifikat benutzt
-// wird. Sie müssen die Werte dieser Schlüssel so anpassen, dass diese ihrem
-// Namen und Firma entsprechen, oder um präziser zu sein, den Namen und die
-// Firma der Person/Seite angeben, für die Sie das Zertifikat erzeugen.
-// Für SSL Zertifikate entspricht der commonName gewöhnlich dem Domainnamen,
-// für den das Zertifikat benutzt werden soll, aber bei S/MIME Zertifikaten
-// entspricht der commonName dem Namen der Person, die das Zertifikat nutzen
-// möchte.
+// für SSL Zertifikate ist der commonName der zu sichernden Domainnamen
+// für S/MIME Zertifikate the commonName ist der Eigentümer der E-Mail-Adresse
+// die location und identification Felder beziehen sich auf den Eigentümer der
+// zu sichernden Domain oder des E-Mail Eigentümers
 $dn = array(
-    "countryName" => "UK",
+    "countryName" => "GB",
     "stateOrProvinceName" => "Somerset",
     "localityName" => "Glastonbury",
     "organizationName" => "The Brain Room Limited",
@@ -201,23 +212,14 @@
 // Erzeugen einer Zertifikatssignierungsanfrage
 $csr = openssl_csr_new($dn, $privkey, array('digest_alg' => 'sha256'));

-// Gewöhnlicherweise möchten Sie zu diesem Zeitpunkt ein selbstsigniertes
-// Zertifikat erzeugen, das Sie benutzten können, bis ihre CA ihre Anfrage
-// im positiven Sinne bearbeitet hat.
 // Erzeugen eines selbstsignierten Zertifikts, das für die Dauer von 365 Tagen
 // gültig ist.
-$sscert = openssl_csr_sign($csr, null, $privkey, 365, array('digest_alg' => 'sha256'));
+$x509 = openssl_csr_sign($csr, null, $privkey, $days=365, array('digest_alg' => 'sha256'));

-// Jetzt möchten Sie ihren privaten Schlüssel, ihren CSR und das
-// selbstsignierte Zertifikat sichern, damit Sie dieses, abhängig vom
-// beabsichtigten Verwendungszweck, auf ihrem Web-, Mailserver oder
-// in ihrem Mailprogramm installieren können.
-// Dieses Beispiel zeigt ihnen, wie Sie diese Dinge in Variablen abspeichern,
-// aber genauso können Sie die Informationen direkt in Dateien speichern.
-// Typischerweise schicken Sie den CSR an Ihre CA, die daraufhin diese Anfrage
-// bearbeitet und Sie mit einem "richtigen" Zertifikat ausstattet.
+// Sichern des privaten Schlüssels, des CSR und des selbstsignierte Zertifikats
+// für spätere Verwendung
 openssl_csr_export($csr, $csrout) and var_dump($csrout);;
-openssl_x509_export($sscert, $certout) and var_dump($certout);
+openssl_x509_export($x509, $certout) and var_dump($certout);
 openssl_pkey_export($privkey, $pkeyout, "mypassword") and var_dump($pkeyout);

 // Anzeigen der möglichen aufgetretenen Fehler
@@ -228,6 +230,33 @@
 ]]>
       </programlisting>
      </example>
+
+     <example>
+      <title>Erzeugen eines selbstsignierten ECC-Zertifikats in PHP 7.1+</title>
+      <programlisting role="php">
+<![CDATA[
+<?php
+$subject = array(
+    "commonName" => "docs.php.net",
+);
+
+// Erzeugen eines neuen privaten (und öffentlichen) Schlüsselpaars
+$private_key = openssl_pkey_new(array(
+    "private_key_type" => OPENSSL_KEYTYPE_EC,
+    "curve_name" => 'prime256v1',
+));
+
+// Erzeugen einer Zertifikatssignierungsanfrage
+$csr = openssl_csr_new($subject, $private_key, array('digest_alg' => 'sha384'));
+
+// Erzeugen eines selbstsignierten EC-Zertifikats
+$x509 = openssl_csr_sign($csr, null, $private_key, $days=365, array('digest_alg' => 'sha384'));
+openssl_x509_export_to_file($x509, 'ecc-cert.pem');
+openssl_pkey_export_to_file($private_key, 'ecc-private.key');
+?>
+]]>
+      </programlisting>
+     </example>
     </para>
    </refsect1>


Modified: phpdoc/de/trunk/reference/openssl/functions/openssl-encrypt.xml
===================================================================
--- phpdoc/de/trunk/reference/openssl/functions/openssl-encrypt.xml	2018-11-21 14:14:13 UTC (rev 346022)
+++ phpdoc/de/trunk/reference/openssl/functions/openssl-encrypt.xml	2018-11-21 16:26:44 UTC (rev 346023)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 343016 Maintainer: cmb Status: ready -->
+<!-- EN-Revision: 346020 Maintainer: cmb Status: ready -->

 <refentry xml:id="function.openssl-encrypt" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
  <refnamediv>
@@ -173,12 +173,12 @@
 $cipher = "aes-128-gcm";
 if (in_array($cipher, openssl_get_cipher_methods()))
 {
-	$ivlen = openssl_cipher_iv_length($cipher);
-	$iv = openssl_random_pseudo_bytes($ivlen);
-	$ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv, $tag);
-	// speichere $cipher, $iv und $tag für spätere Entschlüsselung
-	$original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv, $tag);
-	echo $original_plaintext."\n";
+    $ivlen = openssl_cipher_iv_length($cipher);
+    $iv = openssl_random_pseudo_bytes($ivlen);
+    $ciphertext = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv, $tag);
+    // speichere $cipher, $iv und $tag für spätere Entschlüsselung
+    $original_plaintext = openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv, $tag);
+    echo $original_plaintext."\n";
 }
 ?>
 ]]>
@@ -208,7 +208,7 @@
 $calcmac = hash_hmac('sha256', $ciphertext_raw, $key, $as_binary=true);
 if (hash_equals($hmac, $calcmac)) // PHP 5.6+ Rechenzeitangriff-sicherer Vergleich
 {
-	echo $original_plaintext."\n";
+    echo $original_plaintext."\n";
 }
 ?>
 ]]>

Modified: phpdoc/de/trunk/reference/sqlite3/sqlite3/createaggregate.xml
===================================================================
--- phpdoc/de/trunk/reference/sqlite3/sqlite3/createaggregate.xml	2018-11-21 14:14:13 UTC (rev 346022)
+++ phpdoc/de/trunk/reference/sqlite3/sqlite3/createaggregate.xml	2018-11-21 16:26:44 UTC (rev 346023)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 288721 Maintainer: lapistano Status: ready -->
+<!-- EN-Revision: 345797 Maintainer: lapistano Status: ready -->

 <refentry xml:id="sqlite3.createaggregate" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
  <refnamediv>
@@ -40,9 +40,57 @@
      <term><parameter>step_callback</parameter></term>
      <listitem>
       <para>
-       Name der PHP- oder benutzerdefinierten Funktion, welche als Callback-Funktion für
-       jedes Element des Aggregates genutzt wird.
+       'Callback'-Funktion, welche für jede Reihe des Abfrageergebnisses ausgeführt wird.
+       Ihr PHP sollte das Ergebnis akkumulieren und in der Aggregation 'context' speichern.
       </para>
+      <para>
+       Es ist notwendig, diese Funktion wie folgt zu definieren:
+       <methodsynopsis>
+        <type>mixed</type><methodname><replaceable>step</replaceable></methodname>
+        <methodparam><type>mixed</type><parameter>context</parameter></methodparam>
+        <methodparam><type>int</type><parameter>rownumber</parameter></methodparam>
+        <methodparam><type>mixed</type><parameter>value1</parameter></methodparam>
+        <methodparam choice="opt"><type>mixed</type><parameter>...</parameter></methodparam>
+       </methodsynopsis>
+       <variablelist>
+        <varlistentry>
+         <term><parameter>context</parameter></term>
+         <listitem>
+          <para>
+           &null; für die erste Reihe. Folgende Reihen
+           werden den zuvor zurückgegebenen Wert haben. Sie sollten diesen nutzen, um den
+           Status der Aggregation zu pflegen.
+          </para>
+         </listitem>
+        </varlistentry>
+        <varlistentry>
+         <term><parameter>rownumber</parameter></term>
+         <listitem>
+          <para>
+           Die Nummer der aktuellen Reihe.
+          </para>
+         </listitem>
+        </varlistentry>
+        <varlistentry>
+         <term><parameter>value1</parameter></term>
+         <listitem>
+          <para>
+           Das erste Argument, das an das Aggregat übergeben wurde.
+          </para>
+         </listitem>
+        </varlistentry>
+        <varlistentry>
+         <term><parameter>...</parameter></term>
+         <listitem>
+          <para>
+           Weitere Argumente, die an das Aggregat übergeben wurden.
+          </para>
+         </listitem>
+        </varlistentry>
+       </variablelist>
+       Der Rückgabewert dieser Funktion wird als <parameter>context</parameter>
+       Argument im nächsten Aufruf der step oder finalize Funktion verwendet.
+      </para>
      </listitem>
     </varlistentry>
     <varlistentry>
@@ -49,9 +97,41 @@
      <term><parameter>final_callback</parameter></term>
      <listitem>
       <para>
-       Name der PHP- oder benutzerdefinierten Funktion, welche genutzt wird, um die Aggregierung
-       abzuschließen.
+       'Callback'-Funktion, die die Informationen aller Reihen aggregiert.
+       Sind alle Reihen abgearbeitet, wird diese Funktion aufgerufen. Diese
+       sollte dann die Daten der Aggregation 'context' auswerten und das
+       Ergebnis zurückgeben. 'Callback'-Funktionen sollten einen Variablentyp
+       liefern, der von SQLite erwartet wird (z.B. <link
+       linkend="language.types.intro">scalar type</link>).
       </para>
+      <para>
+       Diese Funktion ist wie folgt zu definieren:
+       <methodsynopsis>
+        <type>mixed</type><methodname><replaceable>fini</replaceable></methodname>
+        <methodparam><type>mixed</type><parameter>context</parameter></methodparam>
+        <methodparam><type>int</type><parameter>rownumber</parameter></methodparam>
+       </methodsynopsis>
+       <variablelist>
+        <varlistentry>
+         <term><parameter>context</parameter></term>
+         <listitem>
+          <para>
+           Enthält den Rückgabewert des letzten Aufrufs der Schritt-Funktion.
+          </para>
+         </listitem>
+        </varlistentry>
+        <varlistentry>
+         <term><parameter>rownumber</parameter></term>
+         <listitem>
+          <para>
+           Immer <literal>0</literal>.
+          </para>
+         </listitem>
+        </varlistentry>
+       </variablelist>
+       Der Rückgabewert dieser Funktion wird als Rückgabewert für die
+       Aggregation genutzt.
+      </para>
      </listitem>
     </varlistentry>
     <varlistentry>
@@ -65,7 +145,6 @@
     </varlistentry>
    </variablelist>
   </para>
-
  </refsect1>

  <refsect1 role="returnvalues">
@@ -75,6 +154,99 @@
   </para>
  </refsect1>

+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Beispiel für eine 'max_length'-Aggregierungs-Funktion</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$data = array(
+   'one',
+   'two',
+   'three',
+   'four',
+   'five',
+   'six',
+   'seven',
+   'eight',
+   'nine',
+   'ten',
+   );
+$db = new SQLite3(':memory:');
+$db->exec("CREATE TABLE strings(a)");
+$insert = $db->prepare('INSERT INTO strings VALUES (?)');
+foreach ($data as $str) {
+    $insert->bindValue(1, $str);
+    $insert->execute();
+}
+$insert = null;
+
+function max_len_step($context, $rownumber, $string)
+{
+    if (strlen($string) > $context) {
+        $context = strlen($string);
+    }
+    return $context;
+}
+
+function max_len_finalize($context, $rownumber)
+{
+    return $context === null ? 0 : $context;
+}
+
+$db->createAggregate('max_len', 'max_len_step', 'max_len_finalize');
+
+var_dump($db->querySingle('SELECT max_len(a) from strings'));
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+int(5)
+]]>
+    </screen>
+   </example>
+  </para>
+  <para>
+   In diesem Beispiel erzeugen wir eine Aggregat-Funktion, die die Länge
+   der längsten Zeichenkette innerhalb einer der Tabellenspalten ermittelt.
+   Die <literal>max_len_step</literal>-Funktion wird für jede durchlaufene Reihe
+   mit dem Parameter <literal>$context</literal> aufgerufen. Der Parameter
+   'context' ist eine normal PHP Variable, welche Listen oder Objektinhalte
+   beinhalten kann. In diesem Beispiel benötigen wir sie als Speicher für die
+   größte bisher gefundene Länge der geprüften Zeichenketten. Wenn also die
+   die Zeichenkette in <literal>$string</literal> länger ist, als die aktuell
+   Längste, wird der Inhalt von 'context' mit der neuen Länge überschrieben.
+  </para>
+  <para>
+   Nachdem alle Reihen abgearbeitet wurden, ruft SQLite die
+   <literal>max_len_finalize</literal>-Funktion auf, um das Endergebnis
+   zu ermitteln. Hier können wir nun jede Art von Berechnungen,
+   basierend auf den in <literal>$context</literal> gesammelten Daten,
+   durchführen. In unserem Beispiel haben wir die Berechgungen bereits bei
+   der Datenerhebung getätigt, dass wir nun nur noch das Ergebnis -
+   den Inhalt von 'context' - zurückgeben brauchen.
+  </para>
+  <tip>
+   <para>
+    Es ist nicht ratsam, eine Kopie der Inhalte in 'context' zu speichern,
+    um diese dann am Ende auszuwerten. Das würde dazu führen, dass SQLite eine
+    große Menge an Speicher benötigt, um die Abfrage abzuarbeiten. Überlegen Sie
+    nur mal, wieviel Speicher eine Abfrage braucht, die 1 Millionen Reihen mit
+    je 32 Byte Inhalt aus der Datenbank liest.
+   </para>
+  </tip>
+  <tip>
+   <para>
+    <methodname>SQLite3::createAggregate</methodname> kann verwendet werden, um
+    native SQL-Funktionen von SQLite zu übersteuern.
+   </para>
+  </tip>
+ </refsect1>
+
 </refentry>

 <!-- Keep this comment at the end of the file
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.