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{
    
    }

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

     

  • 相关阅读:
    DelphiXE
    Delphi_检查exe文件是否是"随机基址"
    Delphi_按字节比较两个文件
    HTTP 头部
    NumberFormat usage
    tomcat 配置
    android 与JS之间的交互
    离线安装SDK
    Android SDK更新 Connection to http://dl-ssl.google.com refused
    自定义圆形图片
  • 原文地址:https://www.cnblogs.com/Athrun/p/php_static.html
Copyright © 2011-2022 走看看