ThinkPHP 是国内比较优秀的 PHP 框架,但有些地方不是很好,比如那些 魔术函数 D(),用它返回的类实例,在各个IDE(如 PhpStorm)下根本识别不了,导致如下问题:

1、不支持 代码自动提示;

2、不支持 按住 Ctrl 键,点击 方法名,进入 方法的 定义处;

3、不支持 重构;

4、不支持 方法被使用/调用 统计;

等等问题;

总而言之,强大的IDE(PhpStorm)拿它一点办法都没有。

于是,越来越讨厌这样的 D()函数,,,改造一下它吧,操作过程如下:

1、新建 Base.class.php 类文件(文件路径为:ThinkPHP/Library/Think/Base.class.php),其内容如下:

<?php
namespace Think; /**
* 业务基类
*
* @package framework
* @author 52php.cnblogs.com
*/
class Base {
/**
* 类实例化
*/
public static function instance() {
static $_instance = array(); $classFullName = get_called_class();
if (!isset($_instance[$classFullName])) {
if (class_exists($classFullName)) {
$instance = $_instance[$classFullName] = new static();
return $instance;
} else {
throw new \Exception('"' . $classFullName . '" was not found !');
}
} return $_instance[$classFullName];
}
}

2、修改下 Model类(文件路径为:ThinkPHP/Library/Think/Model.class.php),让它继承上面的 Base类:

<?php
namespace Think; /**
* ThinkPHP Model模型类
* 实现了ORM和ActiveRecords模式
*/
class Model extends Base {
// 操作状态
const MODEL_INSERT = 1; // 插入模型数据
const MODEL_UPDATE = 2; // 更新模型数据
const MODEL_BOTH = 3; // 包含上面两种方式 // .... 后面的代码 被省略 }

3、改造后,效果如下:

//【现在的 写法】
$userList = UserMainModel::instance()->getByUserId('300061'); //【老的 写法】
$userList = D('UserMain')->getByUserId('300061');

注意:先前的 D() 函数不受影响!

最新文章

  1. 开源物联网框架ServerSuperIO 3.0正式发布(C#),跨平台:Win&amp;Win10 Iot&amp;Ubuntu&amp;Ubuntu Mate,一套设备驱动跨平台挂载,附:开发套件和教程。
  2. HDU 5744 Keep On Movin (贪心) 2016杭电多校联合第二场
  3. json-lib 之jsonConfig具体应用
  4. ecshop数据库取数据
  5. table总结insertRow、deleteRow
  6. AMQP(Advanced Message Queuing Protocol)
  7. PHP详解$_SEVER常用变量
  8. JS 时间字符串与时间戳之间的转换
  9. 常用API接口签名验证参考
  10. rabbitmq重启时报错,并导致erlang崩溃和Rabbit的常用命令
  11. 2017软工实践K班总结
  12. c++ try catch 问题
  13. VS2012里面使用EF框架的增删改查和分页的方法
  14. 哥谭第四季/全集Gotham迅雷下载
  15. ios成长之每日一遍(day 7)
  16. 利用ItextSharp 生成PDF文档改进版
  17. Freeze partial parameters while training
  18. ios7 - Custom UItabbar has a gap in the bottom
  19. vmware虚拟机监控数据
  20. 资源文件properties的存放路径

热门文章

  1. css编写规范
  2. node项目换了环境node_modules各种报错
  3. linux认识第一面
  4. openssl生成https证书 (转)
  5. Memcached深度分析
  6. BigInteger类
  7. Cache-Aside Pattern解析
  8. div文字超出
  9. 从Microsoft.AspNet.Identity看微软推荐的一种MVC的分层架构
  10. jsp总结