日期:2014-05-17  浏览次数:20570 次

请教各位大侠一个Smarty的问题
如题,下面是源代码:
index.php:
<?php
include 'main.inc.php';
  header("Content-Type:text/html;charset=UTF-8");
  $sm->assign("time",date("Y-m-d H-i-s"));
  class User{
  function smarty_function_myname($param,&$smarty) {
  if (isset($param['name'])) {
  if ("xxx"==$param['name']) {
  return "我认识".
  }else {
  return "我不认识你!";
  }
  }
  }
  }
  $user = new User(); 
  $sm->register_function("myname", array($user,"smarty_function_myname"));
  $sm->display("index.tpl");
?>
--------------------------------------------------------------------
index.tpl:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
  <{myname name="xxx"}>
</body>
</html>
----------------------------------------------------
为什么访问index.php的时候一直报错,错误如下:
Fatal error: Call to undefined function smarty_function_myname() in F:\AppServ\www\Demo\templates_c\%%45^45E^45E480CD%%index.tpl.php on line 12

PS:要是将index.php换成如下,可以正常使用:
<?php
  include 'main.inc.php';
  header("Content-Type:text/html;charset=UTF-8");
  function smarty_function_myname($param,&$smarty) {
  //$param是使用<{myname}>函数时的属性数组
  if (isset($param['name'])) {
  if ("徐小虾"==$param['name']) {
  return "我认识".date("Y-m-d H-i-s");
  }else {
  return "我不认识你!";
  }
  }
  }
   
  $sm->register_function("myname", "smarty_function_myname");
  $sm->display("index.tpl");
?>
求高手指教...

------解决方案--------------------
不懂~~都是用php处理,用smarty显示而已~
array(&$object, $method)数组形式,其中&$object是一个对象的引用,而$method是它的一个方法;
会不会是$sm->register_function("myname", array(&$user,"smarty_function_myname"));呢?