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]   

> Без описания
jonston
Отправлено: 24 Мая, 2011 - 12:21:33
Post Id



Посетитель


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


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




Почему выдает ошибку при попытке:
PHP:
скопировать код в буфер обмена
  1.  
  2. private $file_root = $_SERVER['DOCUMENT_ROOT']
  3.  

?


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
nikob
Отправлено: 24 Мая, 2011 - 12:23:46
Post Id


Новичок


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


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




jonston пишет:
Почему выдает ошибку при попытке:
PHP:
скопировать код в буфер обмена
  1.  
  2. private $file_root = $_SERVER['DOCUMENT_ROOT']
  3.  

?


Весь код?
Какую именно ошибку?
 
 Top
EuGen Администратор
Отправлено: 24 Мая, 2011 - 12:24:34
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Потому что это - приватное свойство. Оно может быть прочтено/изменено только из самого класса (запрещено даже потомкам).
Чтобы установить, сделайте так:
PHP:
скопировать код в буфер обмена
  1.  
  2. class foo
  3. {
  4.    private $bar;
  5.    function setBar($value)
  6.    {
  7.       $this->bar=$value;
  8.    }
  9. }
  10. $baz=new foo;
  11. $baz->setBar('test');
  12.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 24 Мая, 2011 - 12:33:08
Post Id



Посетитель


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


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




EuGen пишет:
Потому что это - приватное свойство. Оно может быть прочтено/изменено только из самого класса (запрещено даже потомкам).
Чтобы установить, сделайте так:
PHP:
скопировать код в буфер обмена
  1.  
  2. class foo
  3. {
  4.    private $bar;
  5.    function setBar($value)
  6.    {
  7.       $this->bar=$value;
  8.    }
  9. }
  10. $baz=new foo;
  11. $baz->setBar('test');
  12.  



private $success_pref = '<div class="success">';
private $success_suff = '</div>';
private $error_pref = '<div class="error">';
private $error_suff = '</div>';
private $file_types = 'gif|jpg|png|psd|txt|doc|php|html|css|xml|js';
public $root = $_SERVER['DOCUMENT_ROOT'];

поставил public но все равно выдает
Parse error: syntax error, unexpected T_VARIABLE in Z:\home\manadger.dev\www\application\controllers\task.php on line 9

я использую фреймворк может поэтому?


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 24 Мая, 2011 - 12:34:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




jonston пишет:
Parse error

Потому что ошибка - где-то забыли ; или еще что-то, фреймворк тут ни при чем. Как найти?
http://phpfaq[dot]ru/debug


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 24 Мая, 2011 - 12:37:57
Post Id



Посетитель


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


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




EuGen пишет:
jonston пишет:
Parse error

Потому что ошибка - где-то забыли ; или еще что-то, фреймворк тут ни при чем. Как найти?
http://phpfaq.ru/debug


private $success_pref = '<div class="success">';
private $success_suff = '</div>';
private $error_pref = '<div class="error">';
private $error_suff = '</div>';
private $file_types = 'gif|jpg|png|psd|txt|doc|php|html|css|xml|js';
public $root = '';

вот теперь ошибки нет.Именно когда пытаюсь присвоить значение переменной публичному свойству (вообще любому свойству).

(Отредактировано автором: 24 Мая, 2011 - 12:39:36)



-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 24 Мая, 2011 - 12:43:36
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Ну очевидно потому, что нельзя использовать конструкцию, подобную Вашей, при объявлении переменной. А можно только константные значения.
Думал, сами найдете.
Эх. Инициализируйте в конструкторе.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
jonston
Отправлено: 24 Мая, 2011 - 12:45:41
Post Id



Посетитель


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


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




EuGen пишет:
Ну очевидно потому, что нельзя использовать конструкцию, подобную Вашей, при объявлении переменной. А можно только константные значения.
Думал, сами найдете.
Эх. Инициализируйте в конструкторе.

может мне лучше перейти на php 5.3?
Спасибо за помощь!))

(Отредактировано автором: 24 Мая, 2011 - 12:46:24)



-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
EuGen Администратор
Отправлено: 24 Мая, 2011 - 12:47:57
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




jonston пишет:
может мне лучше перейти на php 5.3?

Там тоже нельзя.
Поймите, что объявляя

Вы не инициализируете переменную, а задаете ей значение по-умолчанию. Вы все так же должны ее инициализировать в конструкторе. Это если следовать логике и "хорошему тону". Если будете так делать - вопросы отпадут и придет понимание.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
OrmaJever Модератор
Отправлено: 24 Мая, 2011 - 12:48:12
Post Id



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


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


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




jonston пишет:
может мне лучше перейти на php 5.3?

на php 5.3 тоже самое.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
jonston
Отправлено: 24 Мая, 2011 - 12:54:10
Post Id



Посетитель


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


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




EuGen пишет:
jonston пишет:
может мне лучше перейти на php 5.3?

Там тоже нельзя.
Поймите, что объявляя

Вы не инициализируете переменную, а задаете ей значение по-умолчанию. Вы все так же должны ее инициализировать в конструкторе. Это если следовать логике. Если будете так делать - вопросы отпадут и придет понимание.

А зачем? Я же уже задал ей значение!Потом если нужно будет я переопределю значение.Или так не рекомендуется?

Еще вопрос если можно:

Почему нельзя задавать аргумент метода свойством класса?
PHP:
скопировать код в буфер обмена
  1.  
  2.     public function some_func($this->some_var)
  3.     {
  4.         //что нибудь...
  5.     }
  6.  


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
OrmaJever Модератор
Отправлено: 24 Мая, 2011 - 13:00:45
Post Id



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


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


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




jonston пишет:
Почему нельзя задавать аргумент метода свойством класса?

потому что это аргумент для метода причём тут свойство? Как оно должно работать по вашему?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
EuGen Администратор
Отправлено: 24 Мая, 2011 - 13:05:39
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Используйте $this внутри метода, это не нужно передавать (и так доступно)
Почему надо инициализировать? Хороший тон, если хотите.
Ведь задавая значением по-умолчанию нечто, заранее неизвестно, Вы ухудшаете стабильность работы кода как минимум (и это может привести к трудноотлавливаемым логическим ошибкам)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 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