zoukankan      html  css  js  c++  java
  • php中继承父类的子类如何使用父类的方法实例化自己

    这其实就是selfstatic的区别
    结论: 使用static即可。
    如下

    $model = new static();
    

    这是继承common的类

    namespace AppModels;
    
    class Order extends Common
    {
    	//
    }
    

    以下根据不同的common类修改,展示效果。

    self实例

    以下以laravel的模型继承来展示实例,common类的内容如下:

    <?php
    
    namespace AppModels;
    
    class Common extends Outside
    {
    	// 返回已经可以设置完成数据库的实例
        public static function getIns($db){
            $self = new self();
            $self->setConnection($db);
            return $self;
        }
    }
    

    此时查询的语句是:

    select * from "commons"
    

    很明显, 不是我们想要的,我们想查询orders表的数据。

    static实例

    以下以laravel的模型继承来展示实例,common类的内容如下:

    <?php
    
    namespace AppModels;
    
    class Common extends Outside
    {
    	// 返回已经可以设置完成数据库的实例
        public static function getIns($db){
            $self = new static();
            $self->setConnection($db);
            return $self;
        }
    }
    

    此时查询的语句是:

    select * from "orders"
    

    此时就是查询orders表的数据了。

    结论

    1.没有继承时候,你用self::class 和 static::class是一样的,都是获取当前类名。
    2.如果用到了继承,并且这个方法在父类,self指向的是当前的类。static指向的是最终那个子类,也就是使用此方法的类。

  • 相关阅读:
    庄家试盘的K线形态
    股票基本知识入门提纲
    我与猫
    夜雨不眠时
    快速排序
    由float转std::string的方法
    BugFree + EasyPHP在Windows平台搭建步骤详解
    安装VS2008的时候Windows Mobile 5.0 SDK R2 for pocket pc错误解决方案
    收集WCF文章
    linq to ef(相当于sql中in的用法)查询语句
  • 原文地址:https://www.cnblogs.com/hxsen/p/13054923.html
Copyright © 2011-2022 走看看