Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: PHP 5 - вопросы и критика
Показать сообщение отдельно

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Продолжаю изучать PHP5. Запускаю такой код (ПЕРЕПИСАН ИЗ КНИГИ "PHP5, библиотека профессоинала" Леона Аткинсона и Зеева Сураски).
<?php
class ObjectTracker
{
private static $nextSerial = 0;
private $id;
private $name;
function __construct($name)
{
$this->name = $name;
$this->id = ++self::$nextSerial;
}
function __clone()
{
$this->name = "Клон $that->name";
$this->id = ++self::$nextSerial;
}
function getId()
{
return($this->id);
}
function getName()
{
return($this->name);
}
}
$ot = new ObjectTracker("Объект Зеева");
$ot2 = $ot->__clone();
print($ot->getId() . " " .$ot->getName() . "<br>");
print($ot2->getId() . " " .$ot2->getName() . "<br>");
?>

В ответ броузер выдает
Fatal error: Cannot call __clone() method on objects - use 'clone $obj' instead in C:\Program Files\Apache Group\Apache2\htdocs\listing6_4.php on line 27
Послушавшись его, 27-ю строчку исправляю на $ot2 = clone $ot; (может, конечно, неправильно поняла, ЧТО он имел ввиду в своих указаниях: use 'clone $obj' instead in...),
в результате после изменений броузер выдал:

Notice: Undefined variable: that in C:\Program Files\Apache Group\Apache2\htdocs\listing6_4.php on line 14

Notice: Trying to get property of non-object in C:\Program Files\Apache Group\Apache2\htdocs\listing6_4.php on line 14
1 Объект Зеева
2 Клон

Должно быть, конечно же:
1 Объект Зеева
2 Клон Объект Зеева
но так как that почему-то стал Undefined variable имя у клона получается обрезанное на половине...

Отправлено: 15:20, 23-10-2005 | #43

Название темы: PHP 5 - вопросы и критика