Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Закрытая темаСоздание новой темыСоздание опроса

> вызов свойства из метода
Kumirska  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 206
Пользователь №: 27755
На форуме: 13 лет, 10 месяцев, 15 дней
Карма: 1




привет Всем! натолкнулся на проблемку,не могу вызвать переопределенное конструктором свойство из другого метода класса.

class postHunt{
public $width;// ширина
public $height;// высота
public $quant;// количество заказов
public $prof;//номер типа профиля
public $prof_type;//название типа профиля(оптима,премиум)
public $cam;//количество камер
public $price;// Цена
public $pub_type;//тип расчета
public $tglass;//вид стекла
public $glass_type;// название вида стекла(И,М..)
public $spacer_type;// вид рамки стеклопакета(суперспэйсер и тп)
public $spacer;//номер типа рамки стеклопакета
public $argon;//аргон(число)
public $checkbox;//отмечена или нет
public $cgl;//свитчем определяем в переменную цену стекла
public function __construct($type){
if(isset($_POST['calculate'])){
$type = clearData($type,"i");
$this -> pub_type = $type;
switch($type){
case 1: $this -> f1stv_1(); break;
case 2: $this -> f1stv_2(); break;
case 3: $this -> f1stv_3(); break;
case 4: $this -> f1stv_4(); break;
case 5: $this -> f1stv_5(); break;
case 6: $this -> f1stv_6(); break;
}
////////////////////-----------------
/* */
///////////////////------------------
}
if(isset($_POST['reset'])){
$type = clearData($type,"i");
redJs($link="windows.php?type=$type");
exit;
}
if(isset($_POST['close'])){
redJs($link="windows.php");
exit;
}
//переопределение переменных
//здесь на всякий случаем переопределить все переменные,так как формулы разные,параметры другие

if(isset($_POST['width'])) $this -> width = clearData($_POST['width'],"i");
else $this -> width = '';
//
if(isset($_POST['height'])) $this -> height = clearData($_POST['height'],"i");
else $this -> height = '';
//
if(isset($_POST['quant'])) $this -> quant = clearData($_POST['quant'],"i");
else $this -> quant = 1;
//
if(isset($_POST['prof'])) $this -> prof = clearData($_POST['prof'],"i");
else $this -> prof = 2;
if($this -> prof==1) $this -> prof_type = 'Proplex Premium';
else{
$this -> prof_type = 'Proplex Optima';
$this -> prof = 2;
}
//
if(isset($_POST['glass'])) $this -> cam = clearData($_POST['glass'],"i");
else $this -> cam = 1;
if(isset($_POST['t'])) $this -> t = clearData($_POST['t'],"i");
//
if(isset($_POST['spacer'])) $this -> spacer = clearData($_POST['spacer'],"i");
else $this -> spacer = 1;
switch($this -> spacer){
case 1: $this -> spacer_type = 'Аллюминевая';break;
case 2: $this -> spacer_type = 'Super Spacer';break;
default:$this -> spacer_type = 'Аллюминевая';break;
}
//
if(isset($_POST['tglass'])) $this -> tglass = clearData($_POST['tglass'],"i");
else $this -> tglass = 1;
switch($this -> tglass){
case 1: $this -> glass_type = 'Cтандартное'; $this -> cgl = 160; break;
case 2: $this -> glass_type = 'Энергосберегающее'; $this -> cgl =
260; break;
case 3: $this -> glass_type = 'Солнцезащитное'; $this -> cgl = 450; break;
default:$this -> glass_type = 'Cтандартное'; $this -> cgl = 160;
}
//
if(isset($_POST['argon'])) {
$this -> argon = clearData($_POST['argon'],"i");
if($this -> argon == 1) $this -> checkbox = 'checked';
else $this -> checkbox = '';
}
}

// Функция для 1-1 одностворчатое глухое окно
public function f1stv_1(){
$type = $this -> pub_type;
$this -> width = clearData($_POST['width'],"i");
$w = ($this -> width)/1000;
$this -> height = clearData($_POST['height'],"i");
$h = ($this -> height)/1000;
$this -> quant = clearData($_POST['quant'],"i");
$q = $this -> quant;
$x = $this -> cgl;
echo " из метода ".$this->cgl;
if(!empty($w) and !empty($h) and !empty($q)){
//--ФОРМУЛА--------------------------------------------------------------
$cpvh = 81*(2*($w+0.006)+2*($h+0.006));//цена профиля (1.063 - 80.65р)
[b]$cglass = $x*(($w-0.096)*($h-0.096));[/b]//цена стекла
$cshtapik ='' ;//цена штапика
$cram = '';//цена рамки стеклопакета
$carmir = '';//цена армирования
$cfull = $x;//общая цена
//--КОНЕЦ ФОРМУЛЫ--------------------------------------------------------

$this -> price = $cfull;
}else{
messJs('Внимание! Некорректное значение в поле, заполните все поля.',"./windows.php?type=$type");
exit;
}
}
}


Вот я выделил переменную $x которую метод не видит почему-то...
при обращении из другого скрипта извне класса, по примеру:

$posts = new postHunt($type);
echo $posts->cgl; // тут все замечательно,видит переменную(цена окна)

и вызов из конструктора тоже видит:

echo $this -> cgl;

а вот из метода f1stv_1() не видит..



Спустя 1 час, 22 минуты, 6 секунд (1.02.2012 - 14:32) neadekvat написал(а):
Цитата (Kumirska @ 1.02.2012 - 14:10)
а вот из метода f1stv_1() не видит..

Видит.
А вот чего не вижу я - так это обращения к методу f1stv_1().

Спустя 1 минута, 40 секунд (1.02.2012 - 14:33) alexbel2404 написал(а):
запустил твой класс, у меня все работает)

$obj = new postHunt(1);
$obj->f1stv_1();


строка
echo " из метода ".$x;
вывела
Цитата
из метода 160

Спустя 1 минута, 28 секунд (1.02.2012 - 14:35) alexbel2404 написал(а):
Цитата (neadekvat @ 1.02.2012 - 15:32)
Цитата (Kumirska @ 1.02.2012 - 14:10)
а вот из метода f1stv_1() не видит..

Видит.
А вот чего не вижу я - так это обращения к методу f1stv_1().

в конструкторе вызывается, если $type = 1;

Спустя 11 минут, 13 секунд (1.02.2012 - 14:46) Kumirska написал(а):
не могу понять что такое, в методе комментирую переменные,но они определены ведь в конструкторе,и посты приходят все и они не пусты,но если закомментить все clearData($_POST.. то срабатывает else то есть выводит сообщение что не все поля заполнены

public function F1stv1(){
$type = $this -> pub_type;
$this -> width = clearData($_POST['width'],"i");//если закомментить то не
//видит $w в проверке на пустоту ниже

$w = ($this -> width)/1000;
$this -> height = clearData($_POST['height'],"i");//если закомментить то не
//видит $h в проверке на пустоту ниже

$h = ($this -> height)/1000;
$this -> quant = clearData($_POST['quant'],"i");// если закомментить то не
//видит $q в проверке на пустоту ниже

$q = $this -> quant;
$x = $this -> cgl;
echo " из метода ".$this->cgl." ТИП № ".$this -> glass_type;//не
//видит

if(!empty($w) and !empty($h) and !empty($q)){
//--ФОРМУЛА--------------------------------------------------------------
$cpvh = 81*(2*($w+0.006)+2*($h+0.006));//цена профиля (1.063 - 80.65р)
#$cglass = $this->cgl*(($w-0.096)*($h-0.096));//цена стекла

$cshtapik ='' ;//цена штапика
$cram = '';//цена рамки стеклопакета
$carmir = '';//цена армирования
$cfull = $x;//общая цена
//--КОНЕЦ ФОРМУЛЫ--------------------------------------------------------

$this -> price = $cfull;
}else{
messJs('Внимание! Некорректное значение в поле, заполните
все поля.'
,"./windows.php?type=$type");
exit;
}
}



Из всех переменных внутри public function F1stv1() видит только echo "ссылка ".$type;

Спустя 17 часов, 26 минут, 8 секунд (2.02.2012 - 08:12) Kumirska написал(а):
Ура товарищи! я разобрался-таки! Дело в том что $type была определена в самом начале конструктора,затем следовал свитч через переменную $type,где запускались все расчеты, но переменные пришедшие методом пост были присвоены свойсвам класса только после выполнения функции f1stv_1(), cooтветственно они и были пусты в функции и меня все время редиректило назад на заполнение!

$this -> pub_type = $type;
switch($type){
case 1: $this -> f1stv_1(); break;
case 2: $this -> f1stv_2(); break;
case 3: $this -> f1stv_3(); break;
case 4: $this -> f1stv_4(); break;
case 5: $this -> f1stv_5(); break;
case 6: $this -> f1stv_6(); break;
}

Всем спасибо за внимание! Тема закрыта!


--------------------
никому не дано знать абсолютной истины, ибо понятия, которыми мы оперируем, сами по себе относительны
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Закрытая темаСоздание новой темыСоздание опроса