Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.11.2010, 00:05
Аватар для Golovastik
Профессор
Отправить личное сообщение для Golovastik Посмотреть профиль Найти все сообщения от Golovastik
 
Регистрация: 12.08.2010
Сообщений: 221

Указатель this
Написал для теста простой код, он хоть и выводит цифру 7, но выводит перед этой цифрой ошибку, почему так?
Код:
class A{
var $x1, $x2;
function setname(){
echo $this->$x1 = 7;

}
}
$object = new A;
$object->setname();
: Undefined variable: x1 in......

Но я же инициализировал свойство x1, почему ошибка?
Ответить с цитированием
  #2 (permalink)  
Старый 20.11.2010, 01:11
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

удалено.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.

Последний раз редактировалось Gozar, 02.02.2011 в 15:10.
Ответить с цитированием
  #3 (permalink)  
Старый 20.11.2010, 01:46
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

судя по всем на PHP
и ошибка в том, что к свойствам надо обращаться так:
$this->x1

а не как вы .

хотя ваш способ записи ИНОГДА, очень редко также применим.
следующая запись означает
$this->$x1

1)взять ЛОКАЛЬНУЮ переменную $x1(ваш код выдает ошибку в этот момент, так как перменная не существует)
2)привести эту переменную к строке(несуществующая переменная приводится к пустой строке)
3)взять свойство объекта, имеющее полученное из строки имя(в данном случае свойство с пустым именем. но такие свойства недопустимы,и выпадает Fatal error)

пример на понимание:
<?php
class A{
var $x1, $x2;
function setname(){
$x1 = 'x2';
$this->x1 = 1;//записывает в $this->x1
$this->$x1 = 2;//записывает в $this->x2, так как $x1 = 'x2';
$this->{$x1} = 2;//ТО же самое, что и перед этим, но более универсальная запись
$this->{"x2"} = 2;//и еще один способ записи
$this->{"x".(2)} = 2;//и еще один способ записи
echo $this->x1.'<br />';
echo $this->x2.'<br />';

}
}
$object = new A;
$object->setname();
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатель на функцию. Автосмена картинок Vova_ET Ваши сайты и скрипты 14 24.08.2010 15:53
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32
bind: как передать функции указатель на объект trial jQuery 4 25.05.2010 01:35
Указатель на объект? mat_ppc Общие вопросы Javascript 0 29.04.2010 21:33
Можно ли установить указатель мыши в любое место окна браузера? DVVID Events/DOM/Window 8 24.02.2010 12:37