Quick actions

cmd+k|ctrl+k

Navigation

Languages

ResponseAPI

Snippet info

Language

Php

Visibility

public

Author

dugujianxiao

Created

2016-02-18T14:56:32Z

Updated

2016-02-18T14:56:32Z

<?php
/**
 * Class ResponseAPI
 * @package App\Singleton
 */
class ResponseAPI
{
    private static $instance = null;

    public static function getInstance()
    {
        if (!isset(self::$instance)) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    /**
     * @param null|string|array|\Eloquent $result
     * @return \Illuminate\Http\JsonResponse
     */
    public function success($result = null)
    {
        return $this->response([
            'data'   => $result,
            'status' => 'success',
        ]);
    }

    /**
     * @param $message
     * @param int $code
     * @param array $messages
     * @return \Illuminate\Http\JsonResponse
     */
    public function error($message, $code = 0, $messages = [])
    {
        $status = 'error';
        $resources = compact('code', 'message', 'messages', 'status');
        return $this->response(array_filter($resources));
    }

    /**
     * @param $data
     * @param int $code
     * @return \Illuminate\Http\JsonResponse
     */
    public function response($data, $code = 200)
    {
        return response()->json($data, $code, [
            'Access-Control-Allow-Origin' => '*', //允许域名eg:http://www.baidu.com
            //'Access-Control-Allow-Methods' => '*', //允许GET、PUT、DELETE的外域请求
            //'Access-Control-Allow-Headers' => '', //允许跨域请求包含content-type头
            'Access-Control-Max-Age'      => 60 * 60 * 24, //在N秒内,不需要再发送预检验请求,可以缓存该结果
        ]);
    }

    /**
     * @param null|string|array|\Eloquent $data
     * @return string
     */
    public function toString($data)
    {
        if (is_bool($data)) {
            return $data ? '1' : '0';
        } else if (is_numeric($data)) {
            return (string)$data;
        } else if (is_string($data)) {
            return $data;
        } else if (is_null($data)) {
            return null;
        } else if (is_object($data)) {
            if (is_callable([$data, 'toArray'])) {
                return $this->toString($data->toArray());
            } else if (get_class($data) == 'stdClass') {
                return null;
            } else {
                return $this->toString((array)$data);
            }
        } else if (is_array($data)) {
            $output = [];
            foreach ($data as $key => $value) {
                $output[$key] = $this->toString($value);
            }
            return $output;
        } else {
            return (string)$data;
        }
    }

    public static function __callStatic($method, $arguments)
    {
        if (!self::$instance) {
            self::$instance = new self();
        }
        return call_user_func_array([self::$instance, $method], $arguments);
    }
}
INFO