在文本文件中写入和读取 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 对象?的主要内容,如果未能解决你的问题,请参考以下文章

从文本文件中读取和写入字符串

QT读取文本文件

❥关于C++之写入/读取文本文件

php fread()函数读取文本直到文件尾却无法结束

如何在 Flutter 中从 firebase 存储读取和写入文本文件?

写入/读取文本文件 (C#)