Использование PHP 5.3.8.
Я пытаюсь реализовать две функции: save($adoption)
, который сериализует экземпляр Adoption
, добавляет разделитель, затем добавляет его в конец текстового файла, и loadAdoptions()
, который открывает текстовый файл explode()
s содержит содержимое разделителя, и unserialize()
s каждый объект в цикле for просматривает содержимое возвращаемого массива explode()
, затем вызывает Display()
для них.
Вот кратчайшая форма, воспроизводящая мою проблему:
<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>
В строке 38, где вызывается Display()
, Fatal error: Call to a member function Display() on a non-object