`
quxiaozuzhou
  • 浏览: 15606 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

偷懒万岁-让PHP

PHP 
阅读更多
(本文于2010.10.01发表在《草根》杂志第四期,LAMP交流超级群(500人):106382633)
<?php
class a {
......
    function a1() {
        include_once ROOT_PATH . 'lib/db.php';
        $db = new db();
        $res = $db->get_array('select * from table');
        ......
    }
......
}
?>
很平常的一段代码不是吗?相信大家也都写过类似的东西,我以前也写过很多。由于我是一个懒人,懒到不想多打几个字,于是我很讨厌每次都要手工去new一下那个对象,这得让我多打多少个字啊,累啊。于是我就在想,怎么能让php自己去对某个对象进行初始化呢?
古人教导我们“书中自有颜如玉,书中自有黄金屋,书中自有偷懒法……”你说什么?没有最后那句?哦,好吧,那是我加的- -! 反正多看看书没坏处啦,你问什么书?当然是php手册啦,其他的书我基本没看过,主角是未央生那本算是看过……
言归正传啊,我就拿着手册看啊、看啊、看啊,终于,我找到了一个魔术方法,__get()
很符合我的要求嘛,不错不错,接下来需要做的就是思考,如何来做呢?第一次,我将代码写成了这样:
<?php
class a {
......
public function __get($name) {
    $name = strtolower(trim($name));
    $file = ROOT_PATH . 'lib/' . $name . '.php';
    if(is_file($file)) {
        include_once $file;
        $obj = new $name;
        return $obj;
    } else {
        die('no file');
    }
}
    function a1() {
        $res = $this->db->get_array('select * from table');
        ......
    }
......
}
?>
但是很快,我发现不对劲了,每执行一次$this->db的时候都会重新new一个对象出来,这可不行,用的多了,内存不是全完蛋了?于是我又想到了单件模式,略加思考得出了以下的版本:
<?php
class a {
......
public function __get($name) {
    static $instances = array();
    $name = strtolower(trim($name));
    $instance = null;
if (!array_key_exists($name, $instances)) {
        $file = ROOT_PATH . 'lib/' . $name . '.php';
    if(is_file($file)) {
        include_once $file;
        $instances[$name] = new $name;
    } else {
        die('no file');
    }

$instance = $instances[$name];
return $instance;
}
    function a1() {
        $res = $this->db->get_array('select * from table');
        ......
$this->tpl->assign('res', $res);
    }
......
}
?>
太爽了,不是么?只要类名和它自己的文件名相同,并且放在指定的目录下,我就可以不用去include,不用去new,使用的时候直接 $this->类名->类中的方法/属性 偷懒成功了!我相信不少朋友肯定想到了进一步偷懒的方法对吧?伟大的谁谁谁曾经说过,“不会偷懒的程序员不是一个好的程序员”,所以让大家一起开动脑筋,想出更多偷懒的办法来吧。
分享到:
评论

相关推荐

    淘宝客程序-专业淘客偷懒软件1.0

    专业淘客偷懒软件-会复制就能成功做淘客 当你从别人的博客或者网站中看到整理精美的淘宝商品推荐文章时,是否想复制到自己的网站或者博客中,可是如果一个一个手动的把别人淘宝客的id改成自己的是不是特别麻烦,只要...

    34 谁都不能偷懒-通过 CompletableFuture 组装你的异步计算单元.pdf

    【标题】:“34 谁都不能偷懒-通过 CompletableFuture 组装你的异步计算单元” 【描述】:本章节探讨的是如何利用Java 8引入的新特性`CompletableFuture`进行高效的并发编程,尤其是在处理复杂的异步计算场景时,它...

    偷懒的程序员

    ### 做一个会“偷懒”的程序员 在IT行业中,“偷懒”并不是指不负责任地逃避工作,而是指通过高效的工作方式、自动化工具及优化流程等手段来提高工作效率,减少重复劳动。本文将深入探讨如何成为一个聪明的“偷懒”...

    偷懒注册机编写源码

    就是“注册机偷懒写法”四篇博客的源码,发出来赚点积分,以前赞的积分都被清掉了

    鱼刺类_多线程应用v5.4模块

    好像改了好多 但是因为爱偷懒睡觉 给忘了。5.4.0(2017-06-25)。*替换了类回调方式,回调速度提升一倍。*部分代码重新启用了汇编化调用来提升效率。*优化和规范了整体代码,便于阅读理解。*简单封装了内存文件映射...

    《偷懒的技术:打造财务Excel达人》示例文档.rar

    《偷懒的技术:打造财务Excel达人》是一本旨在帮助财务工作者提升Excel技能的书籍,其示例文档提供了丰富的Excel使用技巧。在这个压缩包中,我们可以找到各种与财务工作相关的Excel应用实例,这些实例覆盖了数据分析...

    易语言偷懒实现md5加密.rar

    易语言偷懒实现md5加密.rar 易语言偷懒实现md5加密.rar 易语言偷懒实现md5加密.rar 易语言偷懒实现md5加密.rar 易语言偷懒实现md5加密.rar 易语言偷懒实现md5加密.rar

    偷懒的技术:打造财务Excel达人》示例文档.rar

    《偷懒的技术:打造财务Excel达人》示例文档提供了许多实用的Excel技巧,帮助财务人员提高工作效率,避免繁琐的手动计算,让工作更加智能化。下面将详细介绍这些知识点: 1. **公式与函数应用**:Excel中的公式和...

    基于控制台的图书管理系统

    更新日志: List_版本1.1 1.增加按作者名查找 2.修改删除功能内部使用迭代器遍历 ------------------------------------------------------------------------ ...第一种偷懒的方法,第二种使用匿名内部类和接口封装

    [易语言]PHP网络验证【二版】(几时)

    由于前期准备写给自己用的,偷懒了很多情况,一些配置直接写在\application\config.php中,所有请打开文件修改配置 3.邮箱服务器配置,注册,找回密码,购卡等操作需要用到邮箱发信 请在配置文件中找到mail节点设置...

    android 开发框架,码农偷懒专用

    喜欢偷懒,对于一个码农来说,能够偷懒,并且在不影响项目质量的情况下,是不容易的。 这个叫不上框架,只能说是一个工具类。 框架大小在400KB 包括源码在600KB 里面分为两个架包一个是有源码的 这样就直接可以查看...

    易语言偷懒实现md5加密

    在"易语言偷懒实现md5加密"的源码中,可能已经封装了上述过程,简化了开发者的工作。使用时,只需调用相应的函数,传入需要加密的字符串,即可得到对应的MD5值。这种实现方式通常会隐藏底层的复杂性,让开发者更专注...

    linux实验6 给偷懒的兄弟们

    这个实验是关于在Linux环境下使用C语言编写和编译一个简单的程序,该程序包含了两个工具函数库mytool1和mytool2。这个实验的核心知识点包括: 1. **头文件和预处理器指令**:在`mytool1.h`和`mytool2.h`中,可以...

    Broadcast偷懒,AlarmManager悲剧

    标题“Broadcast偷懒,AlarmManager悲剧”涉及到Android系统中的两个关键组件:BroadcastReceiver(广播接收器)和AlarmManager。这两个组件在Android应用开发中扮演着重要角色,它们用于实现跨应用通信以及定时任务...

    冬季用车别偷懒.docx

    ### 冬季用车注意事项与维护技巧 #### 一、换季保养的重要性 ##### 1.... 冬季用车时,由于环境温度大幅下降,普通润滑油的粘度会显著增加,导致其...冬季用车绝不能偷懒,只有做好充分准备,才能确保车辆安全度过寒冬。

    =号2边互换...偷懒小程序

    偷懒小程序" 提供了一种优化代码、提高编写效率的思路。这个标题暗示了我们可以通过改变赋值语句的结构来简化工作,特别是当涉及到多个字段赋值时。 描述中提到的 "Entity.id=textbox1.text" 和 "textbox1.text=...

    老板如何管理偷懒的销售团队01.doc

    【标题】: "老板如何管理偷懒的销售团队01.doc" 【描述】: 这份文档探讨了销售团队管理中的挑战,特别是针对那些可能偷懒的销售人员,以及如何通过有效的监督和检查机制来改善团队的效率和执行力。 【标签】: ...

    PHP程序员必需遵循的PHP编程准则__1.docx

    这里的“懒散是金”并非鼓励程序员偷懒,而是提倡高效和复用。作为PHP开发者,你应该善用已有的开源代码和库,避免重复造轮子。这不仅可以节省时间,还能提高代码质量。例如,利用PHP的大量开源数据库处理函数和...

Global site tag (gtag.js) - Google Analytics