加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何从课外调用父方法?

发布时间:2020-12-13 16:51:56 所属栏目:PHP教程 来源:网络整理
导读:请看以下示例: class A implements Serializable { serialize() {}}class B extends A { serialize() {}} A类是每个页面上使用的持久但最小的类. B类是临时管理员(在设置屏幕上使用)类,它通过读取文件来填充成员. 我需要序列化对象并在数据库中存储两次,一
请看以下示例:

class A implements Serializable {
    serialize() {}
}
class B extends A {
    serialize() {}
}

A类是每个页面上使用的持久但最小的类. B类是临时管理员(在设置屏幕上使用)类,它通过读取文件来填充成员.

我需要序列化对象并在数据库中存储两次,一次用于常规页面,第二次(有限生命)用于管理页面.

$instance = new B(); // and populate
$data = serialize( $instance );

这将始终调用过度使用的方法.有没有什么方法可以将$instance转换为A类,以便我可以调用A类的序列化方法?

解决方法

可以通过创建一个闭包,查看以下片段进行演示

<?php

interface Greeting
{
    public function hello();
}

class A implements Greeting
{
    public function hello()
    {
        echo "Say hello from An";
    }
}

class B extends A
{
    public function hello()
    {
        echo "Say hello from Bn";
    }
}

$b = new B();

$closure = function() {
    return parent::hello();
};

$closure = $closure->bindTo($b,'B');
$closure(); // Say hello from A
$b->hello(); // Say hello from B

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读