svn: /phpdoc/de/trunk/language/oop5/ changelog.xml inheritance.xml properties.xml serialization.xml

[email protected] (Oliver Albers)
Newsgroups php.doc.de
Message-ID <[email protected]>
simp                                     Sat, 12 Jun 2010 22:48:13 +0000

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

Log:
Weitere Seiten im OOP5-Kapitel

Changed paths:
    A   phpdoc/de/trunk/language/oop5/changelog.xml
    A   phpdoc/de/trunk/language/oop5/inheritance.xml
    A   phpdoc/de/trunk/language/oop5/properties.xml
    A   phpdoc/de/trunk/language/oop5/serialization.xml
svn-diffs-300415.txt (text/x-diff, 19.6 KB)
Added: phpdoc/de/trunk/language/oop5/changelog.xml
===================================================================
--- phpdoc/de/trunk/language/oop5/changelog.xml	                        (rev 0)
+++ phpdoc/de/trunk/language/oop5/changelog.xml	2010-06-12 22:48:13 UTC (rev 300415)
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 299561 Maintainer: simp Status: ready -->
+<sect1 xml:id="language.oop5.changelog" xmlns="http://docbook.org/ns/docbook">
+ <title>OOP-Changelog</title>
+ <para>
+  Hier werden Änderungen am OOP-Modell von PHP 5 protokolliert. Beschreibungen und
+  andere Hinweise zu diesen Features werden innerhalb der OOP-5-Dokumentation
+  dargelegt.
+ </para>
+ <para>
+  <informaltable>
+   <tgroup cols="2">
+    <thead>
+     <row>
+      <entry>&Version;</entry>
+      <entry>&Description;</entry>
+     </row>
+    </thead>
+    <tbody>
+     <row>
+      <entry>5.3.0</entry>
+      <entry>
+       Geändert: Es ist nun möglich eine Klasse mittels einer Variablen
+       zu referenzieren (z.B. <literal>echo $classname::constant;</literal>).
+       Der Wert der Variable darf kein Schlüsselwort sein (z.B.
+       <literal>self</literal>, <literal>parent</literal> oder
+       <literal>static</literal>).
+      </entry>
+     </row>
+     <row>
+      <entry>5.3.0</entry>
+      <entry>
+       Geändert: Ein Fehler der Stufe <constant>E_WARNING</constant> wird
+       ausgelöst, wenn die magischen Methoden für
+       <link linkend="language.oop5.overloading">Überladung</link>
+       als <link linkend="language.oop5.static">static</link> deklariert
+       werden. Dies erzwingt auch die Anforderung nach öffentlicher
+       Sichtbarkeit.
+      </entry>
+     </row>
+     <row>
+      <entry>5.3.0</entry>
+      <entry>
+       Geändert: Vor PHP 5.3.0 konnten Exceptions, die in einer
+       <link linkend="language.oop5.autoload">__autoload</link>-Funktion geworfen
+       wurden, nicht mit einem <link linkend="language.exceptions">catch</link>-Block
+       gefangen werden und resultierten in einem "fatal error". Nun können Exceptions,
+       die in einer __autoload-Funktion geworfen wurden, im
+       <link linkend="language.exceptions">catch</link>-Block unter einer Bedingung
+       gefangen werden. Wenn eine selbst definierte Exception geworfen wird, so muss
+       diese Exception verfügbar sein. Die __autoload-Funktion kann jedoch rekursiv
+       aufgerufen werden, um die Exceptionklasse automatisch zu laden.
+      </entry>
+     </row>
+     <row>
+      <entry>5.3.0</entry>
+      <entry>
+       Hinzugefügt: Die Methode <link linkend="language.oop5.overloading">__callStatic</link>.
+      </entry>
+     </row>
+     <row>
+      <entry>5.3.0</entry>
+      <entry>
+       Hinzugefügt: Unterstützung für die
+       <link linkend="language.types.string.syntax.heredoc">heredoc</link>-
+       und <link linkend="language.types.string.syntax.heredoc">nowdoc</link>-Syntax
+       für <emphasis>const</emphasis> und Definition von Eigenschaften in einer
+       Klasse. Beachten Sie: die heredoc-Werte müssen den gleichen Regeln
+       wie Strings in doppelten Anführungszeichen folgen (d.h. keine Variablen
+       beinhalten).
+      </entry>
+     </row>
+     <row>
+      <entry>5.3.0</entry>
+      <entry>
+       Hinzugefügt:
+       <link linkend="language.oop5.late-static-bindings">Späte statische Bindung</link>.
+      </entry>
+     </row>
+     <row>
+      <entry>5.3.0</entry>
+      <entry>
+       Hinzugefügt: Die Methode <link linkend="language.oop5.magic.invoke">__invoke</link>.
+      </entry>
+     </row>
+     <row>
+      <entry>5.2.0</entry>
+      <entry>
+       Geändert: Die Methode
+       <link linkend="language.oop5.magic.tostring">__toString</link> wurde nur
+       in direkter Verbindung mit <function>echo</function> oder
+       <function>print</function> aufgerufen. Nun wird sie in jedem
+       String-Kontext aufgerufen (z.B. in <function>printf</function> mit dem
+       <literal>%s</literal>-Modifizierer), aber nicht in anderen Kontexten
+       (z.B. mit dem <literal>%d</literal>-Modifizierer). Seit PHP 5.2.0 löst die
+       Konvertierung von Objekten ohne <literal>__toString</literal>-Methode zu
+       Strings einen Fehler der Stufe <constant>E_RECOVERABLE_ERROR</constant>
+       aus.
+      </entry>
+     </row>
+     <row>
+      <entry>5.1.3</entry>
+      <entry>
+       Geändert: In vorhergehenden Versionen von PHP 5 wurde die Verwendung
+       von <literal>var</literal> als veraltet betrachtet und löste einen
+       Fehler der Stufe <constant>E_STRICT</constant> aus. Dies ist nicht
+       länger veraltet und daher wird kein Fehler mehr ausgelöst.
+      </entry>
+     </row>
+     <row>
+      <entry>5.1.0</entry>
+      <entry>
+       Geändert: Die statische Methode
+       <link linkend="language.oop5.magic.set-state">__set_state</link>
+       wird nun für Klassen aufgerufen, wenn sie durch
+       <function>var_export</function> exportiert werden.
+      </entry>
+     </row>
+     <row>
+      <entry>5.1.0</entry>
+      <entry>
+       Hinzugefügt: Die Methoden
+       <link linkend="language.oop5.overloading.members">__isset</link> und
+       <link linkend="language.oop5.overloading.members">__unset</link>.
+      </entry>
+     </row>
+    </tbody>
+   </tgroup>
+  </informaltable>
+ </para>
+</sect1>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->


Property changes on: phpdoc/de/trunk/language/oop5/changelog.xml
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL
Added: svn:eol-style
   + native

Added: phpdoc/de/trunk/language/oop5/inheritance.xml
===================================================================
--- phpdoc/de/trunk/language/oop5/inheritance.xml	                        (rev 0)
+++ phpdoc/de/trunk/language/oop5/inheritance.xml	2010-06-12 22:48:13 UTC (rev 300415)
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 297028 Maintainer: simp Status: ready -->
+ <sect1 xml:id="language.oop5.inheritance" xmlns="http://docbook.org/ns/docbook">
+  <title>Objekt-Vererbung</title>
+  <para>
+   Vererbung ist ein gängiges Prinzip der Programmierung und PHP verwendet
+   dieses Prinzip in seinem Objektmodell. Dieses Prinzip beeinflusst die
+   Art und Weise, in der mehrere Klassen und Objekte in Beziehung zueinander
+   stehen.
+  </para>
+  <para>
+   Wenn man zum Beispiel von einer Klasse erbt, so erbt die Unterklasse
+   alle Methoden der Sichtbarkeiten public und protected von der Vaterklasse.
+   Wenn eine Klasse diese Methoden nicht überschreibt, wird die ursprüngliche
+   Funktionalität beibehalten.
+  </para>
+  <para>
+   Dies ist nützlich, um Funktionalität zu definieren und zu abstrahieren und
+   erlaubt es, zusätzliche Funktionalität in ähnlichen Objekten zu
+   implementieren, ohne sämtliche gemeinsame Funktionalitäten neu
+   implementieren zu müssen.
+  </para>
+  <sect2 xml:id="language.oop5.inheritance.examples">
+   <example xml:id="language.oop5.inheritance.examples.ex1">
+    <title>Beispiel für Vererbung</title>
+     <programlisting role="php">
+<![CDATA[
+<?php
+
+class foo
+{
+    public function printItem($string)
+    {
+        echo 'Foo: ' . $string . PHP_EOL;
+    }
+
+    public function printPHP()
+    {
+        echo 'PHP ist großartig.' . PHP_EOL;
+    }
+}
+
+class bar extends foo
+{
+    public function printItem($string)
+    {
+        echo 'Bar: ' . $string . PHP_EOL;
+    }
+}
+
+$foo = new foo();
+$bar = new bar();
+$foo->printItem('baz'); // Ausgabe: 'Foo: baz'
+$foo->printPHP();       // Ausgabe: 'PHP ist großartig.'
+$bar->printItem('baz'); // Ausgabe: 'Bar: baz'
+$bar->printPHP();       // Ausgabe: 'PHP ist großartig.'
+
+?>
+]]>
+    </programlisting>
+   </example>
+  </sect2>
+ </sect1>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->


Property changes on: phpdoc/de/trunk/language/oop5/inheritance.xml
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL
Added: svn:eol-style
   + native

Added: phpdoc/de/trunk/language/oop5/properties.xml
===================================================================
--- phpdoc/de/trunk/language/oop5/properties.xml	                        (rev 0)
+++ phpdoc/de/trunk/language/oop5/properties.xml	2010-06-12 22:48:13 UTC (rev 300415)
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 297028 Maintainer: simp Status: ready -->
+ <sect1 xml:id="language.oop5.properties" xmlns="http://docbook.org/ns/docbook">
+  <title>Eigenschaften</title>
+
+  <para>
+   Variablen in einer Klasse werden "Eigenschaften" genannt. Die
+   Begriffe "Attribute" oder "Felder" werden ebenfalls verwendet,
+   um sich auf das selbe Konzept zu beziehen, aber innerhalb
+   dieser Referenz wird der Begriff "Eigenschaften" verwendet.
+   Diese werden definiert, indem man eines der Schlüsselwörter
+   <literal>public</literal>, <literal>protected</literal>
+   oder <literal>private</literal> gefolgt von einer regulären
+   Variablendeklaration verwendet. Die Deklaration darf eine
+   Initialisierung des Variablenwertes beinhalten, der zu
+   setzende Wert muss dabei allerdings ein konstanter Wert
+   sein - d.h. dieser muss zum Kompilierungszeitpunkt
+   ausgewertet werden können und darf nicht von Informationen
+   abhängen, die erst zur Laufzeit zur Verfügung stehen.
+  </para>
+  <para>
+   Siehe <xref linkend="language.oop5.visibility" /> für mehr
+   Informationen zur Bedeutung von <literal>public</literal>,
+   <literal>protected</literal> und <literal>private</literal>.
+  </para>
+  <note>
+   <para>
+    Um Abwärtskompatibilität mit PHP 4 zu gewährleisten, akzeptiert
+    PHP 5 weiterhin die Verwendung des Schlüsselwortes
+    <literal>var</literal> zur Deklaration von Eigenschaften anstelle
+    von (oder zusätzlich zu) <literal>public</literal>,
+    <literal>protected</literal> oder <literal>private</literal>.
+    <literal>var</literal> wird jedoch nicht mehr benötigt.
+    In den Versionen von PHP 5.0 bis 5.1.3 wurde die Verwendung
+    von <literal>var</literal> als veraltet betrachtet und
+    erzeugte eine <constant>E_STRICT</constant>-Warnung, aber
+    seit PHP 5.1.3 ist dies nicht länger veraltet und erzeugt
+    keine Warnung.
+   </para>
+   <para>
+    Wenn eine Eigenschaft mittels <literal>var</literal> anstelle
+    von <literal>public</literal>, <literal>protected</literal>
+    oder <literal>private</literal> deklariert wird, so wird
+    PHP 5 diese Eigenschaft so behandeln, als wäre sie mittels
+    <literal>public</literal> deklariert worden.
+   </para>
+  </note>
+  <para>
+   Innerhalb der Methoden einer Klasse kann auf Eigenschaften,
+   Konstanten und Methoden in der Form
+   <varname>$this-&gt;Eigenschaft</varname> (wobei
+   <literal>Eigenschaft</literal> der Name der Eigenschaft ist)
+   zugegriffen werden, solange nicht aus dem Kontext einer statischen
+   Methode auf eine statische Eigenschaft zugegriffen wird. In diesem
+   Fall kann mittels <varname>self::$Eigenschaft</varname> darauf
+   zugegriffen werden. Siehe auch
+   <link linkend="language.oop5.static">Static Schlüsselwort</link>
+   für mehr Informationen zu diesem Thema.
+  </para>
+  <para>
+   Die Pseudo-Variable <varname>$this</varname> ist innerhalb
+   jeder Klassenmethode verfügbar, wenn diese Methode im Kontext
+   eines Objektes aufgerufen wird. <varname>$this</varname> ist
+   eine Referenz auf das aufrufende Objekt (üblicherweise das
+   Objekt, zu dem diese Methode gehört; möglicherweise ein anderes
+   Objekt, wenn die Methode
+   <link linkend="language.oop5.static">statisch</link> aus einem
+   sekundären Objekt aufgerufen wird).
+  </para>
+
+  <para>
+   <example>
+    <title>Deklaration von Eigenschaften</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+class SimpleClass
+{
+   // Ungültige Deklarationen von Eigenschaften:
+   public $var1 = 'Hallo ' . 'Welt';
+   public $var2 = <<<EOD
+Hallo Welt
+EOD;
+   public $var3 = 1+2;
+   public $var4 = self::myStaticMethod();
+   public $var5 = $myVar;
+
+   // Gültige Deklarationen von Eigenschaften:
+   public $var6 = myConstant;
+   public $var7 = array(true, false);
+
+   // Dies ist nur in PHP 5.3.0 oder später gültig.
+   public $var8 = <<<'EOD'
+Hallo Welt
+EOD;
+}
+?>
+]]>
+    </programlisting>
+   </example>
+  </para>
+
+  <note>
+   <para>
+    Es gibt einige nützliche Funktionen für den Umgang mit Klassen
+    und Objekten. Siehe hierzu
+    <link linkend="ref.classobj">Klassen- und Objekt-Funktionen</link>.
+   </para>
+  </note>
+
+  <para>
+   Im Gegensatz zur
+   <link linkend="language.types.string.syntax.heredoc">Heredoc-Syntax</link>
+   kann die
+   <link linkend="language.types.string.syntax.nowdoc">Nowdoc-Syntax</link>
+   in jedem Kontext für statische Daten verwendet werden, einschließlich
+   der Deklaration von Eigenschaften.
+   <example>
+    <title>Beispiel für ein nowdoc zur Initialisierung einer Eigenschaft</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+class foo {
+   // Seit PHP 5.3.0
+   public $bar = <<<'EOT'
+bar
+EOT;
+}
+?>
+]]>
+    </programlisting>
+   </example>
+  </para>
+  <note>
+   <para>
+    Unterstützung für Nowdoc wurde in PHP 5.3.0 hinzugefügt.
+   </para>
+  </note>
+ </sect1>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->


Property changes on: phpdoc/de/trunk/language/oop5/properties.xml
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL
Added: svn:eol-style
   + native

Added: phpdoc/de/trunk/language/oop5/serialization.xml
===================================================================
--- phpdoc/de/trunk/language/oop5/serialization.xml	                        (rev 0)
+++ phpdoc/de/trunk/language/oop5/serialization.xml	2010-06-12 22:48:13 UTC (rev 300415)
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 297557 Maintainer: simp Status: ready -->
+ <sect1 xml:id="language.oop5.serialization" xmlns="http://docbook.org/ns/docbook">
+  <title>Serialisierung von Objekten</title>
+  <title>Serialisierung von Objekten - Objekte in Sessions</title>
+
+  <para>
+   <function>serialize</function> erzeugt einen String, welcher
+   die Byte-Stream-Repräsentation eines jeden Wertes besitzt,
+   der in PHP gespeichert werden kann.
+   <function>unserialize</function> kann diesen String verwenden,
+   um die ursprünglichen Variablenwerte wiederherzustellen. Verwendet
+   man <function>serialize</function>, um ein Objekt zu speichern,
+   so werden alle Variablen dieses Objektes gespeichert. Die
+   Methoden des Objektes werden nicht gespeichert, nur der Name
+   der Klasse.
+  </para>
+
+  <para>
+   Damit man imstande ist, ein Objekt mit <function>unserialize</function>
+   wiederherzustellen, muss die Klasse des Objektes definiert sein.
+   Das heißt, wenn man ein Objekt der Klasse A serialisiert, erhält man
+   einen String, der sich auf die Klasse A bezieht und die Werte
+   aller darin enthaltenen Variablen beinhaltet. Wenn man in einer
+   anderen Datei diesen String wieder zu einem Objekt der Klasse A
+   deserialisieren will, so muss die Klasse A in dieser Datei
+   vorher bekannt sein. Dies kann man erreichen, indem man die
+   Definition der Klasse A in eine mittels include
+   ladbare Datei auslagert und diese Datei einbindet oder die Funktion
+   <function>spl_autoload_register</function> verwendet.
+  </para>
+
+  <informalexample>
+   <programlisting role="php">
+<![CDATA[
+<?php
+// classa.inc:
+
+  class A {
+      public $one = 1;
+
+      public function show_one() {
+          echo $this->one;
+      }
+  }
+
+// page1.php:
+
+  include("classa.inc");
+
+  $a = new A;
+  $s = serialize($a);
+  // $s irgendwo ablegen, wo page2.php dies finden kann.
+  file_put_contents('store', $s);
+
+// page2.php:
+
+  // Dies ist nötig, damit unserialize korrekt funktioniert.
+  include("classa.inc");
+
+  $s = file_get_contents('store');
+  $a = unserialize($s);
+
+  // Nun kann man die Funktion show_one() des Objektes $a
+  // verwenden.
+  $a->show_one();
+?>
+]]>
+   </programlisting>
+  </informalexample>
+
+  <para>
+   Wenn eine Anwendung Sessions verwendet und die Funktion
+   <function>session_register</function> benutzt, um Objekte zu
+   registrieren, so werden diese Objekte automatisch am Schluss jeder
+   PHP-Seite serialisiert und in jeder nachfolgenden PHP-Seite
+   deserialisiert. Das heißt, dass diese Objekte in jeder Seite
+   der Anwendung auftauchen können, sobald diese Teil der Session
+   werden. Beachten Sie im bezug auf
+   <function>session_register</function>: &removed.php.future;
+  </para>
+
+  <para>
+   Es ist dringend empfohlen, dass wenn eine Anwendung Objekte zur späteren
+   Verwendung in der Anwendung serialisiert, die Klassendefinitionen in
+   der gesamten Anwendung eingebunden werden. Wird dies nicht beachtet, so
+   wird das Objekt ohne eine Klassendefinition deserialisiert, was dazu
+   führen wird, dass PHP dem Objekt eine Klasse
+   <classname>__PHP_Incomplete_Class_Name</classname> zuweisen wird, welche
+   keine Methoden besitzt. Dies wird das Objekt nutzlos machen.
+  </para>
+
+  <para>
+   Wenn also im obigen Beispiel <varname>$a</varname> Teil einer Session würde,
+   indem man <literal>session_register("a")</literal> benutzt, so sollte die
+   Datei <literal>classa.inc</literal> in jeder Seite eingebunden werden, nicht
+   nur in <filename>page1.php</filename> und <filename>page2.php</filename>.
+  </para>
+ </sect1>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->


Property changes on: phpdoc/de/trunk/language/oop5/serialization.xml
___________________________________________________________________
Added: svn:keywords
   + Id Rev Revision Date LastChangedDate LastChangedRevision Author LastChangedBy HeadURL URL
Added: svn:eol-style
   + native
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.