我想做类似的事情:
class Name{
function assign($name,$value){
}
}
这与smarty中的assign
非常相似:
$smarty->assign('name',$value);
$smarty->display("index.html");
我该如何实现?
答案 0 :(得分:4)
class Name {
private $values = array()
function assign($name,$value) {
$this->values[$name] = $value;
}
}
答案 1 :(得分:1)
问题有点模糊。如果你想保留$ name的$值以备将来使用,你可以做类似的事情:
class Name {
protected $_data= array();
function assign($name,$value) {
$this->_data[$name]= $value;
}
}
然后在包含的模板文件中使变量可用:
class Templater {
protected $_data= array();
function assign($name,$value) {
$this->_data[$name]= $value;
}
function render($template_file) {
extract($this->_data);
include($template_file);
}
}
$template= new Templater();
$template->assign('myvariable', 'My Value');
$template->render('path/to/file.tpl');
如果path / to / file.tpl包含:
<html>
<body>
This is my variable: <b><?php echo $myvariable; ?></b>
</body>
</html>
你会得到像这样的输出
这是我的变量:我的价值
答案 2 :(得分:1)
class Name{
private $_vars;
function __construct() {
$this->_vars = array();
}
function assign($name,$value) {
$this->_vars[$name] = $value;
}
function display($templatefile) {
extract($this->_vars);
include($templatefile);
}
}
extract()
调用临时从数组中拉出键值对,作为为每个键命名的变量,其值与数组值对应。
答案 3 :(得分:0)
我会说
class Name{
private $_values = array(); // or protected if you prefer
function assign($name,$value){
$this->_values[$name] = $value;
}
}
答案 4 :(得分:0)
您应该创建一个全局注册表类,以使您的变量可用于HTML文件:
class registry
{
private $data = array();
static function set($name, $value)
{
$this->data[$name] = $value;
}
static function get($value)
{
return isset($this->data[$name]) ? $this->data[$name] : false;
}
}
并从您的文件中访问:
registry::get('my already set value');
答案 5 :(得分:0)
class XY { public function __set($name, $value) { $this->$name = $value; } public function __get($value) { return isset($this->$name) ? $this->$name : false; } } $xy = new XY(); $xy->username = 'Anton'; $xy->email = 'anton{at}blabla.com'; echo "Your username is: ". $xy->username; echo "Your Email is: ". $xy->email;