• 技术文章 >后端开发 >php教程

    学习小笔记---大话PHP设计模式_PHP教程

    2016-07-12 09:07:33原创280

    学习小笔记---大话PHP设计模式


    PHPStorm IDE
    开发字体选用:Source Code Pro , Courier New , Concolas
    php命名空间 :可以解决 不同类中 相同名字方法的冲突
    namespace test1;
    function test(){
    自动载入 :
    function __autoload($class){
    require __DIR__.'/'$class.'.php';
    }
    spl_autoload_register(); 这个函数,可以允许多个 autoload 必须现在头一行
    例如 :
    spl_autoload_register('autoload1');
    spl_autoload_register('autoload2');
    function autoload1($class){
    require __DIR__.'/'$class.'.php';
    }
    function autoload2($class){
    require __DIR__.'/'$class.'.php';
    }
    require 以后 类名::方法名调用();
    例如:Test1::test();Test2::test();
    PSR-0规范
    1 php的命名空间必须于绝对路径一致
    2 类名与文件名一致 的首字母必须大写
    3 除了路口文件外,其他".php"必须只有一个类不能有可执行代码 例如:echo();
    __DIR__ 魔术常量 获取当前文件的路径
    __FUNCTION__ 魔术常量 获取当前方法
    __METHOD__ 魔术常量 获取当前类名和方法
    BASEDIR 网站根目录
    spl 标准简介
    SplStack(); 先进后出 站式数据结构
    $stack=new SplStack();
    $stack->push("test1"); //先进 入站
    $stack->push("test2"); //先进
    echo $stack->pop(); //后出 出站 test2
    echo $stack->pop(); //后出 test1
    SplQueue(); 先进先出 队列式数据结构
    $SplQueue=new SplQueue();
    $SplQueue->enqueue("test1"); //先进
    $SplQueue->enqueue("test2"); //先进
    echo $SplQueue->dequeue(); //先出 test1
    echo $SplQueue->dequeue(); //先出 test2
    SplMinheap(); 堆式数据结构
    $SplMinheap=new SplMinheap();
    $SplMinheap->insert('test1');
    $SplMinheap->insert('test2');
    echo $SplMinheap->extract(); test1
    echo $SplMinheap->extract(); test2
    $sqlFixedArray(); 固定尺寸的数组 (固定长度)
    $array= new $sqlFixedArray(10);(括号中设置数据长度)
    $array['0']=1;
    $array['8']=8;
    PHP链试 操作的实现 好处就是可以用一行代码来实现很多的功能
    $ob->where()->order()->limit()->select();
    PHP 面向对象高级特性
    PHP 魔术方法的使用
    1 __get/__set //将对象的首信进行接管
    2 __call/__callStatic //用来控制PHP的方法调用/控制类的静态方法调用
    3 __toString //将一个PHP对象转换成字符串
    4 __invoke //将PHP当成函数来使用
    打印出来的结果是 不管下标1-7有没有值 都会打印出来 没值的自动给个空值
    PHPstorm 配置安装
    http://blog.csdn.net/ikscher/article/details/43672365
    三种 基本设计模式
    工厂模式 : 工厂方法或者类 来生成对像,而不是在代码中直接new 代替new
    好处 :就是万一发生更改 只改一个工厂模式类就可以了
    单例模式 : 使某个类的对象仅允许创建一次
    好处 :无论需要多少个实例对象 实际上只连接了数据库一次
    注册模式 : 全局共享交换对象 与工厂模式配合更好
    好处 :全局共享交换对象
    注册树与工厂模式共同试用 可以减少 对内存资源的浪费。因为调用的是同一个对象。还可以添加数据对
    象映射模式 减少对数据库的直接操作 操作的是类库的属性
    适配器模式
    让不同的接口封装成统一的API
    PHP 类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此 PHP 引
    入了类的接口技术。
    如果一个抽象类里面的所有方法都是抽象方法,且没有声明变量,而且接口里面所有的成员都是 public
    权限的,那么这种特殊的抽象类就叫 接口 。
    接口使用关键字 interface 来定义,并使用关键字 implements 来实现接口中的方法,且必须完全实现。
    策略模式 将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式
    例如判断用户的男女给予不同的需求
    先写出 男的需求 然后再写出女的需求
    根据传输的值 决定调用那个需求 而不再用繁琐的判断来实现 更改的话只要再写一种需求就好了
    数据对象影射模式
    1 数据对象映射模式,是将对象和数据存储映射起来,对一个对象的操作会映射为对数据储存的操作
    观察者模式 当一个对象状态发生改变时,依赖它的对象会全部接到通知 并自动更新 用处 当一个事件发
    生的时候 与其关联的都可以写在观察者类里
    原型模式 与工厂模式作用类似,都是用来创建对象的
    与工厂模式的实现不同,原型模式是事先创建好一个原型对象,然后通过clone原型对象来创建新的对象。
    这样就免去了类创建时的初始化操作
    原型模式适用于大对象的创建。创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅
    需内存拷贝即可。
    用处:比如建立的一个类对象中涉及到很多循环之类的 在new了以后 下次调用的时候 直接克隆这个对象
    而不是继续new
    装饰器模式 装饰器模式(Decorator),可以动态的添加修改类的功能 一个类提供了一项功能,如果在修改
    并添加了额外的功能,传统的编辑模式,需要写一个子类继承它,并重新实现类的方法
    使用装饰器模式,仅需在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性。
    迭代器模式 在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素
    相比于传统编程模式,迭代器模式可以隐藏遍历元素的所需要的操作
    namespace test;
    class AllUser implements \Iterator {//调用迭代器接口 由PHP本身提供的
    protected $ids;
    protected $data = array();
    protected $num ;
    function __construct(){
    //实例化模型
    //读取数据库
    }
    function valid(){//验证当前是否还有下一个元素
    }
    function next(){//获取下一个元素
    }
    function current(){ //获取当前的元素
    }
    function rewind(){//重置整个迭代器
    }
    function key(){//获取迭代器中的位置
    }
    代理模式
    在客户端与实体之间建立一个代理对象(proxy),客户端对实体进行操作全部委派给代理对象,隐藏实体
    的具体实现细节
    proxy还可以与业务代码分离,部署到另外的服务器,业务代码中通过RPC来委派任务。

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1060602.htmlTechArticle学习小笔记---大话PHP设计模式 PHPStorm IDE 开发字体选用:Source Code Pro , Courier New , Concolas php命名空间 :可以解决 不同类中 相同名字方法的冲...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:设计模式 大话 笔记
    上一篇:apache和PHP如何整合在一起,apachephp整合_PHP教程 下一篇:PHP内存使用情况如何获取,php内存获取_PHP教程
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• PHP面试之常见基础算法(附代码示例)• 晒一上小弟我的模板引擎,欢迎拍砖 • discuz X2.5 怎么自己写个页面直接操作数据库表 • 提供php性能的编码技能 • 为什么小弟我写的程序看起来很散呢
    1/1

    PHP中文网