PHP 5.3.8を使用しています。 Adoption
インスタンスをシリアライズ複数のオブジェクトをPHPでファイルにシリアライズすると、シリアル化できませんか?
、save($adoption)
は、区切り文字を追加し、その後、内容が上explode()
S、テキストファイルを開く、テキストファイルの末尾に追加して、loadAdoptions()
デリミタであり、unserialize()
■forループ内の各オブジェクトが配列explode()
の内容を返してから返され、その後Display()
が呼び出されます。
ここに私の問題を再現する最短の形式です:Display()
が呼び出されたライン38、オン
<html><head><title>Request Processed</title></head><body>
<?php
class Dog {
var $name;
}
class Adoption
{
var $dog;
function Display()
{
echo $dog->name;
}
}
function save($adoption)
{
file_put_contents("../adoptions/adoptions.txt", (serialize($adoption)."<!-- E -->"));
}
function loadAdoptions()
{
$filename = '../adoptions/adoptions.txt';
if (file_exists($filename))
{
$datain = file_get_contents($filename);
$out = explode("<!-- E -->", $datain);
echo "<br /><u>Retrieved Data</u><br />";
$count = count($out);
echo 'Count: '.$count;
for ($i = 0; i < $count; $i++)
{
$curAdoption = unserialize($out[i]);
if (curAdoption)
echo $curAdoption->Display();
else
echo 'Error Reading Record.';
echo '<br />';
}
}
}
$newDog = new Dog();
$newDog->name = "Scruffles";
$newAdoption = new Adoption();
$newAdoption->dog = newDog;
save(newAdoption);
loadAdoptions();
?>
</body></html>
、Fatal error: Call to a member function Display() on a non-object
してください – deceze
デリミタは、オブジェクトのシリアル化されたバージョンのどこにも表示されませんか? – rdlowrey
@deceze私の謝罪、私はそれは比較的だったので、私は考えました大規模なサンプル、それはより多くの裁判所かもしれませんここにすべてダンプするのではなく、別の場所にホストすること。 – NobodyNothing