消息栈(messageStack)类的函数介绍

messageStack Class 就是消息栈类,它的作用就是对于系统的一些判断在前台做一个提示,比如搜索产品的时候找不到某关键词的时候有这样的一个醒目的提示。他起到的作用就是一个提醒用户。该类位于includes\classes\message_stack.php 文件中。该类的对象在系统初始化的时候已经创建,在系统内可以直接引用$messageStack 这个对象。
下面就简单的介绍这个类的一些功能。
构造函数就不说了,就是对一些类变量进行初始化而已。
该类共有5个成员函数。分别为
function add($class, $message, $type = ‘error’)
//这个函数的作用就是往消息栈里面添加一条信息。
参数意思:
$class 该参数就是标识该消息的标志,所有操作消息的都是根据这个参数的内容来做。比如往产品页面添加一条消息提示,这个参数可以设置成‘product_info’:这个不是固定,可以随意的设置。但是设置后要想获得该消息的话,就一定要这个标识来获得该消息。
$message:就是消息的内容了。可以定义成常量,在english.php文件里面定义.这样定义是为了支持多语言,建议还是这样做。
$type :消息类型。总共有4种消息类型:1、error 错误消息 2、warning 警告提示 3、success 成功 4、caution 谨慎
函数原型: function add($class, $message, $type = 'error') { global $template, $current_page_base; $message = trim($message); $duplicate = false; if (strlen($message) > 0) { if ($type == 'error') { $theAlert = array('params' => 'class="messageStackError larger"', 'class' => $class, 'text' => zen_image($template->get_template_dir(ICON_IMAGE_ERROR, DIR_WS_TEMPLATE, $current_page_base,'images/icons'). '/' . ICON_IMAGE_ERROR, ICON_ERROR_ALT) . ' ' . $message); } elseif ($type == 'warning') { $theAlert = array('params' => 'class="messageStackWarning larger"', 'class' => $class, 'text' => zen_image($template->get_template_dir(ICON_IMAGE_WARNING, DIR_WS_TEMPLATE, $current_page_base,'images/icons'). '/' . ICON_IMAGE_WARNING, ICON_WARNING_ALT) . ' ' . $message); } elseif ($type == 'success') { $theAlert = array('params' => 'class="messageStackSuccess larger"', 'class' => $class, 'text' => zen_image($template->get_template_dir(ICON_IMAGE_SUCCESS, DIR_WS_TEMPLATE, $current_page_base,'images/icons'). '/' . ICON_IMAGE_SUCCESS, ICON_SUCCESS_ALT) . ' ' . $message); } elseif ($type == 'caution') { $theAlert = array('params' => 'class="messageStackCaution larger"', 'class' => $class, 'text' => zen_image($template->get_template_dir(ICON_IMAGE_WARNING, DIR_WS_TEMPLATE, $current_page_base,'images/icons'). '/' . ICON_IMAGE_WARNING, ICON_WARNING_ALT) . ' ' . $message); } else { $theAlert = array('params' => 'class="messageStackError larger"', 'class' => $class, 'text' => $message); } for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) { if ($theAlert['text'] == $this->messages[$i]['text'] && $theAlert['class'] == $this->messages[$i]['class']) $duplicate = true; } if (!$duplicate) $this->messages[] = $theAlert; } } function add_session($class, $message, $type = 'error') /////这个函数的作用就是往消息栈里面添加一条信息,跟上面的函数功能一样,只不过是他这里的消息是添加到当前的session里面保存
参数跟上面的函数都一样。
函数原型 function add_session($class, $message, $type = 'error') { if (!$_SESSION['messageToStack']) { $messageToStack = array(); } else { $messageToStack = $_SESSION['messageToStack']; } $messageToStack[] = array('class' => $class, 'text' => $message, 'type' => $type); $_SESSION['messageToStack'] = $messageToStack; $this->add($class, $message, $type); } function reset() ////该函数清空当前的消息栈内容 函数原型 function reset() { $this->messages = array(); } function output($class) /////根据消息的标识来输出消息栈的内容。
参数的意思
$class 该参数是添加消息的时候的消息标识符,即function add($class, $message, $type = ‘error’) 中的参数$class
函数原型:[code] function output($class) {
global $template, $current_page_base;
$output = array();
for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) {
if ($this->messages[$i][‘class’] == $class) {
$output[] = $this->messages[$i];
}
}
// remove duplicates before displaying
// $output = array_values(array_unique($output));
require($template->get_template_dir(‘tpl_message_stack_default.php’,DIR_WS_TEMPLATE, $current_page_base,‘templates’). ‘/tpl_message_stack_default.php’);
}
function size($class)
///消息栈的消息数量。参数为消息的标识符。这个函数主要是判断当前的消息栈中是否有消息。如果有的话就进行输出。
比如<?php if ($messageStack->size('product_info') > 0) echo $messageStack->output('product_info'); ?>
函数原型:

function size($class) { $count = 0; for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) { if ($this->messages[$i]['class'] == $class) { $count++; } } return $count; }