mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-31 12:21:36 +01:00 
			
		
		
		
	- updates for new build system - added missing files - corrections from users - revcheck comments for all files - big up to didou and nuno, brilliant work - make test: ok - make: ok
		
			
				
	
	
		
			104 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="iso-8859-1"?>
 | |
| <!-- $Revision$ -->
 | |
| <!-- EN-Revision: 1.1 Maintainer: andreas Status: ready -->
 | |
|    <sect1 id="advanced.features.objects">
 | |
|     <title>Objekte</title>
 | |
|     <para>
 | |
|      Smarty erlaubt es, auf PHP Objekt durch das Template zuzugreifen. Dafür gibt es
 | |
|      zwei Wege. Der erste ist, Objekte zu registrieren und wie auf eine eigene Funktion zuzugreifen.
 | |
|      Der andere Weg ist, das Objekt dem Template 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 registrierte Objekte nicht in Loops verwendet werden können. Welchen Weg Sie einschlagen
 | |
|      wird von Ihren Bedürfnissen definiert, die erste Methode ist jedoch zu bevorzugen.
 | |
|     </para>
 | |
|     <para>
 | |
|     Wenn die Sicherheitsfunktionen 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 eigenen Funktionen 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 FALSE 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>
 | |
| <?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 parameter format 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");
 | |
| ?>
 | |
| 
 | |
| TEMPLATE:
 | |
| 
 | |
| {* 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 zugreiffen *}
 | |
| {$myobj->meth1("foo",$bar)}</programlisting>
 | |
|     </example>
 | |
| </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
 | |
| -->
 |