【问题标题】:Write and read php object in a text file?在文本文件中写入和读取 php 对象?
【发布时间】: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"

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

提前致谢。

【问题讨论】:

    标签: php file fopen fread


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多