详解用 MiniFramework 计算程序运行时间的方法

我们在项目调优过程中,通常会对代码的运行时间进行统计,以便了解程序运行的性能和效率,这些统计结果将作为代码优化时的重要指标,帮助开发者有针对性的进行调优工作。

MiniFramework 在 1.3.0 版本中,新增了 Debug 类,其中包含有时间统计功能的若干方法,可以非常便捷地帮助开发者实现上述统计需求,下面我们来通过示例代码介绍具体实现方法。

首先,假设我们有一个名为 Index 的 Controller,并且其中包含有一个名为 index 的 Action(MiniFramework下载包中已经包含),我们将代码写在这个 Action 中,如下:

阅读全文

PHP 开源框架 MiniFramework 发布 1.4.0 版

MiniFramework 是一款遵循 Apache2 开源协议发布的,支持 MVC 和 RESTful 的超轻量级 PHP 开发框架。MiniFramework 能够帮助开发者用最小的学习成本快速构建 Web 应用,在满足开发者最基础的分层开发、数据库和缓存访问等少量功能基础上,做到尽可能精简,以帮助您的应用基于框架高效运行。

MiniFramework于2018年9月13日发布1.4.0版本,变化有:

* 新增Log类,用于以日志的形式记录代码运行报错和开发者自定义的调试信息。
* 新增常量LOG_ON,用于控制日志功能的开启和关闭(生产环境建议关闭)。
* 新增常量LOG_LEVEL,用于定义可被写入日志的错误等级。
* 新增常量LOG_PATH,用于定义日志存储路径。
* 新增Debug类的varType方法,用于判断变量类型。
* 改进优化异常控制相关功能。

阅读全文

用 MiniFramework 实现文件上传功能

MiniFramework 是一款遵循 Apache2 开源协议发布的,支持 MVC 和 RESTful 的超轻量级 PHP 开发框架。

在 MiniFramework 最新的版本中,提供了上传文件的特性,下面我们来演示一下实现过程。

首先,新建一个名为 Upload 的 Controller,并在其中新建一个名为 index 的 Action,代码如下:

上边的代码中,通过 use Mini\Upload; 引入了 MiniFramework 框架所提供的一个用于文件上传的类库。

在实例化 Upload 类后,通过调用 save 方法,并将 PHP 的 $_FILES 传入,来实现上传文件的保存。

在调用 save 方法后,若文件保存失败,可以通过 getErrorMsg 方法来获取错误信息。

如果文件保存成功,那么 save 方法会返回一个数组,其中包含有文件保存的路径和文件名,上边的示例代码中使用了 MiniFramework 内置的全局函数 dump() 来输出 save 所返回的数组。

另外,在实例化 Upload 类时,可传入一个数组类型的参数,对文件保存路径、大小和类型进行设定,例如:

上边的代码中,常量 PUBLIC_PATH 是 MiniFramework 内置用于定义站点根目录所对应的路径,默认对应的是 Public 目录所在的路径

接下来创建视图,在 View 目录中创建一个名为 upload 的目录,将视图文件保存到 View/upload/index.php,代码如下:

完成上述步骤后,便可以访问类似下面的地址来测试了
http://你的域名/index.php?c=upload&a=index

如果你的站点开启了伪静态,那么访问地址可以是下面这样:
http://你的域名/upload/index

上边的 URL 中,最后的 index 可以省略,例如:
http://你的域名/upload

阳光部落原创,更多内容请访问http://www.sunbloger.com/

PHP 开源框架 MiniFramework 发布 1.1.0 版

MiniFramework 是一款遵循 Apache2 开源协议发布的,支持 MVC 和 RESTful 的超轻量级 PHP 开发框架。MiniFramework 能够帮助开发者用最小的学习成本快速构建 Web 应用,在满足开发者最基础的分层开发、数据库和缓存访问等少量功能基础上,做到尽可能精简,以帮助您的应用基于框架高效运行。

MiniFramework于2018年6月10日发布1.1.0版本,变化有:

* 新增Captcha类,用于生成和校验图片验证码
* 新增Registry类的unset方法,用于删除已注册的变量
* 新增全局函数browserDownload(),用于让浏览器下载文件
* 在App目录中,新增名为Example的控制器,其中包含部分功能的示例代码

MiniFramework 1.1.0 版本下载地址
zip格式:https://github.com/jasonweicn/MiniFramework/archive/1.1.0.zip
tar.gz格式:https://github.com/jasonweicn/MiniFramework/archive/1.1.0.tar.gz

MiniFramework 快速入门文档
地址:http://www.miniframework.com/docv1/guide/

近期版本更新主要变化回顾:

1.0.13

* 改进Db_Mysql中的execTrans方法
* 改进渲染特性
* 新增全局函数isImage(),用于判断文件是否为图像格式
* 新增全局函数getStringLen(),用于获取字符串长度(支持UTF8编码的汉字)

1.0.12

* 新增Session类,用于读写会话数据

1.0.11

* 改进转换伪静态地址分隔符的机制
* 优化路由处理伪静态时的性能
* 优化部分核心类的属性
* 优化框架内存占用

MiniFramework新增了图片验证码输出和校验功能

今天为 MiniFramework 新增了一个名为 Captcha 的类,用于图片验证码的输出和校验。

具体用法如下:

用 MiniFramework 新建一个名为 Example 的控制器,例如:

 

同时创建视图,代码如下:

 

创建完成后,访问 http://你的域名/example/captcha 即可看到效果。

上边的代码已经包含在 MiniFramework 位于 GitHub 的 master 主线上。

GitHub源代码地址:https://github.com/jasonweicn/MiniFramework

用 MiniFramework 快速构建 REST 风格的 API 接口

MiniFramework 是一款遵循 Apache2 开源协议发布的,支持 MVC 和 RESTful 的超轻量级 PHP 开发框架。

通过 MiniFramework 内置的 REST 接口功能,我们可以很轻松的快速构建起基于 REST 风格的 API 接口,特别是在开发 iOS 和 Android 手机客户端应用时,服务器端的 API 接口是否灵活高效,直接影响着手机应用的体验。

下面介绍一下如何使用 MiniFramework 开发 REST 风格的 API 接口。

第一步,我们下载最新 MiniFramework 1.0.2 版本

下载地址是:https://github.com/jasonweicn/MiniFramework/archive/1.0.2.zip

下载并解压缩后,会看到里面有 App 和 MiniFramework 两个目录,App 目录是一个附带的应用 demo,MiniFramework 目录是框架核心文件。

第二步,我们在 Apache 或 Nginx 中新建一个站点,并将站点的根目录指向 App/Public 这个目录。

设置好站点根目录后,我们可以测试一下,用浏览器访问下面的 URL 地址:

http://你的域名/index.php?c=index&a=index

如果可以显示“Hello World!”,说明站点已经部署成功了。

第三步,为了优化访问 URL 访问的便捷性,我们要给站点设置伪静态规则。

如果你用的是 Apache,那么附带的应用 demo 中已经提供了 .htaccess 文件,不需要额外的设置了。

如果你用的是 Nginx,那么需要在 nginx.conf 中,向对应站点的 server{} 段中,增加下面的代码:

 

保存后,别忘记重启 Nginx 让配置生效。

经过上述配置后,用浏览器访问下面的 URL 地址:

http://你的域名/index/index

如果可以显示“Hello World!”,那就说明伪静态也配置成功了。

第四步,创建 API 程序

找到 App/Api 目录,这里是存放 API 接口的地方,在里面已经附带了一个名为 Version.php 的 demo,你可以参考这个文件的代码,编写自己的 API,比如我们创建一个名为 User.php,里面放置 get、post、put 和 delete 四个方法,分别对应 REST 中的 GET、POST、PUT 和 DELETE 请求。代码如下:

 

创建好上边的 API 后,我们可以测试一下,用浏览器访问下面的 URL 地址:

http://你的域名/api/user

此时的访问请求属于 GET 方式,MiniFramework 会将这个请求映射到我们刚刚创建的 User 类的 get() 方法上,如果一切正常,我们会看到浏览器中显示如下内容:

 

上边显示的内容就是通过 responseJson() 方法输出的 JSON 字符串了,其中 code 代表这次请求服务器返回的状态代码,msg 是返回的说明,data 里面就是这次请求发出后,服务器返回给客户端的数据了。

我们可以看到,上边 User 类的代码中,在最开始要通过 namespace 来声明当前文件的命名空间,在 MiniFramework 中,默认情况下 API 接口的命名空间统一为 App/Api。

再往下还要通过 use 引入 Mini\Rest,这个是 MiniFramework 的核心类之一,我们创建的 API 接口的 class 必须要继承 Rest。

再往下就是 REST 中经典的 get、post、put 和 delete 四个方法,对于客户端请求类型的映射问题,MiniFramework 会自动帮我们处理好,我们只要专注写好业务逻辑就可以了。

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

PHP开源框架MiniFramework发布0.8.0版

经过半年多时间的打磨,采用PHP语言编写的,超轻量级MVC框架MiniFramework的0.8.0版本于2016年8月14日发布。

新版本的变化主要有:

  • 改写了view的渲染方式
  • 在Params中新增了getPost和getQuery两个方法
  • 在View中新增getLayout()方法,用于在视图中的指定位置调入布局文件
  • 在Action中增加了存放Request实例的属性,供在动作中调用。
  • 在Action中新增_forward()方法
  • 在Request中新增setControllerName()和setActionName()方法
  • 新增Registry类,用于全局存取变量
  • 新增支持Redis的缓存类库
  • 新增使用Memcache或Redis缓存类库时,可通过getMemcacheObj()或getRedisObj()获取实例化对象,便于使用未封装的方法。
  • 向全局函数库中新增了pushJson(),用于输出JSON并终止程序运行
  • 向全局函数库中新增了base64EncodeImage()用于将图片转换为base64编码
  • Bugfix:在Params中的checkInject()里,用preg_match替换ereg
  • Bugfix:针对PHP 5.3.6以前可能存在注入的漏洞进行修补

MiniFramework源码请移步至:https://github.com/jasonweicn/MiniFramework

最新的0.8.0版请移步至:https://github.com/jasonweicn/MiniFramework/releases/tag/miniframework-0.8.0

PHP开源框架MiniFramework发布0.7.0版

在经过了将近一年的“偷懒”后,站长终于在2016年到来后,又开始更新MiniFramework了,这次发布的0.7.0主要是新增了全局函数库和缓存类库。缓存目前可以支持文件存取和Memcache两种方式,欢迎大家尝试,并请多多指教。

MiniFramework源码请移步至:https://github.com/jasonweicn/MiniFramework

最新的0.7.0版请移步至:https://github.com/jasonweicn/MiniFramework/releases/tag/miniframework-0.7.0

阳光部落原创,更多内容请访问 http://www.sunbloger.com/