一文彻底搞懂php的后期静态绑定举例讲解

 更新时间:2023年06月28日 11:07:38   作者:church  
这篇文章主要来带大家彻底搞懂php的后期静态绑定的举例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

举个例子说明

看了很多人的解释,都是照搬文档,说得非常抽象。

这里我举个例子说明一下,应该很多人能秒懂。

<?php 
interface FactoryInterface
{
    public function create();
}
abstract class Factory implements FactoryInterface
{
    public static $instance = null;
    public function create()
    {
        throw new \Exception('Please implement create method.');
    }
    public static function getInstance()
    {
        if (is_null(self::$instance)) {
            self::$instance = new static();
        }
        return self::$instance;
    }
}
class Car
{
    public function run()
    {
        echo "I'm running";
    }
}
class CarFactory extends Factory
{
    public function create()
    {
        return new Car();
    }
}
CarFactory::getInstance()->create()->run();

上面这个抽象类的getInstance静态方法中,我想实例化一个子类,怎么办?除了new static, 没有别的方法,因为你根本不知道子类的名称到底是什么,它可以被命名成任意合法的名称。
还有其它场景,比如说在父类的静态方法中调用子类的静态方法,怎么办?也是一样static::childMethod()

结语

结合上面的例子和你自己的感悟,再去读一读文档中的说明,是不是清晰了很多?

以上就是一文彻底搞懂php的后期静态绑定举例讲解的详细内容,更多关于php后期静态绑定的资料请关注脚本之家其它相关文章!

相关文章

  • PHP 过滤页面中的BOM(实现代码)

    PHP 过滤页面中的BOM(实现代码)

    本篇文章是对PHP中过滤页面中的BOM的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • ThinkPHP控制器详解

    ThinkPHP控制器详解

    一般来说,ThinkPHP的控制器是一个类,而操作则是控制器类的一个公共方法。下面我们就来详细谈谈ThinkPHP的控制器
    2015-07-07
  • php+ajax实现的点击浏览量加1

    php+ajax实现的点击浏览量加1

    本文给大家分享的是一段非常实用的php+ajax实现的点击浏览量加1的代码,推荐给大家,有需要的小伙伴可以参考下
    2015-04-04
  • php查找字符串中第一个非0的位置截取

    php查找字符串中第一个非0的位置截取

    本文主要介绍了php查找字符串中第一个非0的位置并截取的方法,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • PHP实现单链表翻转操作示例

    PHP实现单链表翻转操作示例

    这篇文章主要介绍了PHP实现单链表翻转操作,结合实例形式分析了php单链表的定义、遍历、递归、翻转等相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • PHP使用trim函数去除字符串左右空格及特殊字符实例

    PHP使用trim函数去除字符串左右空格及特殊字符实例

    这篇文章主要介绍了PHP使用trim函数去除字符串左右空格及特殊字符的用法,结合实例简单分析了trim函数不带附加参数去除空格及使用附加参数去除指定字符的使用技巧,需要的朋友可以参考下
    2016-01-01
  • 详解WordPress中创建和添加过滤器的相关PHP函数

    详解WordPress中创建和添加过滤器的相关PHP函数

    这篇文章主要介绍了WordPress中创建和添加过滤器的相关PHP函数,分别是apply_filters()函数和add_filter()函数的使用,需要的朋友可以参考下
    2015-12-12
  • PHP5 面向对象(学习记录)

    PHP5 面向对象(学习记录)

    PHP5已经支持面向对象,这样可以提高代码效率,与代码的复用性。
    2009-12-12
  • php与paypal整合方法

    php与paypal整合方法

    这几天,boss要求在system中整合paypal,方便交易.个个都没空,就我比较清闲.所以,这工作就落我身上了.一点头绪都没有.只能先google一下了.查找了大半个上午,中午懂了那么一点.还好paypal提供了比较完整的参考文档.
    2010-11-11
  • PHP基于单例模式编写PDO类的方法

    PHP基于单例模式编写PDO类的方法

    这篇文章的代码是用此前一个名为MyPDO的类改写的,引入了单例模式来保证在全局调用中不会重复实例化这个类,降低系统资源的浪费。有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-09-09

最新评论