magento2适配器设计模式适配器示例
7天成为Magento系统架构师,现在开始学习Magento全栈开发!
《Magento2.X企业级开发实战》
Magento 2 使用适配器设计模式的示例
Magento/Framework/Code/Minifier
Magento/Framework/Image
示例代码
下面的代码描述了一个适配器,接口解析。
/**
* Interface for markdown library adapters
*/
namespace MyCompany\MyModule\Markdown\Parser\Adapter;
interface AdapterInterface
{
/**
* Converts markdown text into another format
*
* @param string $text
* @return string
*/
public function parse($text);
}
AdapterInterface
使用 PHP-markdown库.
namespace MyCompany\MyModule\Markdown\Parser\Adapter\PhpMarkdown;
use \Michelf\Markdown;
use MyCompany\MyModule\Markdown\Parser\Adapter\AdapterInterface;
/**
* Adapter for php-markdown library
*/
class PhpMarkdown implements AdapterInterface
{
/**
* Convert markdown into HTML
*
* @param string $text
* @return string
*/
public function parse($text)
{
return Markdown::defaultTransform($text);
}
}
配置对象管理器(ObjectManager)使用PhpMarkdown 实施时要求的接口类型类的依赖关系,在你的di.xml文件中添加下面的代码。
<preference for="MyCompany\MyModule\Markdown\Parser\Adapter\AdapterInterface" type="MyCompany\MyModule\Markdown\Parser\Adapter\PhpMarkdown\PhpMarkdown" />
下面的代码是AdapterInterface
使用Ciconia库来解析到HTML交替实现类。
namespace MyCompany\MyModule\Markdown\Parser\Adapter\Ciconia;
use Ciconia\Ciconia;
use MyCompany\MyModule\Markdown\Parser\Adapter\AdapterInterface;
/**
* Adapter for the Ciconia library
*/
class CiconiaParser implements AdapterInterface
{
/**
* @var Ciconia
*/
protected $parser;
/**
* @param Ciconia
*/
public function __construct(Ciconia $parser)
{
$this->parser = $parser;
}
/**
* Convert markdown into HTML
*
* @param string $text
* @return string
*/
public function parse($text)
{
return $this->parser->render($text);
}
}
以下依赖注入条目属于di.xml
文件. 他们描述的对象管理器(ObjectManager)如何创建第三方和适配器类。
<virtualType name="defaultCiconia" type="Ciconia\Ciconia" shared="false">
<arguments>
<argument name="renderer" xsi:type="null"/>
</arguments>
</virtualType>
<type name="MyCompany\MyModule\Markdown\Parser\Adapter\Ciconia\CiconiaParser">
<arguments>
<argument name="parser" xsi:type="object">defaultCiconia</argument>
</arguments>
</type>
如无特殊说明或标注,任何个人或组织,复制、转载、采集本站内容请注明:
本文来源于:【Magento中文网】,并添加本文地址链接。
如未按上述操作复制或转载,本站有权追究法律责任。
若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
本文来源于:【Magento中文网】,并添加本文地址链接。
如未按上述操作复制或转载,本站有权追究法律责任。
若本站内容侵犯了原著者的合法权益,可联系我们进行处理。