在文本文件中写入和读取php对象?

时间:2013-09-08 06:27:43

标签: php file fopen fread

我想在文本文件中编写一个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"

我想要一种简单的方法将此对象写入文本文件,并希望读取文件以获取我定义的属性。请帮帮我。

提前致谢。

2 个答案:

答案 0 :(得分:22)

您可以在文本文件中使用以下代码来编写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;
    }
}

答案 1 :(得分:3)

您可以在将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

然后你可以反序列化():

{{1}}