以单个对象的方式来对待一组对象
Renderable.php
<?php declare(strict_types=1); namespace DesignPatternsStructuralComposite; interface Renderable { public function render(): string; }
Form.php
<?php declare(strict_types=1); namespace DesignPatternsStructuralComposite; class Form implements Renderable { private array $elements; public function render(): string { $formCode = "<form>"; foreach ($this->elements as $element) { $formCode .= $element->render(); } return $formCode . "</form>"; } public function addElement(Renderable $element) { $this->elements[] = $element; } }
InputElement.php
<?php declare(strict_types=1); namespace DesignPatternsStructuralComposite; class InputElement implements Renderable { public function render(): string { return "<input type="text" />"; } }
TextElement.php
<?php declare(strict_types=1); namespace DesignPatternsStructuralComposite; class TextElement implements Renderable { public function __construct(private string $text) { } public function render(): string { return $this->text; } }
Tests/CompositeTest.php
<?php declare(strict_types=1); namespace DesignPatternsStructuralCompositeTests; use DesignPatternsStructuralCompositeForm; use DesignPatternsStructuralCompositeTextElement; use DesignPatternsStructuralCompositeInputElement; use PHPUnitFrameworkTestCase; class CompositeTest extends TestCase { public function testRender() { $form = new Form(); $form->addElement(new TextElement("Email:")); $form->addElement(new InputElement()); $embed = new Form(); $embed->addElement(new TextElement("Password:")); $embed->addElement(new InputElement()); $form->addElement($embed); // This is just an example, in a real world scenario it is important to remember that web browsers do not // currently support nested forms $this->assertSame( "<form>Email:<input type="text" /><form>Password:<input type="text" /></form></form>", $form->render() ); } }
本页面为您介绍 OceanBase 的产品价格。付费方式OceanBase 在金融区和非金融区收费不同,金融区相比非金融区安全性更高。主要付...
进入 OceanBase 开发者中心(OceanBase Developer Center,ODC)的数据库管理页面后,单击上方导航栏中的 工作台 标签,在弹出下...
OBClient 是一个交互式和批处理查询工具,需要单独安装。它是一个命令行用户界面,在连接到数据库时充当客户端,支持 OceanBase ...
在 SQL 调优中,针对慢 SQL 的分析步骤如下:通过全局 SQL 审计表 (g)v$sql_audit、 SQL Trace 和计划缓存视图查看 SQL 执行信息...
在 OceanBase 开发者中心(OceanBase Developer Center,ODC)点击连接名进入连接后,在左导航栏中点击表标签可以查看表列表。表...
以下为所有比较运算符列表:运算符操作数含义NULL 参与运算=二元等于。结果为 NULL。/!=二元不等于。结果为 NULL。二元大于。结...
更改登录消息可以通过在浏览器中执行以下操作来更改用户在使用Web3登录时看到的消息:Moralis.authenticate({signingMessage:"My...