zoukankan      html  css  js  c++  java
  • [转]PHP5.3_延迟静态绑定_static

    From : http://my.oschina.net/liuhui1990/blog/38611

    基于PHP版本: 5.3.5

    PHP5.3 以后引入了延迟静态绑定:

    static(关键字) 类似于 self(关键字) , 但它指向的是被调用的类(Document而不是包含类(DomainObject)static 和 self 的区别:

    <?php
    class DomainObject{
        public static function createStatic(){
            return new static();        
        }
        public static function createSelf(){
            return new self();
        }
    }
    
    class User extends DomainObject{
        
    }
    
    class Document extends DomainObject{
        
    }
    
    echo '<pre>';
    var_dump( Document::createStatic());
    var_dump( Document::createSelf());

    Result :

    object(Document)[1]
    object(DomainObject)[1]

    以前你这么写:

    abstract class DomainObject{
    
    }
    
    class User extends DomainObject{
        public static function create(){
            return new User();
        }
    }
    
    class Document extends DomainObject{
        public static function create(){
            return new Document();
        }
    }

    现在, 你可以这么写: 

    abstract class DomainObject{
        public static function create(){
            return new static();
        }
    }
    
    class User extends DomainObject{
    
    }
    
    class Document extends DomainObject{
    
    }

    好处: 可以节省大量重复代码~

     

  • 相关阅读:
    supervised learning 监督式学习
    4.4 day14 内置函数
    4.3 day13 迭代器 生成器
    4.2 homework
    4.2 day12 装饰器-带参数
    3.29 homework
    SQL Server 索引和视图
    SQL Server 事务、异常和游标
    SQL Server 触发器
    SQL Server 存储过程
  • 原文地址:https://www.cnblogs.com/Athrun/p/php_static.html
Copyright © 2011-2022 走看看