ThinkPHP 自定义函数

本文介绍了一年使用ThinkPHP经验中封装的一些常用函数,包括分页样式定制、数组分页、排序等功能,便于快速调用并提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用ThinkPHP开发已经一年,封装了一些常用的函数,方便调取......

/**
 * 获取当前页码
 * @return int
 */
function get_current()
{
    $PageParam = C('VAR_PAGE');
    return I("get.$PageParam", 1);
}

/**
 * 分页样式定制
 * @param int $total     总记录数
 * @param int $limit     每页显示多少条记录
 * @param int $rollPage  显示多少个页码
 * @return array
 */
function get_page($total,$limit=0,$rollPage=5)
{
    $ListRows = C('PAGE_LIST_ROWS');
    $limit = empty($limit) ? $ListRows : $limit;
    import("Common.Org.Page");
    $Page = new \Common\Org\Page($total, $limit);// 实例化分页类
    $Page->lastSuffix = false; // 最后一页不要显示页码数
    $Page->rollPage = $rollPage; // 显示的页码个数
    $Page->setConfig('header', '条记录,每页显示' . $limit . '条');
    $Page->setConfig('first', '第一页');
    $Page->setConfig('prev', '上一页');
    $Page->setConfig('theme', '<span>共有%TOTAL_ROW% %HEADER%</span><ul class="pagination"> %FIRST%%UP_PAGE%%LINK_PAGE%%DOWN_PAGE%%END%</ul>');
    $Page->setConfig('next', '下一页');
    $Page->setConfig('last', '最后一页');
    $current = get_current();// 当前页码
    return array(
        'show' => $Page->show(),
        'page' => sprintf('%d,%d', $current, $limit),
        'limit' => sprintf('%d,%d', $Page->firstRow, $Page->listRows),
    );
}

/**
 * 分页样式定制(数组分页)
 * @param array $list 需要分页的数组
 * @param int $limit 每页显示多少条记录
 * @param int $rollPage 显示多少个页码
 * @return array
 */
function array_page(&$list,$limit=0,$rollPage=5)
{
    if (!is_array($list)) return null;
    $count = count($list);
    $PageInfo = get_page($count, $limit, $rollPage);
    list($firstRow, $listRows) = explode(',', $PageInfo['limit']);
    $data = array_slice($list, $firstRow, $listRows);
    return array(
        'data' => $data,
        'show' => $PageInfo['show'],
    );
}

/**
 * 填充隐藏域
 * @return string
 */
function get_fill_info()
{
    $UrlModel = C('URL_MODEL');//URL访问模式
    $str = '';
    if ($UrlModel == 0) {
        $module = C('VAR_MODULE');//默认模块获取变量
        $controller = C('VAR_CONTROLLER'); //默认控制器获取变量
        $action = C('VAR_ACTION');//默认操作获取变量
        $str .= '<input type="hidden" name="' . $module . '" value="' . MODULE_NAME . '">';
        $str .= '<input type="hidden" name="' . $controller . '" value="' . CONTROLLER_NAME . '">';
        $str .= '<input type="hidden" name="' . $action . '" value="' . ACTION_NAME . '">';
    } else if ($UrlModel == 3) {
        $PathInfo = C('VAR_PATHINFO');
        $interval = C('URL_PATHINFO_DEPR');
        $str .= '<input type="hidden" name="' . $PathInfo . '" value="' . MODULE_NAME . $interval . CONTROLLER_NAME . $interval . ACTION_NAME . '">';
    }
    return $str;
}

/**
 * 获取排序的信息
 * @param string $default 默认排序,例:ID desc
 * @param int $type 返回类型,0:字符串,1数组
 * @return string 例:"ID desc"
 */
function get_order($default='',$type=0)
{
    $interval = '__'; // 排序分割符
    $order = I('get.order'); // 排序信息 排序的字段和排序规则,UserID__desc
    if (empty($order)) {
        $sortName = '';
        $sort = '';
    } else {
        list($sortName, $sort) = explode($interval, $order);
    }
    $sort = strtolower($sort);
    if ($type) {
        return array($sortName, $sort);
    } else {
        if (empty($order)) {
            return $default;
        }
        return sprintf('%s %s', $sortName, $sort);
    }
}

/**
 * 设置排序
 * @param string $column 需要排序的字段
 * @param string $ColumnZh 需要排序的字段的名字
 * @return string a标签
 */
function set_order($column,$ColumnZh)
{
    $interval = '__'; // 排序分割符
    list($sortName, $sort) = get_order('', 1);

    if ($sortName == $column) {
        if ($sort == 'desc') {
            $NextSort = 'asc'; // 下一次排序方式
            $NowTip = '<i class="glyphicon glyphicon-arrow-down"></i>'; // 当前排序图标
        } else {
            $NextSort = 'desc';
            $NowTip = '<i class="glyphicon glyphicon-arrow-up"></i>';
        }
    } else {
        $NextSort = 'desc'; // 默认下一排序从大到小
        $NowTip = ''; // 默认当前排序图标为空
    }
    $parameter = $_GET; // 获取参数
    $parameter['order'] = '[ORDER]';
    $url = U(ACTION_NAME, $parameter);
    $ColumnSort = sprintf('%s%s%s', $column, $interval, $NextSort);
    $href = str_replace(urlencode('[ORDER]'), $ColumnSort, $url);
    return '<a href="' . $href . '">' . $ColumnZh . $NowTip . '</a>';
}

/**
 * 排序
 * @param array $a
 * @param array $b
 * @return int
 */
function my_sort_all($a,$b)
{
    list($SortName, $sort) = get_order('', 1);
    $aa = $a[$SortName];
    $bb = $b[$SortName];
    if ($aa == $bb) return 0;
    if ($sort == 'desc') {
        return ($aa < $bb) ? 1 : -1;
    } else {
        return ($aa < $bb) ? -1 : 1;
    }
}

/**
 * 判断是否存在数据表
 * @param string $table
 * @param string $connect
 * @param string $db
 * @return bool
 */
function whether_exist_table($table,$connect,$db='')
{
    $result = M('', '', $connect)->query("SHOW TABLES LIKE '" . $table . "'");
    if ($result) return true;
    return false;
//    $sql = "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '$db' AND table_name = '$table'";
}

若有不足之处,请谅解!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值