Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

Chapter 15. Advanced Features

Objetos

O Smarty permite acesso a objetos do PHP através de seus templates. Há duas formas de acessá-los. Uma forma é registrar objetos para o template, então os acessa via sintaxe similar a funções customizáveis. A outra forma é atribuir objetos para os templates e acessá-los como se fossem uma variável atribuída. O primeiro método tem uma sintaxe de template muito mais legal. E também mais segura, à medida que um objeto registrado pode ser restrito a certos métodos e propriedades. Entretanto, um objeto registrado não pode ser posto em loop ou ser atribuido em arrays de objetos, etc. O método que você escolher será determinado pelas suas necessidades, mas use o primeiro método se possível para manter um mínimo de sintaxe no template.

Se a segurança está habilitada, nenhum dos métodos privados ou funções podem acessados (começando com "_"). Se um método e propriedade de um mesmo nome existir, o método será usado.

Você pode restringir os métodos e propriedades que podem ser acessados listando os em um array como o terceiro parâmetro de registração.

Por definição, parâmetros passados para objetos através dos templates são passados da mesma forma que funções customizáveis os obtém. Um array associativo é passado como o primeiro parâmetro, e o objeto smarty como o segundo. Se você quer que os parâmetros passados um de cada vez por cada argumento como passagem de parâmetro de objeto tradicional, defina o quarto parâmetro de registração para falso.

O quinto parâmetro opcional só tem efeito com format sendo true e contém uma lista de métods de ob que seriam tratados como blocos. Isso significa que estes métodos tem uma tag de fechamento no template ({foobar->meth2}...{/foobar->meth2}) e os parâmetros para os métodos tem a mesma sinopse como os parâmetros para block-function-plugins: Eles pegam 4 parâmetros $params, $content, &$smarty e &$repeat e eles também comportam-se como block-function-plugins.

Example 15.1. usando um objeto registrado ou atribuído

<?php
// O objeto

class My_Object {
	function meth1($params, &$smarty_obj) {
		return "this is my meth1";
	}
}

$myobj = new My_Object;
// registrando o objeto (será por referência)
$smarty->register_object("foobar",$myobj);
// Se você quer restringie acesso a certos métodos ou propriedades, liste-os 
$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1'));
// Se você quer usar o formato de parâmetro de objeto tradicional, passe um booleano de false
$smarty->register_object("foobar",$myobj,null,false);

// Você pode também atribuir objetos. Atribua por referência quando possível.
$smarty->assign_by_ref("myobj", $myobj);

$smarty->display("index.tpl");
?>

TEMPLATE:

{* accessa nosso objeto registrado *}
{foobar->meth1 p1="foo" p2=$bar}

{* você pode também atribuir a saída *}
{foobar->meth1 p1="foo" p2=$bar assign="output"}
the output was {$output}

{* acessa nosso objeto atribuído *}
{$myobj->meth1("foo",$bar)}

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors