PHP设计模式之组合模式(Composite) 代码实例大全(12)

目的

一组对象与该对象的单个实例的处理方式一致。

示例

  • form类的实例包含多个子元素,而它也像单个子元素那样响应 render() 请求,当调用 render() 方法时,它会历遍所有的子元素,调用 render() 方法

  • Zend_Config: 一个配置选项树,每个选项自身就是一个 Zend_Config 对象

UML图

PHP设计模式之组合模式(Composite) 代码实例大全(12)_第1张图片

★官方PHP高级学习交流社群「点击」管理整理了一些资料,BAT等一线大厂进阶知识体系备好(相关学习资料以及笔面试题)以及不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货

代码

  • RenderableInterface.php

  • Form.php

';

        foreach ($this->elements as $element) {
            $formCode .= $element->render();
        }

        $formCode .= '';

        return $formCode;
    }

    /**
     * @param RenderableInterface $element
     */
    public function addElement(RenderableInterface $element)
    {
        $this->elements[] = $element;
    }
}
  • InputElement.php

';
    }
}
  • TextElement.php

text = $text;
    }

    public function render(): string
    {
        return $this->text;
    }
}

测试

  • Tests/CompositeTest.php

addElement(new Composite\TextElement('Email:'));
        $form->addElement(new Composite\InputElement());
        $embed = new Composite\Form();
        $embed->addElement(new Composite\TextElement('Password:'));
        $embed->addElement(new Composite\InputElement());
        $form->addElement($embed);

        // 此代码仅作示例。在实际场景中,现在的网页浏览器根本不支持
        // 多表单嵌套,牢记该点非常重要

        $this->assertEquals(
            '
Email:Password:
', $form->render() ); } }

PHP 互联网架构师成长之路*「设计模式」终极指南

PHP 互联网架构师 50K 成长指南+行业问题解决总纲(持续更新)

面试10家公司,收获9个offer,2020年PHP 面试问题

★如果喜欢我的文章,想与更多资深开发者一起交流学习的话,获取更多大厂面试相关技术咨询和指导,欢迎加入我们的群啊,暗号:phpzh(群号码856460874)。

2020年最新PHP进阶教程,全系列!

PHP设计模式之组合模式(Composite) 代码实例大全(12)_第2张图片

内容不错的话希望大家支持鼓励下点个赞/喜欢,欢迎一起来交流;另外如果有什么问题 建议 想看的内容可以在评论提出

你可能感兴趣的:(php面试经验,PHP设计模式,php,设计模式,php,面试,php设计模式,组合模式(Composite))