можно использовать как echo, так и return в функции - PullRequest
0 голосов
/ 30 мая 2018

Я просто хочу знать, можно ли использовать echo И return вместо одной функции

Приведенный ниже код является одной из моих функций

if(!function_exists("un_block_ad_ajax")) {

    function un_block_ad_ajax() {
        global $db;
        $is_admin = is_admin();
        $check_user = true;
        $request = $_POST["data"]["request"] ?? "";
        if(!in_array($request,["block","publish"])) {
            return false;
        }
        $ad_id = $_POST["data"]["ad_id"] ?? "";
        $ad_id = (int) $ad_id;
        if(empty($ad_id)) {
            return false;
        }

        if($is_admin === true) {
            $check_user = false;
        }

        if($check_user === true) {
            if(is_login() === false) {
                return false;
            }
            $get_ad_info = $db->select("SELECT ad_publisher FROM ads WHERE id = ? LIMIT 1",[$ad_id],["%i"]);
            $get_ad_info = $get_ad_info[0];
            if($get_ad_info["ad_publisher"] != is_login()->id) {
                // User-undesired activity
                return false;
            }
        }

        $update_status = $db->update("ads",["ad_status" => $request],["%s"],["id" => $ad_id],["%i"]);
        if($update_status) {
            echo json_encode(["success" => true]);
        }
        return true;
    }

}

Я вызываю функцию изодин файл

$method = $_POST["method"] ?? : "";
if(!empty($method)) {
    $allowed_methods = array(
        "signup_ajax",
        "signin_ajax",
        "add_ad_ajax",
        "upload_ad_image",
        "send_message",
        "get_message",
        "get_cnv",
        "del_add_to_fav",
        "delete_ajax",
        "un_block_ad_ajax",
    );
    if(in_array($method,$allowed_methods)) {
        if(call_user_func($method) === false) {
            exit(http_response_code("400"));
        }
    }else{
        exit(http_response_code("404"));
    }
}else{
    exit(http_response_code("404"));
}

Итак, как вы видите в коде, мне нужно использовать return и echo

1 Ответ

0 голосов
/ 30 мая 2018

Технически, вы можете делать все, что вам нужно, однако я советую вам поддерживать стандарт, например:

Допустим, вы хотите вернуть true в операцию сейчас, но завтра вам нужно true иполезный набор данных, например, того, что было обновлено.

Возможно, вы захотите создать общий ответ для своего приложения, где вы можете использовать ту же функцию (или логику) для чтения каждого ответа, который вы в конечном итоге получите.

Ответ, содержащий:

{
 'success' => true,
 'message' => [...],
 'visibleToHumans' => true,
 'content' => [...]
}

У вас может быть пользовательский интерфейс, который обрабатывает ответ на ваш запрос, который может считывать содержимое на основе успеха.

Дополнительно: я бы посоветовал посмотреть PDOStatements, чтобы защитить ваши запросы.

http://php.net/manual/en/class.pdostatement.php

...