分享自己封装的小函数系列

判断url是否以http或者https开头

if (!function_exists('startHttpHttps')) {
    /**
     * 判断url是否以http或者https开头
     *
     * @param $url
     *
     * @return bool
     */
    function startHttpHttps ($url)
    {
        if (strpos($url, "http://") === 0 || strpos($url, "https://") === 0) {
            return true;
        }

        return false;
    }
}

laravel5.5中获得sql语句[Laravel]

if (!function_exists('getSql')) {
    /**
     * 获得sql语句
     */
    function getSql ()
    {
        DB::listen(function ($sql) {
            dump($sql);
            $singleSql = $sql->sql;
            if ($sql->bindings) {
                foreach ($sql->bindings as $replace) {
                    $value = is_numeric($replace) ? $replace : "'" . $replace . "'";
                    $singleSql = preg_replace('/\?/', $value, $singleSql, 1);
                }
                dd($singleSql);
            } else {
                dd($singleSql);
            }
        });
    }
}

生成其他方式的Input表单提交方法[Laravel]

if (!function_exists('makeMethod')) {
    /**
     * 生成其他方式的Input表单提交方法
     *
     * @param $method
     */
    function makeMethod ($method)
    {
        echo '<input type="hidden" name="_method" value="' . $method . '">';
    }
}

把datetime转换为多少天前的函数

需要安装Carbon

if (!function_exists('parseTime')) {
    /**
     * 把datetime转换为多少天前的函数
     * 
     * @param $time
     *
     * @return string
     */
    function parseTime ($time)
    {
        return \Carbon\Carbon::parse($time)->diffForHumans();
    }
}

打印数据但是不die,和laravel dd函数对应

这个需要 use use Illuminate\Support\Debug\Dumper;

if (! function_exists('d')) {
    /**
     * dd所有数据.但是不die
     *
     * @param array ...$args
     */
    function d(...$args)
    {
        foreach ($args as $x) {
            (new Dumper)->dump($x);
        }
    }
}

获得302跳转之后的地址

这个坑是当时在获取facebook头像的时候遇到的,facebook默认会给一个像素极低的头像(简直不能用),想要获得清楚一点的头像,需要自行通过地址获取

http://graph.facebook.com/{id}/picture?type=large;

但是呢.以上的连接.facebook会302跳转,😂 😂 😂,我们的客户端好像不太好处理这个302

所以就有了以下的curl来获得302跳转之后的真实url

/**
 * 获得302跳转之后的地址
 *
 * @param        $url
 * @param string $method
 *
 * @return array
 */
function getJumpUrl ($url, $method = 'GET')
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $ret = curl_exec($ch);
    $info = curl_getinfo($ch);
    curl_close($ch);

    return [$ret, $info];
}

dda

主要用于larave中的 $object->toArray() 这样就可以直接看到对象里面的数据了,没有其他数据

function dda($model)
{
    dd($model->toArray());
}

php获取毫秒

function getMillisecond() {
    list($t1, $t2) = explode(' ', microtime());
    return (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);
}