Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перменные в класе 
V
    Опции темы
taral
Дата 20.2.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Я думаю что вопрос не сложный.
В принципе я и сам мог бы прочитать это в книге.
Но я решил спросить у вас, прежде чем рытся в литературе.
Есть обьект.
В нем, function_1 генерирует значение одной переменной.
Как передать это значение к function_2 этого обьекта.
Но есть пару условий. Это значение не должно быть доступно из вне.
И еще.
Нужна работа такого плана.
Я вызвал function_1 этого обьекта.
Потом я делаю другую работу.
Потом вызываю function_2 (никаких в нее параметров не передаю)
И она выводит результат на основе данных что сгенерировала function_1.
У меня есть идея реализовать это с помощью жесткой ссылки. Что думаете?
PM MAIL   Вверх
solenko
Дата 20.2.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата

В принципе я и сам мог бы прочитать это в книге.

Очень правильная мысль.
Цитата

У меня есть идея реализовать это с помощью жесткой ссылки. Что думаете?

Если расскажите что такое "жесткая ссылка" в PHP, то обязательно выскажу свое мнение.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
taral
Дата 20.2.2008, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Цитата

жесткая ссылка

задается через &
Например $a=&$b;
теперь когда мы изменяем $a изменяется $b и наоборот.
Есть еще символическая ссылка.
это просто $a=$b;
PM MAIL   Вверх
solenko
Дата 20.2.2008, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Странно... Я всегда думал, что в php есть только просто ссылки... Вы не могли бы привести цитату из мануала, в котором вы прочли о том что бывают жесткие ссылки и что $a = $b в случае  работы с простыми типами данных не присваивание значения, а символичесая ссылка?


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
mishaSL
Дата 20.2.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(taral @  20.2.2008,  20:24 Найти цитируемый пост)
В принципе я и сам мог бы прочитать это в книге.
Но я решил спросить у вас, прежде чем рытся в литературе.

Лучше почитать сначало литературу, ответ на поставленный вопрос не заменит прочтение теоретической части.

Вот пример:
Код

<?php
class MyClass
{
    private $property;
    
    public function MyFunc1()
    {
        $this->property = 'abc';
    }

    public function MyFunc2()
    {        
        print $this->property;
    }

}

$myObj = new MyClass();

$myObj->MyFunc1();
$myObj->MyFunc2();
?>



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
FractalizeR
Дата 20.2.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Чую изврат какой-то smile

Цитата

Есть обьект.
В нем, function_1 генерирует значение одной переменной.
Как передать это значение к function_2 этого обьекта.
Но есть пару условий. Это значение не должно быть доступно из вне.


Приватное или защищенное поле класса чем не устраивает? Зачем городить "жесткие" и "мягкие" ссылки? Кстати, $a=$b никакой ссылкой не является. Ни жесткой, ни мягкой, ни символической. Разве что если $a и $b будут объектами.

А вообще, если вы расскажете по-подробнее зачем вам понадобилось такое решение, будет легче советовать. Вы описали абстрактную задачу, которую пытаетесь решить очень странным способом. Такие способы нормальные люди не используют.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
taral
Дата 20.2.2008, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Цитата

Странно... Я всегда думал, что в php есть только просто ссылки... Вы не могли бы привести цитату из мануала, в котором вы прочли о том что бывают жесткие ссылки и что $a = $b в случае  работы с простыми типами данных не присваивание значения, а символичесая ссылка?

PHP 5 в подлиннике (Дмитрий Котеров) 220 страница.
Этой книге точно стоит доверять)

Добавлено через 5 минут и 41 секунду
Цитата

Кстати, $a=$b никакой ссылкой не является.

Да вы правы. Тут я ошибся
Полность все задачу обьяснять будет очень долго. Потому я приведу подобный случай.
В function_1 генерируется случайная комната (ширина, длинна, высота)
В вызвав function_2 я получаю обьем этой комнаты.
PM MAIL   Вверх
FractalizeR
Дата 20.2.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Цитата

PHP 5 в подлиннике (Дмитрий Котеров) 220 страница.
Этой книге точно стоит доверять)


Я не знаю, откуда Дмитрий взял эти термины, но в официальном мануале их нет. Я не стал бы использовать такие формулировки на форумах. Вас могут не понять.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
taral
Дата 20.2.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



И еще.
mishaSL большое спасибо что откликнулись.

Добавлено через 1 минуту и 47 секунд
Цитата

Я не знаю, откуда Дмитрий взял эти термины, но в официальном мануале их нет. Я не стал бы использовать такие формулировки на форумах. Вас могут не понять.

Хорошо не буду. Просто я много где встречал этот термин.

Добавлено через 2 минуты и 31 секунду
Только как мне называть тогда "Жесткую ссылку"?
PM MAIL   Вверх
FractalizeR
Дата 20.2.2008, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Цитата

В function_1 генерируется случайная комната (ширина, длинна, высота)
В вызвав function_2 я получаю обьем этой комнаты. 


Я понял вас. Но почему бы не сделать так (используя классы как записи):

Код

<?php

class Room {

    public $_length;

    public $_width;

    public $_height;
}

function generateRoom() {
    $myRoom = new Room();
    $myRoom->lenght = rand(10, 30);
    $myRoom->width = rand(10, 30);
    $myRoom->height = rand(10, 30);
    return $myRoom;
}

function getRoomVolume(Room $room) {
    return $room->_length * $room->_width * $room->_height;
}
?>


Это сообщение отредактировал(а) FractalizeR - 20.2.2008, 21:10


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
solenko
Дата 20.2.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата

PHP 5 в подлиннике (Дмитрий Котеров) 220 страница.
Этой книге точно стоит доверять)

Чот-то я сильно сомневаюсь что стоит. Глянул --  действительно автор называет символическими ссылками то, что в мануале называется "Variable variables".  smile 



--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
FractalizeR
Дата 20.2.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Цитата(taral @ 20.2.2008,  20:56)
Только как мне называть тогда "Жесткую ссылку"?

Конечно, я не являюсь авторитетом в данном вопросе, но их лучше называть просто ссылками (references), как их называет мануал PHP. В этом случае можно считать, что:

$a = &$b - ссылка на переменную $b
$a = $b - просто присваивание. Ссылок нет.
$obj1 = $obj2 - $obj1 и $obj2 указывают на один и тот же объект (являются ссылками на него)

$a = "hello"; $$a = "world"; - мануал PHP такие случаи называет "variable variables" На русский этот термин здесьпереведен как "переменные имена переменных.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
solenko
Дата 20.2.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



FractalizeR, как-то не в ООП стиле. Уж скорее:
Код

class Room {

    private $_length;

    private $_width;

    private $_height;

    public function setRandParams() {
      $this->_length = rand();
      $this->_width = rand();
      $this->_height = rand();
   }

   public function getVolume() {
     return $this->_length*$this->_width*$this->_height;
   }
}


Что в точности дублирует первый пост mishaSL.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
FractalizeR
Дата 20.2.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



А еще лучше преобразовать вот это
Код
<?php
class Room {
    public $_length;
    public $_width;
    public $_height;
}
function generateRoom() {
    $myRoom = new Room();
    $myRoom->lenght = rand(10, 30);
    $myRoom->width = rand(10, 30);
    $myRoom->height = rand(10, 30);
    return $myRoom;
}
function getRoomVolume(Room $room) {
    return $room->_length * $room->_width * $room->_height;
}
?>


в нормальный ООП стиль:

Код
<?php
class Room {

    public $_length;

    public $_width;

    public $_height;

    function construct() {
        $this->lenght = rand(10, 30);
        $this->width = rand(10, 30);
        $this->height = rand(10, 30);
    }

    function getVolume(Room $room) {
        return $room->_length * $room->_width * $room->_height;
    }
}
?>


Добавлено через 54 секунды
solenko, 
Сорри, пока писал, мысль скользнула в сторону smile Уже исправился.


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
taral
Дата 20.2.2008, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Цитата

Я понял вас. Но почему бы не сделать так (скажем, в стиле ООП):

Можно.
Хорошо я раскрою все свои карты)
Я хочу сделать обьект защиты от роботов
Цель такая:
Пользователю выводится вопрос (типа такого: Выберите картинку с слоном)
Ниже выводится одна картинка (которая создается из 9-ти случайных картинок)
Теперь про обьект.
function question(){
выводит вопрос к картинке
}
function create(){
выбирает из базы данных 9 картинок и вопрос к одной из них
}

function show(){
склеивает картинки имена которых сгенерировала функция create
показывает картинку
}
function check($x, $y){
проверяет правильную ли картинку выбрал юзер
если правильную возвращает тру
}
в $x, $y задаются координаты точки в которую нажал пользователь


Это сообщение отредактировал(а) taral - 20.2.2008, 21:24
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.