mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 04:11:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="iso-8859-1"?>
 | |
| <!-- $Revision$ -->
 | |
| <!-- EN-Revision: 1.7 Maintainer: andreas Status: ready -->
 | |
| <sect1 id="advanced.features.objects">
 | |
|  <title>Objekte</title>
 | |
|  <para>
 | |
|   Smarty erlaubt es, auf <ulink
 | |
|   url="&url.php-manual;object">PHP-Objekte</ulink> durch das Template
 | |
|   zuzugreifen. Dafür gibt es zwei Wege. Der erste ist, Objekte zu
 | |
|   <link linkend="api.register.object">registrieren</link> und wie auf
 | |
|   eine <link linkend="language.custom.functions">eigene
 | |
|   Funktion</link> zuzugreifen.  Der andere Weg ist, das Objekt dem
 | |
|   Template mit <link linkend="api.assign">assign()</link> zuzuweisen
 | |
|   und darauf wie auf andere Variablen zuzugreifen. Die erste Methode
 | |
|   hat eine nettere Template Syntax und ist sicherer da der Zugriff auf
 | |
|   ein registriertes Objekt mit Sicherheitseinstellungen kontrolliert
 | |
|   werden kann. Der Nachteil ist, dass über registrierte Objekte nicht
 | |
|   in einer Schlaufe gelaufen werden kann und, dass es nicht möglich
 | |
|   ist, Arrays registrierten Objekten anzulegen. Welchen Weg Sie
 | |
|   einschlagen wird von Ihren Bedürfnissen definiert, die erste Methode
 | |
|   ist jedoch zu bevorzugen.
 | |
|  </para>
 | |
|  <para>
 | |
|   Wenn die <link
 | |
|   linkend="variable.security">Sicherheitsfunktionen</link>
 | |
|   eingeschaltet sind, können keine private Methoden (solche die einen
 | |
|   '_'-Prefix tragen) aufgerufen werden. Wenn eine Methode und eine
 | |
|   Eigeschaft mit dem gleichen Namen existieren wird die Methode
 | |
|   verwendet.
 | |
|  </para>
 | |
|  <para>
 | |
|   Sie können den Zugriff auf Methoden und Eigenschaften
 | |
|   einschränken indem Sie sie als Array als dritten
 | |
|   Registrationsparameter übergeben.
 | |
|  </para>
 | |
|  <para>
 | |
|   Normalerweise werden Parameter welche einem Objekt via Template
 | |
|   übergeben werden genau so übergeben wie dies bei normalen <link
 | |
|   linkend="language.custom.functions">eigenen Funktionen</link> der
 | |
|   Fall ist.  Das erste Objekt ist ein assoziatives Array und das
 | |
|   zweite das Smarty Objekt selbst.  Wenn Sie die Parameter einzeln
 | |
|   erhalten möchten können Sie den vierten Parameter auf
 | |
|   <literal>false</literal> setzen.
 | |
|  </para>
 | |
|  <para>
 | |
|   Der optionale fünfte Parameter hat nur einen Effekt wenn
 | |
|   <parameter>format</parameter> = <literal>true</literal> ist und eine
 | |
|   Liste von Methoden enthält die als Block verarbeitet werden sollen.
 | |
|   Das bedeutet, dass solche Methoden ein schliessendes Tag im Template
 | |
|   enthalten müssen
 | |
|   (<literal>{foobar->meth2}...{/foobar->meth2}</literal>) und die
 | |
|   Parameter zu den Funktionen die selbe Syntax haben wie
 | |
|   block-function-plugins: sie erhalten also die 4 Parameter
 | |
|   <parameter>$params</parameter>,
 | |
|   <parameter>$content</parameter>,
 | |
|   <parameter>&$smarty</parameter> und
 | |
|   <parameter>&$repeat</parameter>,
 | |
|   und verhalten sich auch sonst wie block-function-plugins.
 | |
|  </para>
 | |
|  <example>
 | |
|   <title>registierte oder zugewiesene Objekte verwenden</title>
 | |
|   <programlisting role="php">
 | |
| <![CDATA[
 | |
| <?php
 | |
| // Das Objekt
 | |
| 
 | |
| class My_Object {
 | |
|     function meth1($params, &$smarty_obj) {
 | |
|         return "meine meth1";
 | |
|     }
 | |
| }
 | |
| 
 | |
| $myobj = new My_Object;
 | |
| // Objekt registrieren (referenz)
 | |
| $smarty->register_object("foobar",$myobj);
 | |
| // Zugriff auf Methoden und Eigeschaften einschränken
 | |
| $smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1'));
 | |
| // wenn wir das traditionelle Parameterformat verwenden wollen, übergeben wir false für den Parameter format
 | |
| $smarty->register_object("foobar",$myobj,null,false);
 | |
| 
 | |
| // Objekte zuweisen (auch via Referenz möglich)
 | |
| $smarty->assign_by_ref("myobj", $myobj);
 | |
| 
 | |
| $smarty->display('index.tpl');
 | |
| ?>
 | |
| ]]>
 | |
|   </programlisting>
 | |
|   <para>
 | |
|    Und hier das dazugehörige index.tpl:
 | |
|   </para>
 | |
|   <programlisting>
 | |
| <![CDATA[
 | |
| {* Zugriff auf ein registriertes objekt *}
 | |
| {foobar->meth1 p1="foo" p2=$bar}
 | |
| 
 | |
| {* Ausgabe zuweisen *}
 | |
| {foobar->meth1 p1="foo" p2=$bar assign="output"}
 | |
| ausgabe war: {$output}
 | |
| 
 | |
| {* auf unser zugewiesenes Objekt zugreifen *}
 | |
| {$myobj->meth1("foo",$bar)}
 | |
| ]]>
 | |
|   </programlisting>
 | |
|  </example>
 | |
|  <para>
 | |
|   Siehe auch <link
 | |
|   linkend="api.register.object">register_object()</link> und <link
 | |
|   linkend="api.assign">assign()</link>
 | |
|  </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:"../../../../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
 | |
| -->
 |