<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Set a custom view engine</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="yaf-dispatcher.setrequest.html">Yaf_Dispatcher::setRequest</a></div> <div class="next" style="text-align: right; float: right;"><a href="yaf-dispatcher.sleep.html">Yaf_Dispatcher::__sleep</a></div> <div class="up"><a href="class.yaf-dispatcher.html">Yaf_Dispatcher</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="yaf-dispatcher.setview" class="refentry"> <div class="refnamediv"> <h1 class="refname">Yaf_Dispatcher::setView</h1> <p class="verinfo">(Yaf >=1.0.0)</p><p class="refpurpose"><span class="refname">Yaf_Dispatcher::setView</span> — <span class="dc-title">Set a custom view engine</span></p> </div> <div class="refsect1 description" id="refsect1-yaf-dispatcher.setview-description"> <h3 class="title">Description</h3> <div class="methodsynopsis dc-description"> <span class="modifier">public</span> <span class="type"><a href="class.yaf-dispatcher.html" class="type Yaf_Dispatcher">Yaf_Dispatcher</a></span> <span class="methodname"><strong>Yaf_Dispatcher::setView</strong></span> ( <span class="methodparam"><span class="type"><a href="class.yaf-view-interface.html" class="type Yaf_View_Interface">Yaf_View_Interface</a></span> <code class="parameter">$view</code></span> )</div> <p class="para rdfs-comment"> This method proviods a solution for that if you want use a custom view engine instead of <a href="class.yaf-view-simple.html" class="classname">Yaf_View_Simple</a> </p> </div> <div class="refsect1 parameters" id="refsect1-yaf-dispatcher.setview-parameters"> <h3 class="title">Parameters</h3> <dl> <dt> <span class="term"><em><code class="parameter">view</code></em></span> <dd> <p class="para"> A Yaf_View_Interface instance </p> </dd> </dt> </dl> </div> <div class="refsect1 returnvalues" id="refsect1-yaf-dispatcher.setview-returnvalues"> <h3 class="title">Return Values</h3> <p class="para"> </p> </div> <div class="refsect1 examples" id="refsect1-yaf-dispatcher.setview-examples"> <h3 class="title">Examples</h3> <div class="example" id="example-4129"> <p><strong>Example #1 <span class="function"><strong>A custom View engine()</strong></span>example</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /></span><span style="color: #007700">require </span><span style="color: #DD0000">"/path/to/smarty/Smarty.class.php"</span><span style="color: #007700">;<br /><br />class </span><span style="color: #0000BB">Smarty_Adapter </span><span style="color: #007700">implements </span><span style="color: #0000BB">Yaf_View_Interface<br /></span><span style="color: #007700">{<br /> </span><span style="color: #FF8000">/**<br /> * Smarty object<br /> * @var Smarty<br /> */<br /> </span><span style="color: #007700">public </span><span style="color: #0000BB">$_smarty</span><span style="color: #007700">;<br /> <br /> </span><span style="color: #FF8000">/**<br /> * Constructor<br /> *<br /> * @param string $tmplPath<br /> * @param array $extraParams<br /> * @return void<br /> */<br /> </span><span style="color: #007700">public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">$tmplPath </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #0000BB">$extraParams </span><span style="color: #007700">= array()) {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty </span><span style="color: #007700">= new </span><span style="color: #0000BB">Smarty</span><span style="color: #007700">;<br /> <br /> if (</span><span style="color: #0000BB">null </span><span style="color: #007700">!== </span><span style="color: #0000BB">$tmplPath</span><span style="color: #007700">) {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">setScriptPath</span><span style="color: #007700">(</span><span style="color: #0000BB">$tmplPath</span><span style="color: #007700">);<br /> }<br /> <br /> foreach (</span><span style="color: #0000BB">$extraParams </span><span style="color: #007700">as </span><span style="color: #0000BB">$key </span><span style="color: #007700">=> </span><span style="color: #0000BB">$value</span><span style="color: #007700">) {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty</span><span style="color: #007700">-></span><span style="color: #0000BB">$key </span><span style="color: #007700">= </span><span style="color: #0000BB">$value</span><span style="color: #007700">;<br /> }<br /> }<br /> <br /> </span><span style="color: #FF8000">/**<br /> * Set the path to the templates<br /> *<br /> * @param string $path The directory to set as the path.<br /> * @return void<br /> */<br /> </span><span style="color: #007700">public function </span><span style="color: #0000BB">setScriptPath</span><span style="color: #007700">(</span><span style="color: #0000BB">$path</span><span style="color: #007700">)<br /> {<br /> if (</span><span style="color: #0000BB">is_readable</span><span style="color: #007700">(</span><span style="color: #0000BB">$path</span><span style="color: #007700">)) {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty</span><span style="color: #007700">-></span><span style="color: #0000BB">template_dir </span><span style="color: #007700">= </span><span style="color: #0000BB">$path</span><span style="color: #007700">;<br /> return;<br /> }<br /> <br /> throw new </span><span style="color: #0000BB">Exception</span><span style="color: #007700">(</span><span style="color: #DD0000">'Invalid path provided'</span><span style="color: #007700">);<br /> }<br /> <br /> </span><span style="color: #FF8000">/**<br /> * Assign a variable to the template<br /> *<br /> * @param string $key The variable name.<br /> * @param mixed $val The variable value.<br /> * @return void<br /> */<br /> </span><span style="color: #007700">public function </span><span style="color: #0000BB">__set</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">, </span><span style="color: #0000BB">$val</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty</span><span style="color: #007700">-></span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">, </span><span style="color: #0000BB">$val</span><span style="color: #007700">);<br /> }<br /> <br /> </span><span style="color: #FF8000">/**<br /> * Allows testing with empty() and isset() to work<br /> *<br /> * @param string $key<br /> * @return boolean<br /> */<br /> </span><span style="color: #007700">public function </span><span style="color: #0000BB">__isset</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">)<br /> {<br /> return (</span><span style="color: #0000BB">null </span><span style="color: #007700">!== </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty</span><span style="color: #007700">-></span><span style="color: #0000BB">get_template_vars</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">));<br /> }<br /> <br /> </span><span style="color: #FF8000">/**<br /> * Allows unset() on object properties to work<br /> *<br /> * @param string $key<br /> * @return void<br /> */<br /> </span><span style="color: #007700">public function </span><span style="color: #0000BB">__unset</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">)<br /> {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty</span><span style="color: #007700">-></span><span style="color: #0000BB">clear_assign</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">);<br /> }<br /> <br /> </span><span style="color: #FF8000">/**<br /> * Assign variables to the template<br /> *<br /> * Allows setting a specific key to the specified value, OR passing<br /> * an array of key => value pairs to set en masse.<br /> *<br /> * @see __set()<br /> * @param string|array $spec The assignment strategy to use (key or<br /> * array of key => value pairs)<br /> * @param mixed $value (Optional) If assigning a named variable,<br /> * use this as the value.<br /> * @return void<br /> */<br /> </span><span style="color: #007700">public function </span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #0000BB">$spec</span><span style="color: #007700">, </span><span style="color: #0000BB">$value </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">) {<br /> if (</span><span style="color: #0000BB">is_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$spec</span><span style="color: #007700">)) {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty</span><span style="color: #007700">-></span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #0000BB">$spec</span><span style="color: #007700">);<br /> return;<br /> }<br /> <br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty</span><span style="color: #007700">-></span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #0000BB">$spec</span><span style="color: #007700">, </span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br /> }<br /> <br /> </span><span style="color: #FF8000">/**<br /> * Clear all assigned variables<br /> *<br /> * Clears all variables assigned to Yaf_View either via<br /> * {@link assign()} or property overloading<br /> * ({@link __get()}/{@link __set()}).<br /> *<br /> * @return void<br /> */<br /> </span><span style="color: #007700">public function </span><span style="color: #0000BB">clearVars</span><span style="color: #007700">() {<br /> </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty</span><span style="color: #007700">-></span><span style="color: #0000BB">clear_all_assign</span><span style="color: #007700">();<br /> }<br /> <br /> </span><span style="color: #FF8000">/**<br /> * Processes a template and returns the output.<br /> *<br /> * @param string $name The template to process.<br /> * @return string The output.<br /> */<br /> </span><span style="color: #007700">public function </span><span style="color: #0000BB">render</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">, </span><span style="color: #0000BB">$value </span><span style="color: #007700">= </span><span style="color: #0000BB">NULL</span><span style="color: #007700">) {<br /> return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty</span><span style="color: #007700">-></span><span style="color: #0000BB">fetch</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">);<br /> }<br /><br /> public function </span><span style="color: #0000BB">display</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">, </span><span style="color: #0000BB">$value </span><span style="color: #007700">= </span><span style="color: #0000BB">NULL</span><span style="color: #007700">) {<br /> echo </span><span style="color: #0000BB">$this</span><span style="color: #007700">-></span><span style="color: #0000BB">_smarty</span><span style="color: #007700">-></span><span style="color: #0000BB">fetch</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">);<br /> }<br /><br />}<br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> <div class="example" id="example-4130"> <p><strong>Example #2 <span class="function"><strong>Yaf_Dispatcher::setView()</strong></span>example</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Bootstrap </span><span style="color: #007700">extends </span><span style="color: #0000BB">Yaf_Bootstrap_Abstract </span><span style="color: #007700">{<br /><br /> </span><span style="color: #FF8000">/**<br /> * there are some config for smarty in the config:<br /> *<br /> * smarty.left_delimiter = "{{"<br /> * smarty.right_delimiter = "}}"<br /> * smarty.template_dir = APPLICATION_PATH "/views/scripts/"<br /> * smarty.compile_dir = APPLICATION_PATH "/views/templates_c/"<br /> * smarty.cache_dir = APPLICATION_PATH "/views/templates_d/"<br /> *<br /> */<br /> </span><span style="color: #007700">public function </span><span style="color: #0000BB">_initConfig</span><span style="color: #007700">() {<br /> </span><span style="color: #0000BB">$config </span><span style="color: #007700">= </span><span style="color: #0000BB">Yaf_Application</span><span style="color: #007700">::</span><span style="color: #0000BB">app</span><span style="color: #007700">()-></span><span style="color: #0000BB">getConfig</span><span style="color: #007700">();<br /> </span><span style="color: #0000BB">Yaf_Registry</span><span style="color: #007700">::</span><span style="color: #0000BB">set</span><span style="color: #007700">(</span><span style="color: #DD0000">"config"</span><span style="color: #007700">, </span><span style="color: #0000BB">$config</span><span style="color: #007700">);<br /> }<br /><br /> public function </span><span style="color: #0000BB">_initLocalName</span><span style="color: #007700">() {<br /> </span><span style="color: #FF8000">/** we put class Smarty_Adapter under the local library directory */<br /> </span><span style="color: #0000BB">Yaf_Loader</span><span style="color: #007700">::</span><span style="color: #0000BB">getInstance</span><span style="color: #007700">()-></span><span style="color: #0000BB">registerLocalNamespace</span><span style="color: #007700">(</span><span style="color: #DD0000">'Smarty'</span><span style="color: #007700">);<br /> }<br /><br /> public function </span><span style="color: #0000BB">_initSmarty</span><span style="color: #007700">(</span><span style="color: #0000BB">Yaf_Dispatcher $dispatcher</span><span style="color: #007700">) {<br /> </span><span style="color: #0000BB">$smarty </span><span style="color: #007700">= new </span><span style="color: #0000BB">Smarty_Adapter</span><span style="color: #007700">(</span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #0000BB">Yaf_Registry</span><span style="color: #007700">::</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #DD0000">"config"</span><span style="color: #007700">)-></span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #DD0000">"smarty"</span><span style="color: #007700">));<br /> </span><span style="color: #0000BB">$dispatcher</span><span style="color: #007700">-></span><span style="color: #0000BB">setView</span><span style="color: #007700">(</span><span style="color: #0000BB">$smarty</span><span style="color: #007700">);<br /> </span><span style="color: #FF8000">/* now the Smarty view engine become the default view engine of Yaf */<br /> </span><span style="color: #007700">}<br />}<br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> </div> <div class="refsect1 seealso" id="refsect1-yaf-dispatcher.setview-seealso"> <h3 class="title">See Also</h3> <ul class="simplelist"> <li class="member"><a href="class.yaf-view-interface.html" class="classname">Yaf_View_Interface</a></li> <li class="member"><a href="class.yaf-view-simple.html" class="classname">Yaf_View_Simple</a></li> </ul> </div> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="yaf-dispatcher.setrequest.html">Yaf_Dispatcher::setRequest</a></div> <div class="next" style="text-align: right; float: right;"><a href="yaf-dispatcher.sleep.html">Yaf_Dispatcher::__sleep</a></div> <div class="up"><a href="class.yaf-dispatcher.html">Yaf_Dispatcher</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>