Home > Article > Backend Development > Using Smarty in PHP Part One: Using Variables_PHP Tutorial
All access in Smarty is based on variables. The following is an example to illustrate.
Example idea: The main file introduces the template initialization configuration file (init.inc.php) and a class, and assigns values to the variables in the template.
First, set the init.inc.php file as the initialization configuration file of the Smarty template
init.inc.php
define('ROOT_PATH', dirname(__FILE__)); //Define the website root directory
require ROOT_PATH.'/libs/Smarty.class.php'; //Load Smarty file
$_tpl = new Smarty(); //Instantiate an object
$_tpl->template_dir = ROOT_PATH.'/tpl/'; //Reset the template directory to the tpl directory under the root directory
$_tpl->compile_dir = ROOT_PATH.'./com/'; //Reset the compilation directory to the com directory under the root directory
$_tpl->left_delimiter = '<{'; //Reset the left delimiter to '<{'
$_tpl->right_delimiter = '}>'; //Reset the left delimiter to '}>'
?>
Main file index.php
require 'init.inc.php'; //Introduce template initialization file
require 'Persion.class.php'; //Load object file
global $_tpl;
$title = 'This is a title!';
$content = 'This is body content!';
/*
* 1. Assign to template variables from PHP;
* Dynamic data (PHP from database or file, and variables generated by algorithms)
* Any type of data can be allocated from PHP, mainly including the following
* Scalar: string, int, double, boolean
* Composite: array, object
* NULL
* The index array is accessed directly through the index
* For associative arrays, instead of using [associated subscript], use . subscript
* The object is accessed directly through ->
* */
$_tpl->assign('title',$title);
$_tpl->assign('content',$content); //Assignment of variables
$_tpl->assign('arr1',array('abc','def','ghi')); //Assignment of index array
$_tpl->assign('arr2',array(array('abc','def','ghi'),array('jkl','mno','pqr'))); //Index two-dimensional Array assignment
$_tpl->assign('arr3',array('one'=>'111','two'=>'222','three'=>'333')); //Associative array Assignment
$_tpl->assign('arr4',array('one'=>array('one'=>'111','two'=>'222'),'two'=>array( 'three'=>'333','four'=>'444'))); //Assignment of associated two-dimensional array
$_tpl->assign('arr5',array('one'=>array('111','222'),array('three'=>'333','444'))); / /Assignment of mixed arrays of associative and indexed arrays
$_tpl->assign('object',new Persion('Xiaoyi', 10)); //Object assignment
//Numbers in Smarty can also be operated (+-*/^...)
$_tpl->assign('num1',10);
$_tpl->assign('num2',20);
$_tpl->display('index.tpl');
?>
The template file index.tpl of the main file index.php (stored in the /tpl/ directory)
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml">
Variable access: <{$content}>
Index array access: <{$arr1[0]}> <{$arr1[1]}> <{$arr1[2]}>
Access to indexed two-dimensional array: <{$arr2[0][0]}> <{$arr2[0][1]}> <{$arr2[0][2]}> < ;{$arr2[1][0]}> <{$arr2[1][1]}> <{$arr2[1][2]}>
Access to associative array: <{$arr3.one}> <{$arr3.two}> <{$arr3.three}>
Access to associative two-dimensional arrays: <{$arr4.one.one}> <{$arr4.one.two}> <{$arr4.two.three}> <{$arr4.two .four}>
Access to mixed associative and indexed arrays: <{$arr5.one[0]}> <{$arr5.one[1]}> <{$arr5[0].three}> <{ $arr5[0][0]}>
Access to member variables in the object: <{$object->name}> <{$object->age}>
Access to methods in objects: <{$object->hello()}>
Variable operations: <{$num1+$num2}>
Mixed operations of variables: <{$num1+$num2*$num2/$num1+44}>
Persion.class.php
class Persion {
public $name; //For ease of access, set to public
Public $age;
//Define a construction method
Public function __construct($name,$age) {
$this->name = $name;
$this->age = $age;
}
//Define a hello() method to output name and age
Public function hello() {
return 'Hello! My name is '.$this->name.', and I am '.$this->age.' this year. ';
}
}
?>
Execution result:
Variable access: This is body content!
Index array access: abc def ghi
Access to indexed two-dimensional array: abc def ghi jkl mno pqr
Access to associative array: 111 222 333
Access to associative two-dimensional array: 111 222 333 444
Access to mixed associative and indexed arrays: 111 222 333 444
Access to member variables in objects: Xiaoyi 10
Access to methods in objects: Hello! My name is Xiao Yi, I am 10 years old this year.
Variable operations: 30
Mixed operations on variables: 94
Excerpted from: lee's column