php将文本内容写入一个文件(面向对象写法)
2024-01-10 05:59:20
1、JsonContentHandler
class JsonContentHandler extends ContentHandler
{
public function write(): bool
{
$json = json_encode($this->contents, JSON_UNESCAPED_UNICODE);
if (file_put_contents($this->source, $json) !== false) {
return true;
} else {
return false;
}
}
public function read(): bool
{
$json = file_get_contents($this->source);
if (!$json) {
return false;
}
$this->contents = json_decode($json, true);
return true;
}
}
2、XmlContentHandler
class XmlContentHandler extends ContentHandler
{
public function write(): bool
{
// TODO: 实现写入xml函数.
}
public function read(): bool
{
// TODO: 实现读取xml函数
}
}
3、ContentHandler
abstract class ContentHandler
{
protected $source;
protected $contents = [];
public function __construct($source)
{
$this->source = $source;
}
public function addContent(string $key, string $val)
{
$this->contents[$key] = $val;
}
public function getAllContents(): array
{
return $this->contents;
}
public static function getInstance(string $filename): ContentHandler
{
if (preg_match("/\.xml$/i", $filename)) {
return new XmlContentHandler($filename);
} elseif (preg_match("/\.json$/i", $filename)) {
return new JsonContentHandler($filename);
} else {
throw new Exception("暂不支持该文件类型");
}
}
abstract public function write(): bool;
abstract public function read(): bool;
}
4、客户端调用
//功能1读写
$test = ContentHandler::getInstance(__DIR__ . "/test.json");
$test->addContent("name", "张三");
$test->addContent("sex", "男");
$test->addContent("age", 20);
$result = $test->write();
if (!$result) {
echo '数据写入文件失败!';
exit;
}
$contents = $test->getAllContents();
var_export($contents);
exit;
/** 输出
* array (
* 'name' => '张三',
* 'sex' => '男',
* 'age' => '20',
* )
*/
//功能二:只读
$test = ContentHandler::getInstance(__DIR__ . "/test.json");
$test->read();
$contents = $test->getAllContents();
var_export($contents);exit;
/** 输出
* array (
* 'name' => '张三',
* 'sex' => '男',
* 'age' => '20',
* )
*/
文章来源:https://blog.csdn.net/cai6595470/article/details/135492306
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!