/coremvc

Automatically exported from code.google.com/p/coremvc

Primary LanguagePHP

【CoreMVC 产品说明】

CoreMVC是一款灵巧的PHP开源框架。

2011年2月8日

〖版权说明〗

CoreMVC遵从new BSD许可证,所以您可以在法律允许的范围以内任意修改和使用,包括商业应用。
请保留core.php开头的版权信息,但您可以添加其他信息。
/**
 * CoreMVC核心模块
 * 
 * @version 1.4.0 alpha 2
 * @author Z <602000@gmail.com>
 * @link http://www.coremvc.cn/
 */


〖功能说明〗

● 完整功能说明

1. 模块驱动开发,将被访问和被引用的模块统一起来。

2. 通过参数设置,能方便的自动导入类文件。

3. 通过参数设置,能方便的实现单入口模式。

4. 引用模块被访问时,能实现自动隐藏功能。

5. 将MVC统一起来,减少文件操作的工作量。

6. 视图方法可根据不同的模板技术进行扩展。

7. 数据库可根据不同的连接方式进行扩展。

8. 强大的ORM功能,SQL语句和数组参数可灵活选择。

9. 数据库连接自动化,可使用多个连接。

10. 整个核心文件只有:1个类、39项设置、21个方法。


● 版本更新说明

CoreMVC 1.4.0 alpha 2 相对于 CoreMVC 1.4.0 alpha 1 的改进
--------------------------------------------
1. framework_action参数增加了[arg:x]的选项,可用于命令行模式的参数。


CoreMVC 1.4.0 alpha 1 相对于 CoreMVC 1.3.0版本的改进
--------------------------------------------
1. 修正了core::prepare的other参数数组以空格连接。

2. 修正了core::selects的第5个参数array下标可定义数组。

3. 修正了数据库在调试状态下取不到影响行数的问题。


CoreMVC 1.3.0 相对于 CoreMVC 1.2.0版本的改进
--------------------------------------------
1. 分离了core::init、core::stub、core::path、core::main几个方法的互相调用,关系更清晰。

2. 修改了core::stub,使得执行该函数时就能自动初始化。

3. 修改了debug_backtrace和sys_get_temp_dir函数,兼容PHP 5.1.x版本。

4. 增加了强制参数转SQL的参数设置。

5. 修改了core::view,支持smarty类型自动注册的view函数,类似于include。

6. 修改了.htaccess文件设置环境变量的方法,现在可以直接使用数组了。

7. 增加了core::view的视图全局变量的功能,并可以在配置文件里设置。

8. 增加了扩展类库:数据库链式操作。

9. 增加了core/config.php作为固定的默认配置,.htaccess作为活动的默认配置。

10.增强了core::main的路由功能,支持多action的方式。

11.增加了模板扩展:SaeSmarty2。


CoreMVC 1.2.0 相对于 CoreMVC 1.1.0版本的改进
--------------------------------------------
1. 修改了配置设置的方法,由原来的类常量改成单一的类静态变量,可以分步配置了。

2. 修改了core::init代码,修正了继承类初始化和核心类初始化变量不共享的问题,并支持导入环境变量配置或配置文件。

3. 修改了core::path在默认配置下模板和配置都使用相对路径。

4. 优化了core::connect并增加了参数类型。

5. 增加了core::main的一次跳转执行函数的功能,以便于模块风格下增加前端验证操作。

6. 增加了数据库扩展:SaeMysql5。

7. 增加了core::main自动隐藏信息的可设置功能。


CoreMVC 1.1.0 相对于 CoreMVC 1.0.0版本的改进
--------------------------------------------
1. 增加了模板路径替换的参数设置。

2. 扩展了框架控制开关的参数设置。

3. 增加了core::init取单个参数的功能。

4. 增加了自动载入顺序的参数设置。

5. 增加了数据库调试功能。

6. 增加了core:selects指定表名功能。

7. 增加了扩展类库开关的参数设置。

8. 去掉了包括数据库和视图在内的扩展文件的前缀。

9. 增强了自动载入功能可在设置参数阶段生效并可自定义载入函数。

10.目前可扩展的类库有:数据库扩展:pdo5、adodb5、adodb5zip;模板扩展:smarty2、smarty2zip、smarty3;其他扩展:Zend、Symfony、PHPUnit、PHPExcel、PHPMailer、PHPCharts。

11.增强了core::init功能,支持继承类的独立配置。


CoreMVC 1.0.0 相对于 CoreMVC 0.7.3版本的改进
--------------------------------------------
1. 增加了core::path和core::init方法。

2. 增加了针对多个方法的动态配置。

3. 去掉了core::stub里的反向路由。

4. 增加了core::main里单入口功能。

5. 去掉了core::view里级连模板功能。

6. 增加了view_smarty.php、db_adodb.php里设置路径的地方。

7. 去掉了db_static_binding常量,恢复自动判断版本。

8. 增加了使用SQL语句操作ORM的功能。

9. 彻底修改了core::prepare函数功能,可以选择生成带与不带参数的SQL语句了。

10.修改了core::sequence的实现方式,更加高效。

11.实例函数字段参数下标从0开始了,原来是从1开始,无主键现在使用-1。

12.增加了config参数设置配置文件。

13.修改了核心文件所在的目录为“@”开头,原来是“./”开头。

14.修改了core::structs和core::selects生成数据的结构参数,更直观和易用。

15.pdo和adodb现在作为扩展模块存在,虽然pdo和adodb暂时只支持mysql数据库,但更容易扩展。


〖测试说明〗

● 单元测试说明

测试数据库:test

测试帐号:ODBC(密码空)

测试目录:tests目录

测试脚本:PHPUnit-3.4\phpunit.bat --bootstrap PHPUnit-3.4/bootstrap.php --include-path ../src/svn/trunk ../src/svn/trunk/tests
(该脚本适合在CoreAMP上执行,并且core.php和tests目录都在svn/trunk目录上)



〖展望计划〗

1. 扩展pdo、adodb和其他的模块,支持更多的数据库和连接方式。

2. 增加CoreMVC的例子和适合CoreMVC的类库。

3. 将CoreMVC编写成一个PHP扩展,以增加运行效率。



【CoreMVC 简易教程(结构)】


〖目录结构〗

core.php				核心程序,CoreMVC核心程序,必须有。

core/					扩展目录,CoreMVC扩展目录,可删除。
 │
 ├─ pdo5.php			模型扩展,PDO连接器。
 │
 ├─ adodb5.php			模型扩展,Adodb连接器。
 │
 ├─ adodb5/				模型扩展,Adodb类库。
 │
 ├─ adodb5zip.php			模型扩展,AdodbZip连接器。
 │
 ├─ adodb5zip/AdodbZip.php		模型扩展,Adodb自动装载器。
 │
 ├─ SaeMysql5.php			模型扩展,SaeMysql连接器。
 │
 ├─ smarty2.php			视图扩展,Smarty 2.x连接器。
 │
 ├─ smarty2/			视图扩展,Smarty 2.x类库。
 │
 ├─ smarty2zip.php			视图扩展,SmartyZip连接器。
 │
 ├─ smarty2zip/SmartyZip.php	视图扩展,Smarty自动装载器。
 │
 ├─ smarty3.php			视图扩展,Smarty 3.x连接器。
 │
 ├─ smarty3/			视图扩展,Smarty 3.x类库。
 │
 ├─ SaeSmarty2.php			视图扩展,SaeSmarty连接器。
 │
 ├─ SaeMemcacheWrapper2.php		视图扩展,saemc2协议。
 │
 ├─ chain.php			类库扩展,数据库链式操作。
 │
 ├─ Zend.php			类库扩展,Zend类自动载入程序。
 │
 ├─ Zend/				类库扩展,Zend类库。
 │
 ├─ PHPMailer.php			类库扩展,PHPMailer自动载入程序。
 │
 ├─ PHPMailer/			类库扩展,PHPMailer类库。
 │
 ├─ PHPCharts.php			类库扩展,PHPCharts自动载入程序。
 │
 ├─ PHPCharts/			类库扩展,PHPCharts类库。
 │
 └─ .htaccess			配置文件,用于Apache服务器的访问限制。

readme.txt				说明文档,CoreMVC的产品说明和简易教程,可删除。

tests/					测试目录,对核心程序进行单元测试的目录,可删除。


〖扩展程序〗

模型扩展
pdo5		需开启相关的pdo扩展
adodb5		需自行下载相关类库到扩展目录的adodb5目录
adodb5zip
SaeMysql5

视图扩展
smarty2		需自行下载相关类库(libs目录下)到扩展目录的smarty2目录
smarty2zip
smarty3		需自行下载相关类库(libs目录下)到扩展目录的smarty3目录
SaeSmarty2	需自行下载相关类库(libs目录下)到扩展目录的SaeSmarty2目录,并保证存在SaeMemcacheWrapper2.php


类库扩展(其他扩展还在测试)
chain
Zend		需自行下载相关类库(library目录下)到扩展目录
PHPExcel	需自行下载相关类库(Classes目录下)到扩展目录
PHPMailler	需自行下载相关类库(3个类文件)到扩展目录的PHPMailer目录
PHPCharts	需自行下载相关类库(class目录下和整个font目录)到扩展目录的PHPCharts目录


〖框架结构〗

文件三类型:模块  配置  模板───┐
 (MCT)   Module Config Template │
      │            │
      ├───┬───┐    │
      │   │   │    │
模块三段式:导入  定义  执行   │
 (IDE)   Import Define Execute  │
          │        │
      ┌───┼───┐    │
      │   │   │    │
框架三步曲:模型  视图  控制   │
 (MVC)   Model  View  Controler │
          │        │
          └────────┘

● 模块文件:被用户访问或被程序引用的文件,例如:
foo.php

● 配置文件:被程序引用用于设置参数的文件,例如:
config.php

● 模板文件:视图所需要的单独的文件,例如:
foo/view.tpl


● 导入部份:模块中导入其他模块的部份,例如:
/**
 * 导入(import)
 */
class_exists ('core') or require_once 'core.php';

● 定义部份:模块中定义模块的部份,例如:
/**
 * 定义(define)
 */
class foo extends core { ... }

● 执行部份:模块中执行代码的部份,例如:
/**
 * 执行(execute)
 */
foo::stub () and foo::main ();


● 模型方法:模块定义的数据模型的方法。使用动态类型定义方法,例如:
public function foo ( ... ) { ... }

● 视图方法:模块定义的显示模板的方法。可在控制方法中直接使用视图方法,例如:
self::view (__CLASS__ . '/' . __FUNCTION__ '.tpl');

● 控制方法:模块定义的控制流程的方法。使用静态类型定义方法,例如:
final static public function foo ( ... ) { ... }



【CoreMVC 简易教程(模块)】


〖模块驱动开发〗

 ┌────┐  ┌────┐
┌┤设计模块├──┤开发模块├┐
│└────┘  └────┘│
│              │
└─────重构模块─────┘

设计模块:将需求转化为模块,模块之间保持低耦合度,确定模块要实现的功能。

开发模块:在模块内实现所需的功能,保持功能之间的逻辑关系,厘清模块之间的调用关系。

重构模块:根据需求和用途继续优化模块结构,以达到重用和扩展效果,并提高运行效率。


● 模块的设计原则

需求用途:根据需求和用途分成几个独立的模块。

耦合程度:模块和模块之间的耦合度尽可能疏松。

重用程度:重用度高的部份可以设计成单独模块。

模块大小:大小适宜同时兼顾开发运行管理效率。


● 模块的开发原则

易于设计:模块之间能体现泛化、包含、扩展的关系。

易于开发:尽量用PHP内部函数,减少模块间的调用。

易于测试:代码符合使用单元测试的功能。

易于部署:模块可以很方便的组合,可快速部署和部署多个。


〖模块之间关系〗

┌──────┐ ┌────┐
│ 应用模块 ├─┤    │
│┌────┐│ │独立模块│
││核心模块├┼─┤    │
│└────┘│ └────┘
└──────┘

● 核心模块:用于建立核心框架的模块。

● 应用模块:直接针对业务应用的模块。

● 独立模块:常用类库相对独立的模块。



【CoreMVC 简易教程(框架)】


〖核心模块设计〗


● 访问核心模块(ACM)

┌───────────┐
│   应用模块    │
│┌┄┄┄┄┄┄┄┄┄┐│ ┌────┐
│┆ 访问核心模块= ├┼┄┤配置文件│
│┆核心模块+直接访问┆│ └────┘
│└┄┄┄┄┬┄┄┄┄┘├─┐
└─────┼─────┘ │
      └───────┘

该设计模式用于将核心模块直接作为单入口文件,需要设置核心模块里的参数。
配置文件是是可选的,在核心模块指定配置文件即可。例子如下:
<?php
	const main_framework_enable = true;			// 启用框架开关,使用单入口方式
	const main_framework_require = 'classes/[go].php';	// 自动导入classes目录下的go参数的php文件
	const main_framework_module = '[go]';			// 自动使用go参数的自定义类
	const main_framework_action = '[do]';			// 自动调用static public function定义的方法
?>



● 桥接核心模块(BCM)

┌──────┐
│ 应用模块 │
│┌┄┄┄┄┐│ ┌──────┐ ┌────┐
│┆核心模块┆├─┤桥接核心模块├┄┤配置文件│
│└┄┬┄┄┘│ └──┬───┘  └────┘
└──┼───┘    │
   └────────┘

该设计模式用于多个项目共用一个核心模块,桥接核心模块导入核心模块后负责设置相关参数。
配置文件是是可选的,在桥接核心模块里导入设置即可。例子如下:
<?php
/**
 * 导入(import)
 */
require_once dirname (__FILE__) . '/../core.php';

/**
 * 执行(execute)
 */
core::init('@config.php');
?>


● 配置核心模块(CCM)

┌───────────┐
│   应用模块    │
│┌─────────┐│ ┌────┐
││ 配置核心模块= ├┼┄┤配置文件│
││核心模块+配置参数││ └────┘
│└─────────┘│ 
└───────────┘

该设计模式用于单个项目,核心模块可设置参数。
配置文件是是可选的,在核心模块指定配置文件即可。例子如下:
<?php
	const config = '@config.php';	// 使用核心模块所在目录下config.php为配置文件
?>


● 增强核心模块(ECM)

┌───────────┐
│   应用模块    │
│┌─────────┐│ ┌────┐
││ 增强核心模块= ├┼┄┤配置文件│
││核心模块+增强代码││ └────┘
│└─────────┘│
└───────────┘

该设计模式用于较大规模的项目,可对核心模块进行改造增加方法以获得更强的功能。
配置文件是是可选的,在核心模块指定配置文件即可。


● 继承核心模块(ICM)

┌────────┐
│  应用模块  │
│┌──────┐│ ┌────┐
││继承核心模块├┼┄┤配置文件│
││┌────┐││  └────┘
│││核心模块│││
││└────┘││
│└──────┘│
└────────┘

该设计模式用于较大规模的项目,可对核心模块进行改造,但保持核心模块不变可随时升级。
配置文件是是可选的,在继承核心模块里导入设置即可。例子如下:
<?php
/**
 * 导入(import)
 */
require_once dirname (__FILE__) . '/core.php';

/**
 * 定义(define)
 */
class base extends core { }

/**
 * 执行(execute)
 */
base::init(require dirname (__FILE__) . '/config.php');
?>


● 外部核心模块(XCM)

┌────┐ ┌──────┐ ┌────┐
│应用模块├─┤外部核心模块├┄┤配置文件│
└────┘ └──────┘ └────┘

该设计模式用于已有框架或面向过程的项目,仅将核心文件当作ORM工具使用。
配置文件是是可选的,在外部核心模块里导入设置即可。


〖应用模块设计〗


● 继承应用模块(IAM)

┌──────┐
│继承应用模块│
│┌────┐│ ┌────┐
││核心模块│├┄┤独立模块│
│└────┘│ └────┘
└──────┘

该设计模式用于开发新的项目,使用CoreMVC框架。
独立模块是可选的,可被继承应用模块使用。例子如下:
<?php
/**
 * 导入(import)
 */
require_once dirname (__FILE__) . '/core.php';

/**
 * 定义(define)
 */
class foo extends core { ... }

/**
 * 执行(execute)
 */
foo::stub () and foo::main ();
?>


● 路由应用模块(RAM)

┌──────┐ ┌────┐ ┌────┐
│路由应用模块├─┤核心模块├┄┤配置文件│
└──┬───┘ └────┘ └─┬──┘
   │              │
   └──────────────┘

该设计模式用于单点路由方式的的项目,使用CoreMVC框架。
配置文件是可选的,可以直接在路由模块里写配置。例子如下:
<?php
/**
 * 导入(import)
 */
require_once dirname (__FILE__) . '/core.php';

/**
 * 执行(execute)
 */
core::init (require 'config.php');
core::stub () and foo::main ();
?>


● 外部应用模块(XAM)

┌────┐ ┌──────┐ ┌────┐
│核心模块├─┤外部应用模块├┄┤独立模块│
└────┘ └──────┘ └────┘

该设计模式用于修改已有项目,仅将核心文件当作ORM工具使用:
独立模块是可选的,可被继承应用模块使用。以下是例子:
<?php
/**
 * 导入(import)
 */
require_once dirname (__FILE__) . '/core.php';

/**
 * 执行(execute)
 */
// ......
$table_arr = core::selects( ... );
// ......
?>



〖模板文件设计〗


● 分块模板文件(BTF)

         ┌──────┐
       ┌─┤分块模板文件│
┌────┐ │ └──────┘
│应用模块├─┤
└────┘ │ ┌──────┐  
       └─┤分块模板文件│
         └──────┘ 

该设计模式用于较为统一的页面显示,带有统一的页头和页尾,例如:
self::view ('common/head.tpl');
self::view (__CLASS__ . '/' . __FUNCTION__ '.tpl');
self::view ('common/tail.tpl');


● 公用模板文件(CTF)

┌────┐
│模板文件├─┐
└────┘ │ ┌──────┐
       ├─┤公用模板文件│
┌────┐ │ └──────┘ 
│模板文件├─┘
└────┘ 

该设计模式用于不同模板显示相同样式的区块,例如:
<?php core::view ('common/pagination.tpl'); ?>



【CoreMVC 简易教程(配置)】


〖核心模块配置一览〗

class core {

	/*
	 * 配置文件
	 */
	private static $config = ''; // 配置文件,在初始化时会自动载入该配置文件,可以是.php或.ini文件

	/*
	 * 配置参数
	 */
	private static $config = array (

		/*
		 * 框架配置
		 */
		'autoload_enable' => '', // 自动载入开关

		'autoload_path' => '', // 自动载入路径

		'autoload_extensions' => '', // 自动载入后缀

		'autoload_prepend' => '', // 自动载入顺序

		'framework_enable' => '', // 框架控制开关

		'framework_function' => '', // 框架控制的托管函数

		'framework_require' => '', // 框架控制的包含文件

		'framework_module' => '', // 框架控制的模块参数

		'framework_action' => '', // 框架控制的动作参数

		'framework_parameter' => '', // 框架控制的传参参数

		'hide_info' => '', // 页面隐藏信息

		'hide_info_cli' => '', // 页面隐藏信息(cli)

		'hide_info_web' => '', // 页面隐藏信息(web)

		'extension_enable' => '', // 扩展模块开头

		'extension_path' => '', // 扩展模块路径

		'extension_prepend' => '', // 扩展路径顺序

		'config_path' => '', // 配置文件顺序

		/*
		 * 视图配置
		 */
		'template_path' => '', // 视图模板路径

		'template_search' => '', // 视图模板路径标识符

		'template_replace' => '', // 视图模板路径替换值

		'template_type' => '', // 视图模板类型

		/*
		 * 数据库配置
		 */
		'connect_provider' => '', // 数据库提供类型

		'connect_dsn' => '', // 数据库连接字符串

		'connect_type' => '', // 数据库连接类型

		'connect_server' => '', // 数据库连接服务器

		'connect_username' => '', // 数据库连接帐号

		'connect_password' => '', // 数据库连接密码

		'connect_new_link' => '', // 数据库连接新连接参数

		'connect_client_flags' => '', // 数据库连接客户端参数

		'connect_dbname' => '', // 数据库连接初始数据库

		'connect_charset' => '', // 数据库连接编码

		'connect_port' => '', // 数据库连接端口号

		'connect_socket' => '', // 数据库连接socket值

		'connect_driver_options' => '', // 数据库连接选项值

		'prefix_search' => '', // 表名前缀标识符

		'prefix_replace' => '', // 表名前缀替换值

		'debug_enable' => '', // 数据库调试开头

		'debug_file' => '', // 数据库调试日志文件

	);

}


〖核心模块配置说明〗

● $config静态变量既可以设置配置文件所在位置,也可以直接定义,还可以通过.htaccess的环境变量来定义。
《.htaccess》
SetEnv	core_config	1
SetEnv	core_config_autoload_path	@modules

《.htaccess》
SetEnv	core_config	@config.php


● 运行时设置属性,配置文件如:
<?php
return array(
	'autoload_enable' => true,
	'autoload_path' => '@modules',
	'framework_enable' => true,
	'template_path' => '@templates',
	'template_type' => 'smarty',
	'connect_provider' => 'pdo',
	'connect_dsn' => 'mysql:host=localhost;dbname=test',
	'connect_username' => 'root',
	'connect_password' => '',
	'connect_driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''),
);
?>

● 运行时可设置配置参数的有以下方法:
<?php
core::init($config_file);

core::init($config_array);

core::init(require $config_file);
?>



【CoreMVC 简易教程(方法)】


〖核心模块方法一览〗

<?php
class core {
	
	/*
	 * 控制方法(静态调用)
	 */
	
	static public function init() {} // 初始化函数(可继承)
	
	static public function stub() {} // 存根函数(可继承)
	
	static public function main() {} // 入口函数(可继承)
	
	static public function path() {} // 路径函数
	
	
	/*
	 * 视图方法(静态调用)
	 */
	
	static public function view() {} // 视图函数(可继承)
	
	
	/*
	 * 模型方法
	 */
	
	// 第一组(静态调用)
	static public function connect() {} // 数据库连接
	
	static public function execute() {} // 执行SQL语句
	
	static public function prepare() {} // 准备SQL语句
	
	static public function sequence() {} // 生成自增序列(可继承)

	// 第二组(静态调用)
	static public function structs() {} // 静态构造函数(可继承)
	
	static public function selects() {} // 静态选择函数(可继承)
	
	static public function inserts() {} // 静态插入函数(可继承)
	
	static public function updates() {} // 静态修改函数(可继承)
	
	static public function deletes() {} // 静态删除函数(可继承)
	
	static public function replaces() {} // 静态更新函数(可继承)
	
	// 第三组(实例调用)
	public function struct() {} // 实例构造函数(可继承)
	
	public function select() {} // 实例选择函数(可继承)
	
	public function insert() {} // 实例插入函数(可继承)
	
	public function update() {} // 实例修改函数(可继承)
	
	public function delete() {} // 实例删除函数(可继承)
	
	public function replace() {} // 实例更新函数(可继承)

}
?>


〖核心模块方法说明〗


● 方法功能说明

○ Controller
--------------------
core::init	初始化函数
		1. 【基础功能】设置各类参数,返回参数数组。

core::stub	存根函数(可继承)
		1. 【基础功能】设置存根参数,返回参数数组。
		2. 【基础功能】自动载入功能,默认关闭。
		3. 【基础功能】判断访问或者引用,返回true/false(访问/引用)。

core::main	入口函数(可继承)
		1. 【基础功能】设置入口参数,返回参数数组。
		2. 【基础功能】使用框架功能,默认关闭。
		3. 【基础功能】模拟文件隐藏效果,返回true/false(框架/隐藏)。
		
core::path	路径函数
		1. 【基础功能】设置路径参数,返回参数数组。
		2. 【基础功能】返回转换路径,'@'开头相对核心文件路径。
		3. 【基础功能】返回扩展路径,默认相对核心文件类名路径。
		4. 【基础功能】返回视图路径,默认相对于当前的程序路径。
		
○ View
--------------------
core::view	视图函数(可继承)
		1. 【基础功能】设置视图参数,返回参数数组。
		2. 【基础功能】原生模板和字符串模板。
		3. 【扩展功能】其他类型模板。

○ Model
--------------------
core::connect	数据库连接
		1. 【基础功能】设置数据库参数,返回参数数组。
		2. 【基础功能】返回连接序号。
		2. 【基础功能】选择指定连接,返回连接句柄。
		3. 【基础功能】连接数据库,返回连接句柄。
		4. 【基础功能】断开数据库。
		5. 【扩展功能】使用扩展方式连接/断开数据库。
		
core::execute	执行SQL语句
		1. 【基础功能】执行SQL语句,返回结果集。
		2. 【扩展功能】使用扩展方式。
		
core::prepare	准备SQL语句
		1. 【基础功能】准备SQL语句,返回SQL和参数的数组。
		2. 【基础功能】调试SQL语句。
		3. 【扩展功能】使用扩展方式。
		
core::sequence	生成自增序列
		1. 【基础功能】生成自增序列,返回序列号。
		2. 【扩展功能】使用扩展方式。
		
core::structs	静态构造数据
		1. 【基础功能】静态构造函数,返回构造数组。
		
core::selects	静态选择数据
		1. 【基础功能】静态选择函数,返回选择数组。
		2. 【扩展功能】使用扩展方式。
		
core::inserts	静态插入数据
		1. 【基础功能】静态插入函数,返回影响记录数。
		2. 【扩展功能】使用扩展方式。
		
core::updates	静态修改数据
		1. 【基础功能】静态修改函数,返回影响记录数。
		2. 【扩展功能】使用扩展方式。
		
core::deletes	静态删除数据
		1. 【基础功能】静态删除函数,返回影响记录数。
		2. 【扩展功能】使用扩展方式。
		
core::replaces	静态更新数据
		1. 【基础功能】静态更新函数,返回影响记录数。
		2. 【扩展功能】使用扩展方式。
		
core->struct	构造实例数据
		1. 【基础功能】返回实例数组。
		2. 【基础功能】返回实例数据。
		3. 【基础功能】载入实例数组。
		
core->select	实例选择数据
		1. 【基础功能】选择实例数据,返回是否成功。
		2. 【扩展功能】使用扩展方式。
		
core->insert	实例插入数据
		1. 【基础功能】插入实例数据,返回是否成功。
		2. 【扩展功能】使用扩展方式。
		
core->update	实例修改数据
		1. 【基础功能】修改实例数据,返回是否成功。
		2. 【扩展功能】使用扩展方式。
		
core->delete	实例删除数据
		1. 【基础功能】删除实例数据,返回是否成功。
		2. 【扩展功能】使用扩展方式。
		
core->replace	实例更新数据
		1. 【基础功能】更新实例数据,返回是否成功。
		2. 【扩展功能】使用扩展方式。


● core::prepare前两个参数的说明(mysql),同样适用于相应的静态方法。

┌─────┬────────────────────────────┬───────────────────────┐
│第一个参数│        第二个参数(数组)           │       返回SQL语句           │
├─────┼───┬─────────────┬──────┬───┼───────────────────────┤
│ selects │$field│$table==''        │$where   │$other│SELECT $field $other             │
├─────┼───┼─────────────┼──────┼───┼───────────────────────┤
│ selects │$field│$table          │$where=='' │$other│SELECT $field FROM $table $other       │
├─────┼───┼─────────────┼──────┼───┼───────────────────────┤
│ selects │$field│$table          │$where   │$other│SELECT $field FROM $table WHERE $where $other │
┝━━━━━┿━━━┿━━━━━━━━━━━━━┿━━━━━━┿━━━┿━━━━━━━━━━━━━━━━━━━━━━━┥
│ inserts │$table│$column          │$value!=null│$other│INSERT $table $column VALUES $value $other  │
├─────┼───┼─────────────┼──────┼───┼───────────────────────┤
│ inserts │$table│$set==array('x'=>'x',...) │$value==null│$other│INSERT $table SET $set $other         │
├─────┼───┼─────────────┼──────┼───┼───────────────────────┤
│ inserts │$table│$column          │$value==null│$other│INSERT $table $column $other         │
┝━━━━━┿━━━┿━━━━━━━━━━━━━┿━━━━━━┿━━━┿━━━━━━━━━━━━━━━━━━━━━━━┥
│ updates │$table│$set           │$where=='' │$other│UPDATE $table SET $set $other         │
├─────┼───┼─────────────┼──────┼───┼───────────────────────┤
│ updates │$table│$set           │$where   │$other│UPDATE $table SET $set WHERE $where $other  │
┝━━━━━┿━━━┿━━━━━━━━━━━━━┿━━━━━━┿━━━┿━━━━━━━━━━━━━━━━━━━━━━━┥
│ deletes │$field│$table          │$where=='' │$other│DELETE $field FROM $table $other       │
├─────┼───┼─────────────┼──────┼───┼───────────────────────┤
│ deletes │$field│$table          │$where   │$other│DELETE $field FROM $table WHERE $where $other │
┝━━━━━┿━━━┿━━━━━━━━━━━━━┿━━━━━━┿━━━┿━━━━━━━━━━━━━━━━━━━━━━━┥
│ replaces │$table│$column          │$value!=null│$other│REPLACE $table $column VALUES $value $other  │
├─────┼───┼─────────────┼──────┼───┼───────────────────────┤
│ replaces │$table│$set==array('x'=>'x',...) │$value==null│$other│REPLACE $table SET $set $other        │
├─────┼───┼─────────────┼──────┼───┼───────────────────────┤
│ replaces │$table│$column          │$value==null│$other│REPLACE $table $column $other         │
└─────┴───┴─────────────┴──────┴───┴───────────────────────┘



● core::selects第5个参数的说明,同样适用于core::structs第2个参数。

┌───────────────────────┬──────────────────────┐
│        参数类型           │       返回的结果          │
├───────────────────────┼──────────────────────┤
│空值=array(null, 'class'=>null)       │对象数组=array(new static|self, ……)   │
├───────────────────────┼──────────────────────┤
│文本=array(null, 'class'=>文本)       │对象数组=array(new 文本, ……)       │
├───────────────────────┼──────────────────────┤
│对象=array(null, 'clone'=>对象)       │对象数组=array(clone 对象, ……)      │
┝━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━┥
│array(……, 空值, ……, 值)          │$return ...[]...=值            │
├───────────────────────┼──────────────────────┤
│array(……, 整数, ……, 值)          │$return ...[对象[整数]]...=值       │
├───────────────────────┼──────────────────────┤
│array(……, 文本, ……, 值)          │$return ...[对象[文本]]...=值       │
┝━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━┥
│array(……, 空值)=array(……, 'class'=>null) │$return ...[]...=new static|self      │
├───────────────────────┼──────────────────────┤
│array(……, 整数)=array(……, 'column'=>整数)│$return ...[]...=数组[整数]        │
├───────────────────────┼──────────────────────┤
│array(……, 文本)=array(……, 'column'=>文本)│$return ...[]...=数组[文本]        │
├───────────────────────┼──────────────────────┤
│array(……, 对象)=array(……, 'clone'=>对象) │$return ...[]...=clone 对象        │
├───────────────────────┼──────────────────────┤
│array(……, 数组)=array(……, 'array'=>数组) │$return ...[]...=数组           │
┝━━━━━━━━━━━━━━━━━━━━━━━┿━━━━━━━━━━━━━━━━━━━━━━┥
│array(……, 'assoc'=>null)          │$return ...=array('属性'=>'值', ……)   │
├───────────────────────┼──────────────────────┤
│array(……, 'both'=>null)           │$return ...=array('属性'=>'值','值', ……) │
├───────────────────────┼──────────────────────┤
│array(……, 'num'=>null)           │$return ...=array('值', ……)       │
├───────────────────────┼──────────────────────┤
│array(……, 'array'=>数组)          │$return ...=数组              │
├───────────────────────┼──────────────────────┤
│array(……, 'column'=>整数)          │$return ...=数组[整数]           │
├───────────────────────┼──────────────────────┤
│array(……, 'column'=>文本)          │$return ...=数组[文本]           │
├───────────────────────┼──────────────────────┤
│array(……, 'class'=>空值)          │$return ...=new static|self        │
├───────────────────────┼──────────────────────┤
│array(……, 'class'=>文本)          │$return ...=new 文本|static|self      │
├───────────────────────┼──────────────────────┤
│array(……, 'class|classtype'=>文本)     │$return ...=new 首个字段|文本|static|self │
├───────────────────────┼──────────────────────┤
│array(……, 'clone'=>对象)          │$return ...=clone 对象           │
└───────────────────────┴──────────────────────┘
注1:空值=null或'',整数=非负数整,文本=非空字符串;static|self=PHP 5.3使用static|PHP 5.2使用self。
注2:最后一个值的下标可以用粘附“|table=文本”来指定表名,如:'class|table=test'=>null。