Всем добрый день, есть 2 php файла, первый (типа "входной") и второй с нужными функциями, которые запускаются по имени, сформированному из переменных в первом файле. Функция (из второго файла) Код (Text): function driver_before_updated($domen, $tz, $region_code, $hook, $user_id, $payload_values, $payload_recordId) Как она вызывается (из первого файла) Код (Text): $response = $scenario($domen, $tz, $region_code, $hook, $user_id, $payload_values, $payload_recordId); Функция вызывается и работает, но проблема в том, что переменные в эту функцию не передаются, т.е. в первом файле перед входом в функцию они определены (проверял), а в функции уже нет. Вариант объявить их везде как глобальные не подходит. Возможно я чего-то еще не понимаю, с удовольствием почитаю ссылки по теме.
Как происходит передача параметров в функцию тест на примере ниже PHP: $param1 = ' test 1'; $param2 = ' test 2'; print test($param1, $param2); function test($a, $b) { return $a.$b; } Какой процесс у вас происходит, сложно даже назвать.
@winmasta должны попадать, если находятся сами в общей области видимости, а не в функции какой спрятаны. скажем так, обязаны и обычно попадают. покаж код.
Код (Text): <?php require 'taxium_driver.php'; require 'db.php'; unlink ('taxium.txt'); $file = fopen('taxium.txt','a'); //Парсим полученный хук. $hook = json_decode(file_get_contents('php://input'), true); $hook_event = $hook["hook"]["event"]; $sc_name = explode(".", $hook_event); $user_id = $hook["user"]["id"]; $payload_values = $hook["payload"]["values"]; $payload_recordId = $hook["payload"]["recordId"]; $req = json_decode(urldecode(filter_input(INPUT_SERVER, "QUERY_STRING")), true); $domen_id = $req["domen_id"]; $catalog = $req["catalog"]; //Запрос данных в БД, а именно в таблице ssa_domens. $query = "SELECT domen, tz, region_code, db FROM ssa_domens where id = ".$domen_id.";"; $res = dbconn($query); dbclose(); $domen=$res["domen"]; $tz=$res["tz"]; $region_code=$res["region_code"]; $db=explode(" ",$res["db"]); $user=$db[0]; $pass=$db[1]; //Составляем имя файла сценария, запускаем его, если нужно, приходит ответ на хук. if (count($sc_name) === 3) { $scenario = $catalog."_".$sc_name[1]."_".$sc_name[2]; } else { $scenario = $catalog."_".$sc_name[1]; } $response = $scenario($domen, $tz, $region_code, $hook, $user_id, $payload_values, $payload_recordId); fwrite($file, $response."\n"); if ($msg) { echo ($msg); } fclose($file); заодно попинайте если что где неверно написано, только учусь вторую неделю, файл там создается для дебаггинга, к логике отношения не имеет
начал копипастить код, где проверяю пришедшие значения и понял, то не там проверяю, нашел ошибку, теперь все прекрасно приходит как и должно быть, спасибо
Кину второй сценарий Код (Text): <?php require 'bpium_api.php'; $catalogId = 36; function driver_created($domen, $tz, $region_code, $hook, $user_id, $payload_values, $payload_recordId) { global $catalogId; // unlink ("taxium_driver_created.txt"); // fopen("taxium_driver_created.txt","a"); //Логика сценария. $sm_bal = $payload_values["4"]; if (is_null($sm_bal)) { $sm_bal = 0; } $deb_sum = $payload_values["29"]; if (is_null($deb_sum)) { $deb_sum = 0; } $total_bal = $sm_bal - $deb_sum; $req_type = "PATCH"; $recordId = $payload_recordId; $body = '{"values":{"4":"'.$sm_bal.'","29":"'.$deb_sum.'","30":"'.$total_bal.'"}}'; $curl_res = send_req($req_type, $domen, $catalogId, $recordId, $body); // fclose($file); } function driver_before_updated($domen, $tz, $region_code, $hook, $user_id, $payload_values, $payload_recordId) { global $msg; global $catalogId; // unlink ('taxium_driver_before_updated.txt'); // $file = fopen('taxium_driver_before_updated.txt','a'); // fwrite($file, $domen."\n"); //Логика сценария. $req_type = "GET"; $recordId = $payload_recordId; $curl_res = json_decode(send_req($req_type, $domen, $catalogId, $recordId), true); $comment_old = $curl_res["values"]["25"]; $comment = $payload_values["25"]; $fired = $payload_values["6"][0]; $fired_date = $payload_values["28"]; $ratio = $payload_values["24"]; $ratio_old = $curl_res["values"]["24"]; //fwrite($file, 'ratio '.$ratio.' ratio_old '.$ratio_old."\n"); if ($fired == 3) { if (!$fired_date) { $msg = '{"message":{"title":"Внимание.","text":"Необходимо указать дату расторжения договора."}}'; } if ((!$ratio and $ratio_old == 0) or ($ratio == 0 and $ratio_old == 0)) { $msg = '{"message":{"title":"Внимание.","text":"Необходимо указать рейтинг водителя."}}'; header('Content-Type: application/json'); header('HTTP/1.1 404'); return headers_list(); } if (!$comment and !$comment_old) { $msg = '{"message":{"title":"Внимание.","text":"Необходимо указать комментарий."}}'; header('Content-Type: application/json'); header('HTTP/1.1 404'); return headers_list(); } elseif (!$comment and $comment_old) { $msg = '{"message":{"title":"Внимание.","text":"Необходимо изменить комментарий."}}'; header('Content-Type: application/json'); header('HTTP/1.1 404'); return headers_list(); } } else { //fclose($file); return header('HTTP/1.1 200'); } } function driver_updated($domen, $tz, $region_code, $hook, $user_id, $payload_values, $payload_recordId) { global $catalogId; if ($user_id == 1) { return; } //Логика сценария. $req_type = "GET"; $recordId = $payload_recordId; $curl_res = json_decode(send_req($req_type, $domen, $catalogId, $recordId), true); $fio = $curl_res["values"]["2"]; $dr = $curl_res["values"]["3"]; $passport = $curl_res["values"]["8"]; $address = $curl_res["values"]["9"]; if (is_array($curl_res["values"]["10"][0])) { $tel = $tel["contact"]; } $link = 'http://bpiumupload.ooossa.com/download.php?fio='.$fio.'&dr='.substr($dr, 0, 10).'&passport='.$passport.'&addres='.$address.'&tel='.$tel; $req_type = "PATCH"; $recordId = $payload_recordId; $body = '{"values":{"14":[{"contact":"'.$link.'"}]}}'; $curl_res = send_req($req_type, $domen, $catalogId, $recordId, $body); } посмотрите, может где не правильный синтаксис или еще чего, короче насколько это нормальный код, если нужно выложу доп сценарии для работы с бд и апи, в принципе интересует, правильно ли я разработал архитектуру, правильно ли написал ?