переданный параметр не работает в xpath, хотя работает в модульном тесте

class ad_xml_model extends \ITico_core\common_class {

public function get_info_from_ad($input_id) {
$xml_file = parent::get_set('xml');
$ad_info = $xml_file->xpath("//ad[@id='" . $input_id . "']");
parent::get_set('ad_info', $ad_info);
return $ad_info;
}

}

Приведенный выше код работает при модульном тестировании, я попытался передать в функцию как строку, так и int, и он работает оба раза.

<h2>get_info_from_ad</h2>
test data: 1<br>
info from ad:- <br>
<?php
$ad_xml_model->get_info_from_ad(1);
$ad_info = $ad_xml_model->get_set('ad_info');
print_r($ad_info);

но в коде ниже, когда вызывается из контроллера его не работает

class main_controller(){
$ad_top_limit = count($ads_from_category);
$key = rand(0, $ad_top_limit - 1);
$chosen_ad = $ads_from_category[$key];
parent::get_set('chosen_ad', $chosen_ad);
$ad_info = $ad_xml_model->get_info_from_ad($chosen_ad);
parent::get_set('ad_info', $ad_info);
if ($ad_info != null) {
switch ($ad_type) {
case NUll:
break;
case 'long':
$long_view = new long_view($ad_info);
$long_view->show_ad();
}
}
}

и тестирование страницы отладки

<?php
echo $main_controller->get_set('chosen_ad') . "<br>";
?>
ad information:-: <br>
<?php
print_r($main_controller->get_set('ad_info'));

скриншот страницы отладки

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

1

Решение

Я нашел решение было неявно сказать xpath, что это был int

public function get_info_from_ad($input_id) {
$xml_file = parent::get_set('xml');
$ad_info = $xml_file->xpath("//ad[@id='" . (int)$input_id . "']");
parent::get_set('ad_info', $ad_info);
return $ad_info;
}

по какой-то причине, если я установлю ее на строку, она все равно не будет работать, возможно, кто-то еще сможет поделиться этим.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector