Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: сессия внутри класса

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
zzzzzz
Отправлено: 26 Июня, 2013 - 22:12:17
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. if($_POST['module'] == 'notepad') $fileName->notepad();
  2.  
  3. class FileName
  4. {
  5.         var $uid = $_SESSION['uid'];
  6.  
  7.         function notepad(){
  8.                 print $this->uid;
  9.  
  10.         }
  11. }


выдает ошибку "<b>Parse error</b>: syntax error, unexpected '$_SESSION' (T_VARIABLE) in <b>/domains/handlers/nameEdit.php</b> on line <b>12</b><br />"

Почему SESSION является unexpected в классе?

(Отредактировано автором: 27 Июня, 2013 - 22:08:07)

 
 Top
_Dark_
Отправлено: 26 Июня, 2013 - 22:13:26
Post Id


Частый гость


Покинул форум
Сообщений всего: 231
Дата рег-ции: Окт. 2011  


Помог: 5 раз(а)

[+]


Документация:

Цитата:
Переменные, которые являются членами класса, называются "свойства". Также их называют, используя другие термины, такие как "аттрибуты" или "поля", но в рамках этой документации, мы будем называть их свойствами. Они определяются с помощью ключевых слов public, protected, или private, следуя правилам правильного описания переменных. Это описание может содержать инициализацию, но инициализация должна применяться для константных значений - то есть, переменные должны быть вычислены во время компиляции и не должны зависеть от информации программы во время выполнения для их вычисления.


Короче говоря, так делать нельзя, массив сессии не удовлетворяют этому требованию.

(Отредактировано автором: 26 Июня, 2013 - 22:18:24)

 
 Top
OrmaJever Модератор
Отправлено: 26 Июня, 2013 - 22:23:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




при объявлении свойства класса ему можно дать только статическое значение (число, строку, масив), но не переменую. Присвоить значения свойствам клааса можно/нужно в конструкторе.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
zzzzzz
Отправлено: 26 Июня, 2013 - 23:27:31
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




получается на момент интерпретации переменные внутри класса не преобразуются в числовой или текстовый вид?
 
 Top
caballero
Отправлено: 26 Июня, 2013 - 23:46:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
получается на момент интерпретации переменные внутри класса не преобразуются в числовой или текстовый вид?

сам хоть понял что написал?

говорят же - инициализировать переменную нестатическими данными следует в конструкторе.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
zzzzzz
Отправлено: 26 Июня, 2013 - 23:51:55
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




уже да
(Добавление)
всем спасибо се понял
(Добавление)
Блин я конечно извиняюсь за дотошность, но по какой причине нельзя не статичные данные передавать в переменную, есть логические объяснение этому, очень прошу ответить.
 
 Top
caballero
Отправлено: 27 Июня, 2013 - 00:30:39
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




потому что компилятор не умеет по другому, так же как например с константами.

Эти члены инициализируются при компиляции (точнее при загрузке класса в память). А в режиме выполнения уже работает конструктор.

примерно так.

(Отредактировано автором: 27 Июня, 2013 - 00:32:18)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
esterio
Отправлено: 27 Июня, 2013 - 00:53:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)





zzzzzz
Цитата:
Warning: require_once(***/language/uk.lng): in ***/theme/front.tpl.php on line 3

Fatal error: require_once(): Failed opening required '***/language/uk.lng' (include_path='.:/usr/local/zend-5.4/share/pear') in ***/theme/front.tpl.php on line 3

У Вас на сайте Радость Радость Радость
П.С. пути удалил
 
 Top
zzzzzz
Отправлено: 27 Июня, 2013 - 20:31:11
Post Id


Гость


Покинул форум
Сообщений всего: 117
Дата рег-ции: Янв. 2013  


Помог: 0 раз(а)




Исправил )
uk.lng пока нету, спасибо за найденный баг

(Отредактировано автором: 27 Июня, 2013 - 21:11:12)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB