module_invoke函数就是为了激活一个模块的钩子函数,然后还可以把相关的参数传递到钩子函数里。
举例如下:
上面的解释如下,调用ixi模块的ixi_load函数,同时把array('wid'=>$wid), 'ixi_wpage'这两个参数传递给ixi_load函数。
下面是ixi.module里的ixi_load函数的内容
/**
* Get inforation from table create by ixi project.
*
* @param array $condition
* $condition = array('id'=>1);
* @param string $table_name
* @param int $pager_query
* @param string $orderby
* @param string $order
*
* @return array / false
*/
function ixi_load($condition=array(), $table_name, $pager_query=0, $orderby='', $order='DESC'){
$query = array();
$params = array();
$placeholder = '%d';
$sql = 'SELECT * FROM {'.$table_name.'}' ;
foreach ($condition as $key=>$value){
if (is_string($value)) {
$placeholder = "'%s'";
}
$query[] = "$key=$placeholder";
$params[] = $value;
}
if (count($query)) {
$sql .= ' WHERE '.implode(' AND ', $query);
}
if ($orderby) {
$sql .= " ORDER BY $orderby ".$order;
}
if ($pager_query) {
$result = 6">pager_query($sql, $pager_query, 0, NULL, $params);
}else {
$result = 6">db_query($sql, $params);
}
if (db_num_rows($result)) {
while ($row=6">db_fetch_object($result)){
$items[] = $row;
}
return $items;
}else{
return false;
}
}