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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Приватное свойство?
DeepVarvar Супермодератор
Отправлено: 26 Октября, 2012 - 18:50:30
Post Id



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


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


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




Приватное свойство? Не понял
Кручу-верчу, запутать хочу:
PHP:
скопировать код в буфер обмена
  1. class foo {
  2.   private $value = 100;
  3.   public function &getValue() {
  4.     return $this->value;
  5.   }
  6. }
  7.  
  8. $obj = new foo;
  9. $myValue = &$obj->getValue();
  10. $myValue = 33;
  11. $x = $obj->getValue();
  12. echo $x; // 33

Руки отрывать за такое надо...
 
 Top
EuGen Администратор
Отправлено: 26 Октября, 2012 - 19:16:39
Post Id


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


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


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




Это равносильно объявлению сеттера, чему удивляться? (Правильнее: использование геттера как сеттера из-за передачи по ссылке)
С последним утверждением соглашусь.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 26 Октября, 2012 - 19:18:54
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




ммм. А что не так-то?
Если значение можно вернуть по ссылке (без объявление оного в &getValue фокус не работает) - оно приватным не может быть уже по определению.


-----
PostgreSQL DBA
 
 Top
DeepVarvar Супермодератор
Отправлено: 26 Октября, 2012 - 19:27:39
Post Id



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


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


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




Мелкий пишет:
А что не так-то?
Нет так то, что использовать такое поведение - жесть.
 
 Top
Мелкий Супермодератор
Отправлено: 26 Октября, 2012 - 20:22:13
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




goto; рекурсия; глобальные переменные; переменные переменные; вызов функции по значению переменной; упоминание пользовательских данных близко к SQL-запросам, выводу в браузер и операциям с файлами; любая работа с данными, переданными/полученными по ссылке; пространства имён (уверены ли вы, что знаете, какая именно функция будет здесь вызвана?) - далеко не полный список того, что должно вызывать чувство тревоги в той или иной мере...


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 26 Октября, 2012 - 20:47:25
Post Id


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


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


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




Верно, все вышеперечисленное - это side-effect в той или иной мере. Говоря кратко - все, что может повести себя неожиданно, не стоит использовать. А если к тому побуждает архитектура - то что-то где-то не так.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DlTA
Отправлено: 26 Октября, 2012 - 22:22:01
Post Id



Постоянный участник


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


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




Мелкий пишет:
рекурсия;
чего это?

Мелкий пишет:
упоминание пользовательских данных близко к SQL-запросам, выводу в браузер и операциям с файлами;
что это такое?
 
 Top
DeepVarvar Супермодератор
Отправлено: 26 Октября, 2012 - 22:44:49
Post Id



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


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


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




Мелкий, все из перечисленного выше, бывает явно необходимым. А для приведенного мной примера я не могу найти применение, которое бы отражало необходимость таких действий.

(Отредактировано автором: 26 Октября, 2012 - 22:45:14)

 
 Top
Мелкий Супермодератор
Отправлено: 26 Октября, 2012 - 22:47:31
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




DlTA пишет:
чего это?

Стыдно не знать Подмигивание
Вызов из функции саму себя, или несколько функций вызывающихся циклически (A>B>C>A>B>C>A)
Рекурсия - полезная вещь, но и хорошее место для ошибок одновременно.

DlTA пишет:
что это такое?

Это про то, что
PHP:
скопировать код в буфер обмена
  1. include $_GET['page'];
  2. copy($_FILES['uploadfile']['tmp_name'],"uploads/".$_FILES['uploadfile']['name']);
  3. mysql_query('select * from `table` where id='.$_POST['id']);

Должны тут же вызывать тревогу, даже если где-то выше в коде и есть какие-нибудь, соответственно:
PHP:
скопировать код в буфер обмена
  1. if (!in_array($_GET['page'],$rgAllowedPages)) $_GET['page'] = '404';
  2. $_FILES['uploadfile']['name'] = basename($_FILES['uploadfile']['name']);
  3. $_POST['id'] = intval($_POST['id']);

Мало ли поле переименовали, а эти проверки забыли исправить?
(Добавление)
DeepVarvar пишет:
все из перечисленного выше, бывает явно необходимым

Не бывает. Бывает удобным, но не необходимым.

DeepVarvar пишет:
А для приведенного мной примера я не могу найти применение, которое бы отражало необходимость таких действий.

Я тоже.
Как не понимаю и:
- частое желание людей при написании класса-адаптера к БД запихать и коннект и результаты в один класс
- идею наследоваться от коннекта, конфига, ещё чего-нибудь столь же невнятного
- и огромную кучу других невнятных решений


-----
PostgreSQL DBA
 
 Top
DlTA
Отправлено: 27 Октября, 2012 - 01:13:29
Post Id



Постоянный участник


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


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




странно, в инсте учили что рекурсия это правильно, а тут вдруг ее поставили на один ряд с goto
 
 Top
Мелкий Супермодератор
Отправлено: 27 Октября, 2012 - 10:16:17
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




DlTA, передача значений по ссылке - тоже хорошая вещь. К чему приводит - см. первое сообщение темы.
Цитируя Макконнелла,
Цитата:
Для малой группы задач рекурсия позволяет создавать простые, элегантные решения. Для несколько большей группы задач она позволяет создать простые, элегантные, трудные для понимания решения. Для большинства задач она создаёт исключительно запутанные решения - в таких случаях использование простых итераций обычно более понятно. Поэтому применяйте рекурсию выборочно.


-----
PostgreSQL DBA
 
 Top
DlTA
Отправлено: 27 Октября, 2012 - 14:34:34
Post Id



Постоянный участник


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


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




ну вот, вернулись к тому что всему свое место.
(Добавление)
Мелкий, а что кроме Макконнела было изучено?
 
 Top
Мелкий Супермодератор
Отправлено: 27 Октября, 2012 - 15:06:44
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




DlTA пишет:
ну вот, вернулись к тому что всему свое место.

Ну а как к этому можно не вернуться, если оно так и есть?

DlTA пишет:
а что кроме Макконнела было изучено?

Конкретно по вопросу рекурсий? Не припоминаю. А что, можете предложить чего почитать хорошего?


-----
PostgreSQL DBA
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Октября, 2012 - 16:58:33
Post Id



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


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


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




Мелкий пишет:
чего почитать хорошего?
Попова Радость
 
 Top
DlTA
Отправлено: 27 Октября, 2012 - 20:02:21
Post Id



Постоянный участник


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


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




Мелкий пишет:
Конкретно по вопросу рекурсий? Не припоминаю. А что, можете предложить чего почитать хорошего?
это был вопрос) и не по рекурсии, а по архитектуре ПО.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB