首页 >后端开发 >php教程 >laravel 5想自定义全局函数,怎么弄呢?

laravel 5想自定义全局函数,怎么弄呢?

WBOY
WBOY原创
2016-08-04 09:20:35932浏览

想把

<code>//生成友好时间形式
function  friendly_date( $from ){
    static $now = NULL;
    $now == NULL && $now = time();
    ! is_numeric( $from ) && $from = strtotime( $from );
    $seconds = $now - $from;
    $minutes = floor( $seconds / 60 );
    $hours   = floor( $seconds / 3600 );
    $day     = round( ( strtotime( date( 'Y-m-d', $now ) ) - strtotime( date( 'Y-m-d', $from ) ) ) / 86400 );
    if( $seconds == 0 ){
        return '刚刚';
    }
    if( ( $seconds >= 0 ) && ( $seconds = 0 ) && ( $minutes = 0 ) && ( $hours  0 ) {
        return date( 'Y-m-d', $from );
    }
    
    switch( $day ){
        case 0:
            return date( '今天H:i', $from );
        break;
        
        case 1:
            return date( '昨天H:i', $from );
        break;
        
        default:
            //$day += 1;
            return "{$day} 天前";
        break;
    }
}</code>

放入函数库,怎么放呢

回复内容:

想把

<code>//生成友好时间形式
function  friendly_date( $from ){
    static $now = NULL;
    $now == NULL && $now = time();
    ! is_numeric( $from ) && $from = strtotime( $from );
    $seconds = $now - $from;
    $minutes = floor( $seconds / 60 );
    $hours   = floor( $seconds / 3600 );
    $day     = round( ( strtotime( date( 'Y-m-d', $now ) ) - strtotime( date( 'Y-m-d', $from ) ) ) / 86400 );
    if( $seconds == 0 ){
        return '刚刚';
    }
    if( ( $seconds >= 0 ) && ( $seconds = 0 ) && ( $minutes = 0 ) && ( $hours  0 ) {
        return date( 'Y-m-d', $from );
    }
    
    switch( $day ){
        case 0:
            return date( '今天H:i', $from );
        break;
        
        case 1:
            return date( '昨天H:i', $from );
        break;
        
        default:
            //$day += 1;
            return "{$day} 天前";
        break;
    }
}</code>

放入函数库,怎么放呢

在app/Helpers/(目录可以自己随便来) 下新建一个文件 functions.php
在functions.php 中加入这个方法
然后在
bootstrap/autoload.php 中添加

<code>require __DIR__.'/../app/Helpers/functions.php';</code>

或者在
composer.json 中的 autoload 下增加

<code>"files": [
    "app/Helpers/functions.php"
]</code>
<code>...
"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/helpers/functions.php"
    ]
},

...</code>

参考:Creating a Helpers File

自制函数一个,供大家参考和改进

<code>
/**
 * 格式化时间
 * @param mixed \Carbon\Carbon $dt / Int $timestamp / String $date / String "now"
 * @return date
 */
function format_time($dt)
{

    $format = [
        'between_one_minute' => '刚刚',
        'before_minute'      => '分钟前',
        'after_minute'       => '分钟后',
        'today'              => 'H:i',
        'yesterday'          => '昨天 H:i',
        'tomorrow'           => '明天 H:i',
        'default'            => 'n月d日 H:i',
        'diff_year'             => 'Y年n月d日 H:i',
        'error'                 => '时间显示错误'
    ];

    //创建对象
    if( is_int($dt) ) {
        
        $dt = Carbon\Carbon::createFromTimestamp($dt);
        
    } else if( ! $dt instanceof \Carbon\Carbon) {
        //错误时间
        if( $dt == '0000-00-00 00:00:00' || $dt === '0' ) return $format['error'];

        $dt = new Carbon\Carbon($dt);
    }

    $now = \Carbon\Carbon::now();

    //今天
    if( $dt->isToday() ) {

        $diff_minute = floor(abs($now->timestamp - $dt->timestamp) / 60);
        $diff_second = $now->timestamp - $dt->timestamp;

        //一小时内
        if($diff_minute = 0) return $format['between_one_minute'];

            return $diff_second format($format['today']);
    }

    //昨天
    if( $dt->isYesterday() ) return $dt->format($format['yesterday']);

    //明天
    if( $dt->isTomorrow() ) return $dt->format($format['tomorrow']);

    //非今年,其他时间
    if( $dt->format('Y') !== $now->format('Y') ) return $dt->format($format['diff_year']);

    //今年,其他时间
    return $dt->format($format['default']);

}</code>
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn