|
|
|
| При попытке переопределения клонирования:
<?php
class Test {
public $m;
public function __clone() {
echo 'Klonirovanije<br />';
$this->m = $that->m;
}
}
?>
|
получается следующее сообщение об ошибке:
Notice: Undefined variable: that in C:\server\localhost\test2.php on line 6
Notice: Trying to get property of non-object in C:\server\localhost\test2.php on line 6
$that-> - убрали вообще что ли? При замене на $this-> все начинает работать ОК. Собственно вопрос: Применим ли "$that->" вообще для чего либо или нет? | |
|
|
|
|
|
|
|
для: dios™
(08.05.2010 в 23:28)
| | up | |
|
|
|
|
|
|
|
для: dios™
(08.05.2010 в 23:28)
| | Хм... а разве $that-> вводили? Что-то мимо меня прошло... Хотя вполне могло быть, синтаксис клонирования постоянно перетряхивается... | |
|
|
|
|
|
|
|
для: cheops
(13.05.2010 в 16:56)
| | Наверное в вашей книжке опечатка:
Самоучитель PHP 5, 2005 год, страница 239, абзац второй сверху и
Стр. 240, функция: public function __clone() { ... }
если ваш авторский экземпляр первого издания под рукой, то там такую конструкцию можно найти :) | |
|
|
|
|
|
|
|
для: dios™
(29.05.2010 в 00:27)
| | С тех пор процедуру клонирования несколько раз (по крайней мере 2 раза) уже изменили, тем более это 2004 год, т.е. эта глава писалась по бета-версии PHP. Сейчас для клонирования используется ключевое слово clone (по аналогии с ключевым словом new)
<?php
class cls
{
public $var;
public function __construct()
{
$this->var = 100;
echo "Вызов конструктора<br>";
}
}
$obj = new cls();
$new_obj = clone $obj;
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(29.05.2010 в 11:04)
| | Спасибо за комментарий. Я не в коем случае не качу бочку на вашу книгу, именно с неё все началось для меня. Это что-то вроде Азбуки для Веб-программиста или можно сказать что почти даже что-то святое в некотором плане :) | |
|
|
|