zoukankan      html  css  js  c++  java
  • php static 和self区别

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

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

  • 相关阅读:
    10:简单密码
    08:字符替换
    07:配对碱基链
    05:输出亲朋字符串
    18:等差数列末项计算
    09:密码翻译
    用最通俗的话说23种设计模式之代理模式
    Android学习之 UI效果
    精确到时分秒的jQuery插件例子
    Eclipse 常用快捷键
  • 原文地址:https://www.cnblogs.com/isuben/p/5534687.html
Copyright © 2011-2022 走看看