在文本文件中写入和读取 php 对象?
Posted
技术标签:
【中文标题】在文本文件中写入和读取 php 对象?【英文标题】:Write and read php object in a text file? 【发布时间】:2013-09-11 22:19:27 【问题描述】:我想在一个文本文件中写一个 php 对象。 php对象是这样的
$obj = new stdClass();
$obj->name = "My Name";
$obj->birthdate = "YYYY-MM-DD";
$obj->position = "My position";
我想把这个 $obj 写在一个文本文件中。文本文件位于此路径中
$filePath = getcwd().DIRECTORY_SEPARATOR."note".DIRECTORY_SEPARATOR."notice.txt"
我想要一种简单的方法将此对象写入文本文件,并希望读取该文件以获取我定义的属性。请帮帮我。
提前致谢。
【问题讨论】:
【参考方案1】:您可以使用以下代码在文本文件中写入 php 对象...
$obj = new stdClass();
$obj->name = "My Name";
$obj->birthdate = "YYYY-MM-DD";
$obj->position = "My position";
$objData = serialize( $obj);
$filePath = getcwd().DIRECTORY_SEPARATOR."note".DIRECTORY_SEPARATOR."notice.txt";
if (is_writable($filePath))
$fp = fopen($filePath, "w");
fwrite($fp, $objData);
fclose($fp);
读取文本文件以获取您定义的属性...
$filePath = getcwd().DIRECTORY_SEPARATOR."note".DIRECTORY_SEPARATOR."notice.txt";
if (file_exists($filePath))
$objData = file_get_contents($filePath);
$obj = unserialize($objData);
if (!empty($obj))
$name = $obj->name;
$birthdate = $obj->birthdate;
$position = $obj->position;
【讨论】:
完美!我喜欢这个。非常感谢。 is_writable($filePath) 对我不起作用,因为它包含文件。我的路径实际上是可写的,但 is_writable 只有在没有文件名的情况下才为真。【参考方案2】:您可以在将其保存到文件之前使用serialize()
,然后使用unserialize()
来获取整个$obj
供您使用:
$obj = new stdClass();
$obj->name = "My Name";
$obj->birthdate = "YYYY-MM-DD";
$obj->position = "My position";
$objtext = serialize($obj);
//write to file
然后你可以反序列化():
$obj = unserialize(file_get_contents($file));
echo $obj->birthdate;//YYYY-MM-DD
【讨论】:
以上是关于在文本文件中写入和读取 php 对象?的主要内容,如果未能解决你的问题,请参考以下文章