Heim >Backend-Entwicklung >PHP-Tutorial >Ich möchte globale Funktionen in Laravel 5 anpassen, wie geht das?

Ich möchte globale Funktionen in Laravel 5 anpassen, wie geht das?

WBOY
WBOYOriginal
2016-08-04 09:20:35951Durchsuche

想把

<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 <= 60 ) ){
        return "{$seconds}秒前";
    }
    if( ( $minutes >= 0 ) && ( $minutes <= 60 ) ){
        return "{$minutes}分钟前";
    }
    if( ( $hours >= 0 ) && ( $hours <= 24 ) ){
        return "{$hours}小时前";
    }
    if( ( date( 'Y' ) - date( 'Y', $from ) ) > 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 <= 60 ) ){
        return "{$seconds}秒前";
    }
    if( ( $minutes >= 0 ) && ( $minutes <= 60 ) ){
        return "{$minutes}分钟前";
    }
    if( ( $hours >= 0 ) && ( $hours <= 24 ) ){
        return "{$hours}小时前";
    }
    if( ( date( 'Y' ) - date( 'Y', $from ) ) > 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 < 60) {

            //一分钟内
            if($diff_second < 60 && $diff_second >= 0) return $format['between_one_minute'];

            return $diff_second < 0 ? $diff_minute.$format['after_minute'] : $diff_minute.$format['before_minute'] ;
        }

        return $dt->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>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Virtueller Apache-HostNächster Artikel:Virtueller Apache-Host