极简核心
整个框架核心就一个文件MicroPHP.php(压缩后的文件MicroPHP.min.php,140KB左右)。
入口亦配置
一个入口文件index.php也是整个项目的配置文件,可以自定义多个入口文件达到不同项目共存的目的,项目之间随意共享类库、帮助文件等目录,框架核心文件采用零侵入式编写,整个框架运行不依赖任何外部变量。
独特插件模式
插件模式可以把框架嵌入到任何现有的程序代码到中,然后按着MicroPHP框架的各种特性写代码。
结构灵活
项目控制器、模型、视图、类库等各种文件夹完全自定义,都不是必需的,用到什么就建立什么文件夹,彻底摆脱一堆无用的一大堆文件夹的困扰。
类库懒加载
类库采用懒加载模式,只在需要时才包含类库,而不是一次全部加载,做到按需启用。且支持一级子文件夹自动加载,在类库很多需要用文件夹分类时,能保持程序结构的简洁清晰。
共享视图数据
没有视图就不能指定视图数据?文件可以include共享那么视图为什么不能共享数据呢?在MicroPHP里面你不再有这个困挠,MicroPHP可以在$this->view_vars数组里面存放你的任何想在视图里面使用的全局数据。
SESSION管理灵活
SESSION托管支持:mongodb、mysql、memcache、redis。配置灵活,根据项目具体情况择优选用即可。
缓存灵活
缓存支持:auto、apc、sqlite、files、memcached、redis、wincache、xcache、memcache。auto:自动模式。
缓存第二驱动
当你现在代码中使用的是memcached,然后代码转移到一个新服务器且不支持memcached,这时候怎么办呢?设置第二驱动即可,当你设置的驱动不支持的时候,系统就使用第二驱动。
HMVC模式
HMVC(Hierarchical-Model-View-Controller),也可以叫做 Layered MVC。顾名思义,就是按等级划分的 MVC 模式,简单的解释就是把MVC又细分成了多个子 MVC,每个模块就分成一个 MVC。使用 HMVC 的好处就是可以降低各个功能模块之间的耦合性,提高代码复用性,使得每个功能都可以独立出来,每个模块都有自己的 MVC 结构,这就有点像 ActiveX 控件,每个控件都有自己的行为,控件之间互不影响。
MicroPHP HMVC结构如下:
application
|- modules
|- module1
|- controllers
|- controllers.php
|- models
|- models.php
|- views
|- index.php
|- footer.php
|- ...
|- module2
|- controllers
|- controllers.php
|- models
|- models.php
|- views
|- index.php
|- footer.php
|- ...
|- ....
|- controllers
|- ...
|- models
|- ...
|- views
|- ...
如何访问hvmc模块?
访问hvmc模块很简单,只要在url控制器前面加上“模块名称/”即可,其它规则和以前框架规则一样。
比如:
1.http://127.0.0.1/?demo,访问的就是hmvc_demo模块默认的控制器和方法。
2.http://127.0.0.1/?demo/home.index,访问的就是hmvc_demo模块home控制器doIndex()方法。
HMVC模式详细说明
进一步了解...
1. 整个框架核心就一个文件MicroPHP.php(压缩后的文件MicroPHP.min.php,140KB左右)。
2. 入口文件index.php也是整个项目的配置文件,一个入口文件就是一个项目的入口,可以自定义多个入口文件达到不同项目共存的目的,项目之间随意共享类库、帮助文件等目录,框架核心文件采用零侵入式编写,整个框架的运行不依赖任何外部变量,初始化的时候只要通过MpRouter::setConfig($system)注入配置,然后MpRouter::loadClass()执行即可。
3. 独特的插件模式:这是MicroPHP的一大特色,插件模式就是可以把框架嵌入到任何现有的程序代码到中,只要在使用前包含plugin.php(要保证plugin.php和MicroPHP.min.php在一个目录)即可,然后按着MicroPHP框架的各种特性写代码,插件模式和正常模式唯一不同的就是插件模式下MicroPHP的路由功能不再使用,其它特性完全保留。
插件模式有用的有三个方法:
//使用默认数据库配置取得数据库ActiveRecord操作对象,然后可以$db->get('tablename')->result_array();这样去操作数据库。
(1).$db=MpLoader::instance()->database(null,true);
/实例化一个welcome控制器,然后调用其doIndex方法
(2).MpController::instance('welcome')->doIndex();
//实例化控制器目录里admin文件夹下面的login控制器,然后调用其doIndex方法
MpController::instance('admin.login')->doIndex();//admin是文件夹
//实例化一个User模型,然后调用其add方法
(3).MpModel::instance('User')->add('snail');
可以看出当想使用MicroPHP的一些方便的功能时,比如数据库操作,这个时候不需要去实例化一个控制器或者模型,只要通过MpLoader::instance()返回的对象去获取即可。
MpController::instance($path)、MpModel::instance($path)其中$path支持文件夹用点的方式引用。
插件模式使用的典型场景:
当你现在开发的程序使用了一个不友好的框架或者干脆没有框架的时候,你每次编码都很痛苦,而且不能换框架或者修改程序结构,那么这个时候你只要引入MicroPHP,然后使用插件模式就能优雅方便的去写代码了。
4. 项目控制器、模型、视图、类库等各种文件夹完全自定义,用到什么就建立什么文件夹,彻底摆脱一堆无用的一大堆文件夹的困扰。
5. 类库采用懒加载模式,只要按着规定命名规则,然后把你的类库文件扔到类库文件夹,在控制器或者模型中直接new 类库名()即可,系统会自动加载相应的类库文件。
6. 没有视图就不能指定视图数据?文件可以include共享那么视图为什么不能共享数据呢?在MicroPHP里面你不再有这个困挠,MicroPHP可以在$this->view_vars数组里面存放你的任何想在视图里面使用的全局数据。
特别是网站头部导航用户数据全站每个页面都用到,那么可以自定义个控制器父类,然后和在父类构造方法里面初始化这个用户数据,放到$this->view_vars里面,那么所有的控制器再也不用重复的去取用户数据传给视图。
7. 灵活的session托管,支持的管理类型:mongodb,mysql,memcache,memcached,redis.当然也可以用系统默认的管理方式.session托管是可选的,根据项目具体情况择优选用即可。session托管的好处很多,比如:支持分布式、精确控制session过期时间,等等。
8. 灵活的缓存机制。
(1).可用的方式缓存驱动有:auto,apc,sqlite,files,memcached,redis,wincache,xcache,memcache。auto自动模式寻找的顺序是 :apc,sqlite,files,memcached,redis,wincache,xcache,memcache。
(2).缓存配置有个第二驱动机制,比如:当你现在在代码中使用的是memcached, apc等等,然后你的代码转移到了一个新的服务器而且不支持memcached 或 apc这时候怎么办呢?设置第二驱动即可,当你设置的驱动不支持的时候,系统就使用第二驱动。
(3).易拓展的缓存驱动,如果上面的驱动类型还不能满足项目的缓存需求,那么可以拓展缓存驱动,驱动编写可以参考源文件里面的cache-drivers/drivers/example.php,10分钟就能写好你自己的驱动,接着在缓存配置$system['cache_drivers'] = array($example_file_path)里面指定自己的缓存文件位置和"storage" => "example"缓存类型即可,然后在项目中$this->cache即可使用example缓存驱动。当然接着还可以自定义example驱动的第二驱动,比如:"fallback" => array("example" => "files"),当系统环境不支持example驱动的时候使用第二驱动files。