五指CMS技術(shù)培訓(xùn)文稿 (Alpha)

第一部分:簡(jiǎn)單概念

CMS(內(nèi)容管理系統(tǒng))

  • 內(nèi)容管理系統(tǒng)(CMS)管理數(shù)字內(nèi)容的創(chuàng)建和修改庆冕,通常支持多個(gè)用戶協(xié)作管理。
  • 實(shí)現(xiàn)基于WEB的內(nèi)容編輯孙乖、發(fā)布、展示份氧、檢索唯袄。
  • 管理的內(nèi)容包括文本和嵌入圖形,照片蜗帜,視頻恋拷,音頻,地圖等元素厅缺。
  • 大多數(shù)的CMS會(huì)主要解決兩部分功能:前臺(tái)模板的管理蔬顾,后臺(tái)數(shù)據(jù)的管理。
timg.jpg
drupal-wordmark-og-image.png
u=537109767,686934993&fm=26&gp=0.jpg

PHPCMS DEDECMS
WUZHICMS

  • PHP開發(fā)
  • 開源

MVC

MVC模式(Model–view–controller)是軟件工程中的一種軟件架構(gòu)模式湘捎,把軟件系統(tǒng)分為三個(gè)基本部分:模型(Model)诀豁、視圖(View)和控制器(Controller)。

  • 控制器(Controller)- 負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求消痛,對(duì)請(qǐng)求進(jìn)行處理(頁面的路由)且叁。
  • 視圖(View) - 界面設(shè)計(jì)人員進(jìn)行圖形界面設(shè)計(jì)。
  • 模型(Model) - 程序員編寫程序應(yīng)有的功能(實(shí)現(xiàn)算法等等)秩伞、數(shù)據(jù)庫專家進(jìn)行數(shù)據(jù)管理和數(shù)據(jù)庫設(shè)計(jì)(可以實(shí)現(xiàn)具體的功能)逞带。


    v2-30f72a70d6d84065d2147754bf2ad59f_1200x500.jpg

目的

  • 可擴(kuò)展性
  • 可復(fù)用性
  • 可維護(hù)性
  • 靈活性加強(qiáng)

第二部分:五指CMS的結(jié)構(gòu)

  • 專業(yè)版本結(jié)構(gòu):


    TIM圖片20180205230216.png
  • 默認(rèn)版本結(jié)構(gòu):

  • 運(yùn)行機(jī)制

  1. 入口文件 index.php
<?php
/**
 * 程序入口文件
 */

//檢測(cè)PHP環(huán)境
if(PHP_VERSION < '5.2.0') die('Require PHP > 5.2.0 ');
//定義當(dāng)前的網(wǎng)站物理路徑
define('WWW_ROOT',dirname(__FILE__).'/');

require './configs/web_config.php';
require COREFRAME_ROOT.'core.php';

$app = load_class('application');
$app->run();
?>
  1. 配置文件 web_config.php
<?php
defined('WWW_ROOT') or exit('No direct script access allowed');

define('COREFRAME_ROOT',substr(dirname(__FILE__),0,-7).'coreframe'.DIRECTORY_SEPARATOR);
define('CACHE_ROOT',substr(dirname(__FILE__),0,-7).'caches'.DIRECTORY_SEPARATOR);
define('CACHE_EXT','OQ52M');


//勿忘-網(wǎng)站上線后,需要修改下面 3項(xiàng)
define('OPEN_DEBUG',0);//開啟調(diào)試模式纱新?2 服務(wù)器上開發(fā)調(diào)試 展氓;1 本地開發(fā)調(diào)試,遇到錯(cuò)誤終止脸爱;0 關(guān)閉-網(wǎng)站上線后遇汞,需要關(guān)閉該項(xiàng)
define('AUTO_CACHE_TPL',1);//是否自動(dòng)緩存模版,網(wǎng)站上線后,必須關(guān)閉該項(xiàng)
define('ERROR_REPORT',1);//錯(cuò)誤信息現(xiàn)實(shí)級(jí)別:1 空入,顯示高級(jí)別錯(cuò)誤络它,0 關(guān)閉錯(cuò)誤提醒(上線后,使用該項(xiàng)) 2 顯示所有錯(cuò)誤(開發(fā)模式)

//define('TEST_CHECKCODE',1);//1 打開測(cè)試驗(yàn)證碼歪赢,0 正常驗(yàn)證碼
//define('SQL_LOG',1);//記錄操作SQL

define('WWW_PATH','/');//網(wǎng)站安裝路徑化戳,二級(jí)目錄形式為:/mydemo/
define('WEBURL','http://www.zgw.com/');//網(wǎng)站域名

//Cookie配置
define('COOKIE_DOMAIN','');//Cookie 作用域
define('COOKIE_PATH','/');//Cookie 作用路徑
define('COOKIE_PRE','XEt_'); //Cookie 前綴
define('COOKIE_TTL',0); //Cookie 生命周期,0 表示隨瀏覽器進(jìn)程

//附件相關(guān)配置
define('ATTACHMENT_ROOT',WWW_ROOT.'uploadfile/');
define('ATTACHMENT_URL','http://www.zgw.com/uploadfile/');//附件路徑
define('R','http://www.zgw.com/res/');//靜態(tài)文件存儲(chǔ)目錄
define('_KEY','MZymUMYv'); //密鑰,最長(zhǎng)8位
define('LANG','zh-cn');  //網(wǎng)站默認(rèn)語言包

define('FOUNDERS','1'); //網(wǎng)站創(chuàng)始人ID埋凯,多個(gè)ID逗號(hào)分隔
define('TIME_ZONE','Etc/GMT-8');
define('CHARSET','utf-8');
define('POSTFIX','.html');//.html/.htm/.shtml
define('CLOSE',0);//關(guān)閉網(wǎng)站前臺(tái)所有動(dòng)態(tài)PHP功能点楼,包括API
define('_SU','wuzhicms');
//開啟移動(dòng)頁面自動(dòng)識(shí)別
define('SUPPORT_MOBILE',0);//0,不支持移動(dòng)頁面白对,1掠廓,自動(dòng)識(shí)別,動(dòng)態(tài)甩恼,偽靜態(tài)下可用蟀瞧,靜態(tài)頁面通過js判斷跳轉(zhuǎn)到動(dòng)態(tài)地址完成識(shí)別

//默認(rèn)模版配置
define('TPLID','p1');
//開啟站群
define('ENABLE_SITES',0);

define('TEST_CHECKCODE',1);//1 打開測(cè)試驗(yàn)證碼,0 正常驗(yàn)證碼
define('SQL_LOG',0);
//強(qiáng)制刷新css,js緩存
define('VN', uniqid());//正常情況為 define('VN', 1);
  1. core.php
<?php

defined('WWW_ROOT') or exit('No direct script access allowed');
/**
 * 核心文件
 */
define('VERSION','4.0.0');

$GLOBALS = array();
define('SYSTEM_NAME','wuzhicms');
define('IN_WZ',true);
if(ERROR_REPORT==1) {
    error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);
} elseif(ERROR_REPORT==0) {
    error_reporting(0);
} else {
    error_reporting(E_ALL);
}
ini_set('display_errors', 1);

set_exception_handler('log_exception');

//開始運(yùn)行時(shí)間
$GLOBALS['_startTime'] = microtime(true);


if(version_compare(PHP_VERSION,'5.4.0','<')) {
    ini_set('magic_quotes_runtime',0);
    define('MAGIC_QUOTES_GPC',get_magic_quotes_gpc() ? 1 : 0);
} else {
    define('MAGIC_QUOTES_GPC', 0);
}

define('IS_WIN',strstr(PHP_OS, 'WIN') ? 1 : 0);
define('IS_CLI',PHP_SAPI=='cli'? 1 : 0);
define('SYS_TIME', time());
define('HTTP_REFERER', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');

//設(shè)置本地時(shí)差
date_default_timezone_set(TIME_ZONE);
//輸出頁面字符集
header('Content-type: text/html; charset='.CHARSET);
//if(extension_loaded("zlib") && !ob_start("ob_gzhandler")) ob_start();

//將GET媳拴,POST 參數(shù)全部轉(zhuǎn)給 GLOBALS 黄橘,然后注銷 get/post

set_globals();
load_function('common');
autoload();
$_POST['SUPPORT_MOBILE'] = SUPPORT_MOBILE;

/**
 * 加載類函數(shù)
 * @param string $class 類名稱
 * @param string $m 模塊英文名
 * @param string $param 初始化參數(shù)
 * @return class
 */

function load_class($class, $m = 'core', $param = NULL) {
    static $static_class = array();

    //判斷是否存在類,存在則直接返回
    if (isset($static_class[$class])) {
        return $static_class[$class];
    }
    $name = FALSE;
    if (file_exists(COREFRAME_ROOT.'app/'.$m.'/libs/class/'.$class.'.class.php')) {
        $name = 'WUZHI_'.$class;
        if (class_exists($name, FALSE) === FALSE) {
            require_once(COREFRAME_ROOT.'app/'.$m.'/libs/class/'.$class.'.class.php');
        }
    }
    //如果存在擴(kuò)展類屈溉,則初始化擴(kuò)展類
    if ($class!='application' && $class!='admin' && file_exists(COREFRAME_ROOT.'app/'.$m.'/libs/class/EXT_'.$class.'.class.php')) {
        $name = 'EXT_'.$class;
        if (class_exists($name, FALSE) === FALSE) {
            require_once(COREFRAME_ROOT.'app/'.$m.'/libs/class/EXT_'.$class.'.class.php');
        }
    }

    if ($name === FALSE) {
        $full_dir = '';
        if(OPEN_DEBUG) $full_dir = COREFRAME_ROOT.'app/'.$m.'/libs/class/';
        echo 'Unable to locate the specified class: '.$full_dir.$class.'.class.php';
        exit();
    }

    $static_class[$class] = isset($param) ? new $name($param) : new $name();
    return $static_class[$class];
}

/**
 * 加載類函數(shù)
 * @param string $filename 名稱
 * @param string $m 模塊英文名
 */

function load_function($filename, $m = 'core') {
    static $static_func = array();
    //判斷是否加載過,存在則直接返回
    if (isset($static_func[$filename])) {
        return true;
    }
    require_once(COREFRAME_ROOT.'app/'.$m.'/libs/function/'.$filename.'.func.php');
}

/**
 * 加載類函數(shù)
 * @param string $filename 文件名稱
 * @param string $param 參數(shù)名稱
 * @return array|string
 */
function get_config($filename,$param = '') {
    static $config;
    if(isset($config[$filename])) return $param ? $config[$filename][$param] : $config[$filename];
    if(file_exists(WWW_ROOT.'configs/'.$filename.'.php')) {
        $config[$filename] = include WWW_ROOT.'configs/'.$filename.'.php';
    } else {
        $full_dir = '';
        if(OPEN_DEBUG) $full_dir = WWW_ROOT.'configs/';
        echo 'Unable to locate the specified config: '.$full_dir.$filename.'.php';
        exit();
    }
    return $param ? $config[$filename][$param] : $config[$filename];
}

function autoload() {
    $path = COREFRAME_ROOT.'extend/function/*.func.php';
    $auto_funcs = glob($path);
    if(!empty($auto_funcs) && is_array($auto_funcs)) {
        foreach($auto_funcs as $func_path) {
            include $func_path;
        }
    }
}
/**
 * 檢查GLOBALS中是否存在變量
 * @param $key
 * @param int $check_sql 是否sql_replace過濾
 * @return mixed|string
 */
function input($key,$check_sql = 1) {
    if(isset($GLOBALS[$key])) {
        return $check_sql ? sql_replace($GLOBALS[$key]) : $GLOBALS[$key];
    } else {
        return '';
    }
}

function set_globals() {
    if(isset($_GET)) {
        foreach ($_GET as $_key => $_value) {
            $GLOBALS[$_key] = gpc_stripslashes($_value);
        }
        $_GET = array();
    }
    if(isset($_POST)) {
        foreach ($_POST as $_key => $_value) {
            $GLOBALS[$_key] = gpc_stripslashes($_value);
        }
        $_POST = array();
    }
    if(isset($GLOBALS['page'])) {
        $GLOBALS['page'] = max(intval($GLOBALS['page']),1);
        $GLOBALS['page'] = min($GLOBALS['page'],100000000);
    } else {
        $GLOBALS['page'] = 0;
    }
    $_COOKIE = gpc_stripslashes($_COOKIE);
    $GLOBALS['_groupid'] = get_cookie('_groupid');
    if(!$GLOBALS['_groupid']) {
        $GLOBALS['_groupid'] = 4;
    }
}

function p_addslashes($string) {
    if(is_array($string)) {
        $keys = array_keys($string);
        foreach($keys as $key) {
            $val = $string[$key];
            unset($string[$key]);
            $string[addslashes($key)] = p_addslashes($val);
        }
    } else {
        $string = addslashes($string);
    }
    return $string;
}

function p_stripslashes($string) {
    if ( ! is_array($string)){
        return stripslashes($string);
    }
    return array_map('p_stripslashes', $string);
}

function gpc_stripslashes($data) {
    if(MAGIC_QUOTES_GPC) {
        return p_stripslashes($data);
    } else {
        return $data;
    }
}

/**
 * 設(shè)置 cookie
 * @param string $string     變量名
 * @param string $value   變量值
 * @param int $time    過期時(shí)間
 * @param bool $encrypt = true    是否加密存儲(chǔ)
 */
function set_cookie($string, $value = '', $time = 0, $encrypt = true) {
    $time = $time > 0 ? $time : ($value == '' ? SYS_TIME - 3600 : 0);
    $s = $_SERVER['SERVER_PORT'] == '443' ? 1 : 0;
    $string = COOKIE_PRE.$string;
    if($encrypt) $value = encode($value);
    setcookie($string, $value, $time, COOKIE_PATH, COOKIE_DOMAIN, $s);
}

/**
 * 獲取通過 set_cookie 設(shè)置的 cookie 變量
 * @param string $string 變量名
 * @param string $default 默認(rèn)值
 * @return mixed 成功則返回cookie 值抬探,否則返回 false
 */

function get_cookie($string, $default = '', $encrypt = true) {
    $string = COOKIE_PRE.$string;
    return isset($_COOKIE[$string]) ? decode($_COOKIE[$string]) : $default;
}
/**
 *
 * @param string $string 變量名
 * @return array
 */
function p_unserialize($string) {
    if(($ret = unserialize($string)) === false) {
        $ret = unserialize(stripslashes($string));
    }
    return $ret;
}
/**
 * 加密字符串
 *
 * @param $string
 * @param string $key
 */
function encode($string,$key = '') {
    $encode = load_class('encrypt');
    return $encode->encode($string,$key);
}
/**
 * 解密字符串
 *
 * @param $string
 * @param string $key
 */
function decode($string,$key = '') {
    $encode = load_class('encrypt');
    return $encode->decode($string,$key);
}
/**
 * Error handler, passes flow over the exception logger with new ErrorException.
 */
function log_error( $num, $str, $file, $line, $context = null ) {
    if(ERROR_REPORT<2 && $num==8) return '';
    log_exception( new ErrorException( $str, 0, $num, $file, $line ));
}

/**
 * Uncaught exception handler.
 */
function log_exception($e) {
    $file = str_replace(rtrim(COREFRAME_ROOT,'/'),'coreframe->',$e->getFile());
    $file = str_replace(rtrim(WWW_ROOT,'/'),'www->',$file);
    $file = str_replace(rtrim(CACHE_ROOT,'/'),'caches->',$file);
    $data = array();
    $data['type'] = get_class($e);
    $data['msg'] = $e->getMessage();
    $data['file'] = $file;
    $data['line'] = $e->getLine();
    $data['version'] = VERSION;
    $data['php_version'] = PHP_VERSION;
    $data['referer'] = URL();

    if (ERROR_REPORT) {
        if(IS_CLI==0 && !defined('CLI_DISPLAY')) {
            print "<!DOCTYPE html><div style='text-align: center;'>";
            print "<h5 style='color: rgb(190, 50, 50);'>WuzhiCMS Exception Occured:</h5>";
            print "<table style='width: 800px; display: inline-block;'>";
            print "<tr style='background-color:rgb(230,230,230);text-align:left;'><th style='width: 80px;'>Type</th><td>" . $data['type'] . "</td></tr>";
            print "<tr style='background-color:rgb(240,240,240);text-align:left;'><th>Message</th><td>{$data['msg']}</td></tr>";
            print "<tr style='background-color:rgb(230,230,230);text-align:left;'><th>File</th><td>{$file}</td></tr>";
            print "<tr style='background-color:rgb(240,240,240);text-align:left;'><th>Line</th><td>{$data['line']}</td></tr>";
            print "<tr style='background-color:rgb(230,230,230);'><th colspan='2'><a  target='_blank'>Need Help?</a></th></tr>";
            print "</table></div>";
        } else {
            print "------------- WuzhiCMS Exception Occured:------------- \r\n";
            print "Type: {$data['type']} \r\n";
            print "Message: {$data['msg']} \r\n";
            print "File: {$data['file']} \r\n";
            print "Line: {$data['line']} \r\n";
            print date('Y-m-d H:i:s')."\r\n";
        }

        if(OPEN_DEBUG) exit();
    } else {
        $message = "Time: " . date('Y-m-d H:i:s') . "; Type: " . $data['type'] . "; Message: {$e->getMessage()}; File: {$data['file']}; Line: {$data['line']};";
        @file_put_contents(CACHE_ROOT. "logs/error-".CACHE_EXT.'-'.date("ym").".log", $message . PHP_EOL, FILE_APPEND );
    }
}
  1. application.class.php (Controller)
<?php

defined('IN_WZ') or exit('No direct script access allowed');
/**
 * M/F/V 路由
 */
final class WUZHI_application {
    /**
     * @var app子巾,模塊名,取值方式:M
     */
    private $_m;
    /**
     * @var 文件名 取值方式:F
     */
    private $_f;
    /**
     * @var 方法名 取值方式:V
     */
    private $_v;

    /**
     * Class constructor
     */
    public function __construct() {
        self::setconfig();
        define('M',$this->_m);
        define('F',$this->_f);
        define('V',$this->_v);
    }

    /**
     * 設(shè)置路由
     */
    /**
     * 設(shè)置路由
     */
    private function setconfig() {
        $sn = $_SERVER["SERVER_NAME"];
        $route_config = get_config('route_config');
        if(isset($route_config[$sn])) {
            $route_config = $route_config[$sn];
        } else {
            $route_config = $route_config['default'];
        }
        $this->_m = isset($GLOBALS['m']) ? sql_replace($GLOBALS['m']) : $route_config['m'];
        $this->_f = isset($GLOBALS['f']) ? sql_replace($GLOBALS['f']) : $route_config['f'];
        $this->_v = isset($GLOBALS['v']) ? sql_replace($GLOBALS['v']) : $route_config['v'];
        $this->_v = strip_tags($this->_v);
        if(isset($route_config['_get'])) {
            foreach($route_config['_get'] as $key=>$value) {
                $_GET[$key] = $value;
            }
        }
    }

    /**
     * 運(yùn)行
     */
    public function run() {
        $file = $this->load_file();
        if(!defined('IN_ADMIN')) {
            if(CLOSE) {
                $siteconfigs = get_cache('siteconfigs');
                MSG($siteconfigs['close_reason']);
            }
        }
        if (method_exists($file, V)) {
            if (preg_match('/^[_]/i', V)) {
                exit('You are visiting the action is to protect the private action');
            } else {
                call_user_func(array($file, V));
            }
        } elseif(class_exists($GLOBALS['_CLASS_NAME_'],FALSE)) {
            exit('Action:'.V.' not exists.');
        }
    }

    /**
     * 加載文件
     * @param string $filename 文件名
     * @param string $app 所屬模塊
     * @param string $param 初始化參數(shù)
     * @return bool
     */
    public static function load_file($filename = '', $app = '', $param = '') {
        static $static_file = array();
        if(isset($GLOBALS['_su']) && $GLOBALS['_su']== _SU) {
            $_admin_dir = '/admin';
        } else {
            $_admin_dir = '';
        }
        //判斷是否存在類小压,存在則直接返回
        if (isset($static_file[$filename])) {
            return $static_file[$filename];
        }
        if (empty($filename)) $filename = F;
        if (empty($app)) $app = M;
        $filepath = COREFRAME_ROOT.'app/'.$app.$_admin_dir.'/'.$filename.'.php';
        $name = FALSE;
        if (file_exists($filepath)) {
            //$name = 'WUZHI_'.$filename;
            $name = $filename;
            if (class_exists($name, FALSE) === FALSE) {
                require_once($filepath);
            }
        }
        //如果存在擴(kuò)展類线梗,則初始化擴(kuò)展類
        if (file_exists(COREFRAME_ROOT.'app/'.$app.$_admin_dir.'/EXT_'.$filename.'.php')) {
            $name = 'EXT_'.$filename;
            if (class_exists($name, FALSE) === FALSE) {
                require_once(COREFRAME_ROOT.'app/'.$app.$_admin_dir.'/EXT_'.$filename.'.php');
            }
        }
        $GLOBALS['_CLASS_NAME_'] = '';
        if ($name === FALSE) {
            $full_dir = '';
            if(OPEN_DEBUG) {
                $full_dir = COREFRAME_ROOT.'app/'.$app.$_admin_dir.'/';
            } else {
                $full_dir = '/coreframe/app/'.$app.$_admin_dir.'/';
            }
            $filename = strip_tags($filename);
            echo 'Unable to locate the specified filename: '.$full_dir.$filename.'.php';
            exit();
        }
        if (class_exists($name, FALSE) === FALSE) {
            return TRUE;
        }
        $GLOBALS['_CLASS_NAME_'] = $name;
        $static_file[$filename] = isset($param) ? new $name($param) : new $name();
        return $static_file[$filename];
    }
}
  1. app/* (Module)


    TIM圖片20180205233515.png

    image.png

附:index.php

<?php
class index{
    private $siteconfigs;
    public function __construct() {
        $this->db = load_class('db');
        $this->siteid = $_GET['siteid'] ? $_GET['siteid'] : 1;
        $this->siteconfigs = get_cache('siteconfigs_'.$this->siteid);
    }

    /**
     * 網(wǎng)站首頁
     */
    public function init() {
        $isindex = 1;
        $siteconfigs = $this->siteconfigs;
        $seo_title = $siteconfigs['sitename'];
        $seo_keywords = $siteconfigs['seo_keywords'];
        $seo_description = $siteconfigs['seo_description'];
        $categorys = get_cache('category','content');

        $_uid = get_cookie('_uid');

        if(ENABLE_SITES) {
            $siteid = intval($_GET['siteid']);
            if(!$siteid) $siteid = 1;
            $tplid = TPLID.'-'.$siteid;
        } else {
            $tplid = TPLID;
        }
        $language_set = 1;
        include T('content','index',$tplid);
    }
}
  1. 頁面模板(View)


    image.png
image.png

第三部分:常見常用的函數(shù)、方法

  1. 全局函數(shù)
/**
 * 加載類函數(shù)
 * @param string $class 類名稱
 * @param string $m 模塊英文名
 * @param string $param 初始化參數(shù)
 * @return class
 */

function load_class($class, $m = 'core', $param = NULL) {
  ...
}
/**
 * 加載類函數(shù)
 * @param string $filename 名稱
 * @param string $m 模塊英文名
 */

function load_function($filename, $m = 'core') {
    ...
}
/**
 * 加載類函數(shù)
 * @param string $filename 文件名稱
 * @param string $param 參數(shù)名稱
 * @return array|string
 */
function get_config($filename,$param = '') {
  ...
}
/**
 * 設(shè)置 cookie
 * @param string $string     變量名
 * @param string $value   變量值
 * @param int $time    過期時(shí)間
 * @param bool $encrypt = true    是否加密存儲(chǔ)
 */
function set_cookie($string, $value = '', $time = 0, $encrypt = true) {
   ...
}
/**
 * 獲取通過 set_cookie 設(shè)置的 cookie 變量
 * @param string $string 變量名
 * @param string $default 默認(rèn)值
 * @return mixed 成功則返回cookie 值怠益,否則返回 false
 */

function get_cookie($string, $default = '', $encrypt = true) {
 ...
}

...

core/libs/funtion/common.func.php

  1. 數(shù)據(jù)庫操作方法
/**
     * 查詢多條數(shù)據(jù)
     * @param $table 數(shù)據(jù)表名
     * @param array|string $where 條件 仪搔,數(shù)組或者字符串 .如:array('id'=>1,'cid'=>1) 或 `id`=1 AND `cid`=1
     * @param string $field 要查詢的字段
     * @param int $startid 開始索引,如果是從第二條開始蜻牢,那么則為1烤咧,mysql從0開始索引
     * @param int $pagesize 每頁顯示數(shù)量,如果不分頁抢呆,則顯示為總數(shù)
     * @param int $page 當(dāng)前頁
     * @param string $order 排序
     * @param string $group mysql group by 屬性
     * @param string $keyfield 以某字段名為結(jié)果索引
     * @param string $urlrule url規(guī)則
     * @param array $array url規(guī)則中的參數(shù)名和參數(shù)值煮嫌,二維數(shù)組
     * @param int $colspan 分頁顯示總列數(shù)
     * @return array
     */
    final public function get_list($table, $where = '', $field = '*', $startid = 0, $pagesize = 200, $page = 0, $order = '', $group = '', $keyfield = '', $urlrule = '',$array = array(),$colspan = 10) {
        ..
    }

/**
     * 獲取單條記錄查詢
     * @param $table        表名稱
     * @param $where        查詢條件
     * @param $field        需要查詢的字段[多個(gè)字段用逗號(hào)隔開:例如,field1,field2]
     * @param $startid      開始的條數(shù)抱虐,limit $startid,10
     * @param $order        排序方式    [默認(rèn)按數(shù)據(jù)庫默認(rèn)方式排序]
     * @param $group        分組方式    [默認(rèn)為空]
     * @return array/null   數(shù)據(jù)查詢結(jié)果集,如果不存在昌阿,則返回空
     */
    final public function get_one($table, $where = '', $field = '*', $startid = 0, $order = '', $group = '') {
        ...
    }
/**
     * 執(zhí)行添加記錄操作
     * @param $data         要增加的數(shù)據(jù),參數(shù)為數(shù)組。數(shù)組key為字段值懦冰,數(shù)組值為數(shù)據(jù)取值
     * @param $returnid 是否返回新建ID號(hào)
     * @param $replace_into 是否采用 replace into的方式添加數(shù)據(jù)
     * @return boolean
     */
    final public function insert($table, $data, $returnid = TRUE, $replace_into = FALSE) {
        ...
    }
/**
     * 執(zhí)行更新記錄操作
     * @param $data         要更新的數(shù)據(jù)內(nèi)容灶轰,參數(shù)可以為數(shù)組也可以為字符串,建議數(shù)組刷钢。
     *                      為數(shù)組時(shí)數(shù)組key為字段值笋颤,數(shù)組值為數(shù)據(jù)取值
     * @param $where        更新數(shù)據(jù)時(shí)的條件,可為數(shù)組或字符串
     * @return boolean
     */
    final public function update($table, $data, $where = '') {
        ...
    }
/**
     * 執(zhí)行刪除記錄操作
     * @param $where        刪除數(shù)據(jù)條件,不充許為空。
     * @return boolean
     */
    final public function delete($table, $where = '') {
        ...
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末闯捎,一起剝皮案震驚了整個(gè)濱河市椰弊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓤鼻,老刑警劉巖秉版,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異茬祷,居然都是意外死亡清焕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門祭犯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秸妥,“玉大人,你說我怎么就攤上這事沃粗≈嗑澹” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵最盅,是天一觀的道長(zhǎng)突雪。 經(jīng)常有香客問我,道長(zhǎng)涡贱,這世上最難降的妖魔是什么咏删? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮问词,結(jié)果婚禮上督函,老公的妹妹穿的比我還像新娘。我一直安慰自己激挪,他們只是感情好辰狡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灌灾,像睡著了一般搓译。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锋喜,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天些己,我揣著相機(jī)與錄音豌鸡,去河邊找鬼。 笑死段标,一個(gè)胖子當(dāng)著我的面吹牛涯冠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逼庞,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼蛇更,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了赛糟?” 一聲冷哼從身側(cè)響起派任,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎璧南,沒想到半個(gè)月后掌逛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡司倚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年豆混,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片动知。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡皿伺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盒粮,到底是詐尸還是另有隱情鸵鸥,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布丹皱,位于F島的核電站脂男,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏种呐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一弃甥、第九天 我趴在偏房一處隱蔽的房頂上張望爽室。 院中可真熱鬧,春花似錦淆攻、人聲如沸阔墩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啸箫。三九已至,卻和暖如春伞芹,著一層夾襖步出監(jiān)牢的瞬間忘苛,已是汗流浹背蝉娜。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扎唾,地道東北人召川。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像胸遇,于是被迫代替她去往敵國(guó)和親荧呐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容