| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Перменные в класе |
| Автор: taral 20.2.2008, 20:24 |
| Я думаю что вопрос не сложный. В принципе я и сам мог бы прочитать это в книге. Но я решил спросить у вас, прежде чем рытся в литературе. Есть обьект. В нем, function_1 генерирует значение одной переменной. Как передать это значение к function_2 этого обьекта. Но есть пару условий. Это значение не должно быть доступно из вне. И еще. Нужна работа такого плана. Я вызвал function_1 этого обьекта. Потом я делаю другую работу. Потом вызываю function_2 (никаких в нее параметров не передаю) И она выводит результат на основе данных что сгенерировала function_1. У меня есть идея реализовать это с помощью жесткой ссылки. Что думаете? |
| Автор: solenko 20.2.2008, 20:26 | ||||
Очень правильная мысль.
Если расскажите что такое "жесткая ссылка" в PHP, то обязательно выскажу свое мнение. |
| Автор: taral 20.2.2008, 20:35 | ||
задается через & Например $a=&$b; теперь когда мы изменяем $a изменяется $b и наоборот. Есть еще символическая ссылка. это просто $a=$b; |
| Автор: solenko 20.2.2008, 20:43 |
| Странно... Я всегда думал, что в php есть только просто ссылки... Вы не могли бы привести цитату из мануала, в котором вы прочли о том что бывают жесткие ссылки и что $a = $b в случае работы с простыми типами данных не присваивание значения, а символичесая ссылка? |
| Автор: FractalizeR 20.2.2008, 20:49 | ||
Чую изврат какой-то
Приватное или защищенное поле класса чем не устраивает? Зачем городить "жесткие" и "мягкие" ссылки? Кстати, $a=$b никакой ссылкой не является. Ни жесткой, ни мягкой, ни символической. Разве что если $a и $b будут объектами. А вообще, если вы расскажете по-подробнее зачем вам понадобилось такое решение, будет легче советовать. Вы описали абстрактную задачу, которую пытаетесь решить очень странным способом. Такие способы нормальные люди не используют. |
| Автор: taral 20.2.2008, 20:50 | ||||
PHP 5 в подлиннике (Дмитрий Котеров) 220 страница. Этой книге точно стоит доверять) Добавлено через 5 минут и 41 секунду
Да вы правы. Тут я ошибся Полность все задачу обьяснять будет очень долго. Потому я приведу подобный случай. В function_1 генерируется случайная комната (ширина, длинна, высота) В вызвав function_2 я получаю обьем этой комнаты. |
| Автор: FractalizeR 20.2.2008, 20:55 | ||
Я не знаю, откуда Дмитрий взял эти термины, но в официальном мануале их нет. Я не стал бы использовать такие формулировки на форумах. Вас могут не понять. |
| Автор: taral 20.2.2008, 20:56 | ||
| И еще. mishaSL большое спасибо что откликнулись. Добавлено через 1 минуту и 47 секунд
Хорошо не буду. Просто я много где встречал этот термин. Добавлено через 2 минуты и 31 секунду Только как мне называть тогда "Жесткую ссылку"? |
| Автор: FractalizeR 20.2.2008, 21:02 | ||||
Я понял вас. Но почему бы не сделать так (используя классы как записи):
|
| Автор: solenko 20.2.2008, 21:06 | ||
Чот-то я сильно сомневаюсь что стоит. Глянул -- действительно автор называет символическими ссылками то, что в мануале называется "Variable variables". |
| Автор: FractalizeR 20.2.2008, 21:10 | ||
Конечно, я не являюсь авторитетом в данном вопросе, но их лучше называть просто ссылками (references), как их называет мануал PHP. В этом случае можно считать, что: $a = &$b - ссылка на переменную $b $a = $b - просто присваивание. Ссылок нет. $obj1 = $obj2 - $obj1 и $obj2 указывают на один и тот же объект (являются ссылками на него) $a = "hello"; $$a = "world"; - мануал PHP такие случаи называет "variable variables" На русский этот термин http://ru2.php.net/manual/ru/language.variables.variable.phpпереведен как "переменные имена переменных. |
| Автор: solenko 20.2.2008, 21:12 | ||
FractalizeR, как-то не в ООП стиле. Уж скорее:
Что в точности дублирует первый пост mishaSL. |
| Автор: FractalizeR 20.2.2008, 21:12 | ||||
А еще лучше преобразовать вот это
в нормальный ООП стиль:
Добавлено через 54 секунды solenko, Сорри, пока писал, мысль скользнула в сторону |
| Автор: taral 20.2.2008, 21:16 | ||
Можно. Хорошо я раскрою все свои карты) Я хочу сделать обьект защиты от роботов Цель такая: Пользователю выводится вопрос (типа такого: Выберите картинку с слоном) Ниже выводится одна картинка (которая создается из 9-ти случайных картинок) Теперь про обьект. function question(){ выводит вопрос к картинке } function create(){ выбирает из базы данных 9 картинок и вопрос к одной из них } function show(){ склеивает картинки имена которых сгенерировала функция create показывает картинку } function check($x, $y){ проверяет правильную ли картинку выбрал юзер если правильную возвращает тру } в $x, $y задаются координаты точки в которую нажал пользователь |
| Автор: solenko 20.2.2008, 21:19 |
| taral, все это никак не поясняет зачем вам нужно скрывать переменные. Но, зная задачу, могу сказать что вам не о видимости полей объекта нужно думать, а о session |
| Автор: taral 20.2.2008, 21:42 | ||
Забудем про скрывание переменных. Я это сказал с только одной целью. Чтобы не обьяснять что функция должна генерировать данные. А поскольку я это уже сказал. Скрывание полей уже не имеет смысла. Ну а вопрос с сессией уже решен. Я уже это реализовал. Но без использования обьекта. А теперь решил переписать код под обьектное програмирование. |
| Автор: FractalizeR 20.2.2008, 21:49 |
| Отлично |