{"id":567,"title":"php\u8bbe\u8ba1\u6a21\u5f0f-\u88c5\u9970\u5668\u6a21\u5f0f\u53ca\u5e94\u7528\u573a\u666f\u4e3e\u4f8b","good":0,"bad":0,"hit":1172,"created_at":"2023-01-19 06:21:40","content":"
<?php<\/p>
\/**<\/p>
* \u88c5\u9970\u5668\u6a21\u5f0f,\u4e0d\u6539\u53d8\u539f\u6765\u7684\u7a0b\u5e8f\uff0c\u5728\u5916\u9762\u518d\u5957\u4e00\u5c42\uff0c\u6709\u70b9\u50cf\u5957\u5a03<\/p>
* \u5e94\u7528\u4e3e\u4f8b\uff1a\u539f\u6765\u7684\u65b9\u6cd5\u539f\u6837\u8fd4\u56de\u6570\u636e\uff0c\u73b0\u5728\u5c06\u539f\u6765\u7684\u6570\u636e\u88c5\u9970\u6210xml\u6216json\u4f46\u4e0d\u6539\u53d8\u539f\u56e0\u7684\u7a0b\u5e8f<\/p>
*\/<\/p>
<\/p>
\/\/\u5b9a\u4e49\u63a5\u53e3<\/p>
interface renderInterface<\/p>
{<\/p>
public function renderData(): string;<\/p>
}<\/p>
<\/p>
\/\/service:\u539f\u6765\u7684\u5b9e\u73b0<\/p>
class service implements renderInterface<\/p>
{<\/p>
private $data;<\/p>
<\/p>
public function __construct($data)<\/p>
{<\/p>
$this->data = $data;<\/p>
}<\/p>
<\/p>
public function renderData(): string<\/p>
{<\/p>
return $this->data;<\/p>
}<\/p>
}<\/p>
<\/p>
\/\/\u540e\u6765\u8981\u5c06\u6570\u636e\u8f6c\u6210json\u6216xml\u683c\u5f0f<\/p>
abstract class newService implements renderInterface<\/p>
{<\/p>
protected $wrapped;<\/p>
<\/p>
\/\/\u5c06\u539f\u6765\u7684service\u4f20\u8fdb\u6765\uff0c\u56e0\u4e3a\u5176\u5b9e\u73b0\u4e86renderInterface,\u6240\u4ee5\u8fd9\u91cc\u7684\u7c7b\u578b\u63d0renderInterface<\/p>
public function __construct(renderInterface $renderer)<\/p>
{<\/p>
$this->wrapped = $renderer;<\/p>
}<\/p>
}<\/p>
<\/p>
class jsonService extends newService<\/p>
{<\/p>
public function renderData(): string<\/p>
{<\/p>
return json_encode(['old' => $this->wrapped->renderData()], JSON_UNESCAPED_UNICODE);<\/p>
}<\/p>
<\/p>
}<\/p>
<\/p>
\/\/\u8c03\u7528<\/p>
$service = new service('\u539f\u59cb\u6570\u636e');<\/p>
echo $service->renderData() . "<br\/>";<\/p>
$jsonService = new jsonService($service);<\/p>
echo $jsonService->renderData();<\/p>
<\/p>
\u8fd0\u884c\u7ed3\u679c\uff1a<\/p>
\u539f\u59cb\u6570\u636e<\/span>
{"old":"\u539f\u59cb\u6570\u636e"}<\/span><\/p>
<\/p>"}