За последние 24 часа нас посетили 48377 программистов и 1336 роботов. Сейчас ищут 1172 программиста ...

второй вызов функции

Тема в разделе "PHP для новичков", создана пользователем rewuxiin, 19 дек 2014.

  1. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    всем привет.
    какой то косяк у меня с передачей значения в функцию
    выглядит примерно вот так
    функция
    Код (Text):
    1.    
    2.     public function findId($value, $idFeature){        
    3.                                     $idProduct = $this->sql($value, $idFeature)
    4.                                     return $idProduct;
    5.     }
    получение данных
    Код (Text):
    1.                  
    2.                             $value1 = 10;
    3.                             $value2 = 15;
    4.                             $idProductIdValue1 = $this->findId($value1, $this->idFeatureShirina);
    5.                             $idProductIdValue2 = $this->findId($value2, $this->idFeatureVysota);
    проверяю что там вернулось

    Код (Text):
    1. echo $idProductIdValue1 - возвращаются правильные данные.
    2. echo $idProductIdValue2 - пустой массив
    проверяю по шагам -
    оказывается при
    Код (Text):
    1. $idProductIdValue2 = $this->findId($value2, $this->idFeatureVysota);
    в функцию попадает не value2, а value1

    это как так получается?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    как ты это определил?
     
  3. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    Код (Text):
    1. public function findId($value, $idFeature){
    2. print_r($value);
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Покажи весь код, так быть не должно
     
  5. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    это контроллер модуля для престашоп
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Посмотри что содержит $resArray сделай var_dump
     
  7. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    там все отлично.
    но раз просишь
    Код (Text):
    1. Array
    2. (
    3.     [0] => 195/55 R16
    4.     [1] => 195
    5.     [2] => 55
    6.     [3] => 16
    7. )
    фишка в том что если закомментировать
    Код (Text):
    1. $idProductIdValueShirinaShiny = $this->findIdProduct($valueShirinaShiny, $this->idShirinaProf);//получаем id сопоставленных продуктов для ширины профиля шины
    он же $value1 из первого примера
    - $value2 передается нормально в функцию
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  9. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    честно говоря я без понятия как дебаггером работать в prestashop - xdebug залаходит в глобальный конфиг и на этом тупик

    или я еще не совсем умею с ним работать
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Там внимательно нужно читать статью.
    Можно поставить break point на нужные точки и он на них сделает паузу и покажет все переменные и их состояние.

    Tools -> Options -> PHP -> Debugging -> Stop at first line - снять галочку, чтобы он начинал с первого break point
    Там при дебаге указываешь индекс файл или тот который путь который запускает код и ещё выбираешь все файлы для отладки.
     
  11. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    эхх. видать не судьба мне дебажить на престе.(
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Попробуй на чём то более простом, чтобы понять принцип, а потом уже и с престой справишся
     
  13. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    принцип то я понял.
    просто из файла ухожу в глубоко в движок, выхожу обратно по ctrl+F7 - в итоге наконец попадаю обратно в класс модуля - но уже переменная, которая должна содержать массив из базы данных, - пуста.
     
  14. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    все было проще чем кажется.
    я для проверки использовал не print_r или var_dump, а встроенную функцию отладки - она выводит значение при первом же вызове и останавливает операцию exit, а при проверке второго вызова функции, массив действительно был пуст)