Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Клонирование
 
 автор: dios™   (08.05.2010 в 23:28)   письмо автору
 
 

При попытке переопределения клонирования:

<?php
class Test    {
    public 
$m;
    public function 
__clone()    {
        echo 
'Klonirovanije<br />';
        
$this->$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™   (09.05.2010 в 22:42)   письмо автору
 
   для: dios™   (08.05.2010 в 23:28)
 

up

  Ответить  
 
 автор: cheops   (13.05.2010 в 16:56)   письмо автору
 
   для: dios™   (08.05.2010 в 23:28)
 

Хм... а разве $that-> вводили? Что-то мимо меня прошло... Хотя вполне могло быть, синтаксис клонирования постоянно перетряхивается...

  Ответить  
 
 автор: dios™   (29.05.2010 в 00:27)   письмо автору
 
   для: cheops   (13.05.2010 в 16:56)
 

Наверное в вашей книжке опечатка:
Самоучитель PHP 5, 2005 год, страница 239, абзац второй сверху и
Стр. 240, функция: public function __clone() { ... }

если ваш авторский экземпляр первого издания под рукой, то там такую конструкцию можно найти :)

  Ответить  
 
 автор: cheops   (29.05.2010 в 11:04)   письмо автору
 
   для: 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;
?>

  Ответить  
 
 автор: dios™   (29.05.2010 в 17:38)   письмо автору
 
   для: cheops   (29.05.2010 в 11:04)
 

Спасибо за комментарий. Я не в коем случае не качу бочку на вашу книгу, именно с неё все началось для меня. Это что-то вроде Азбуки для Веб-программиста или можно сказать что почти даже что-то святое в некотором плане :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования