Laravel 5中的自动加载助手功能目录

时间:2016-02-16 17:10:25

标签: php laravel laravel-5 laravel-5.1

我的课程中有一堆日期助手功能。我将它存储在app \ Helpers \ DateHelper.php

<?php

namespace App;

use DateTime;

class DateHelper {

    public static function day_ago($date) {

        if ($date) {

            $ts = time() - strtotime(str_replace("-","/", $date ));

            if($ts>31536000) $val = round($ts/31536000,0).' year';
            else if($ts>2419200) $val = round($ts/2419200,0).' month';
            else if($ts>604800) $val = round($ts/604800,0).' week';
            else if($ts>86400) $val = round($ts/86400,0).' day';
            else if($ts>3600) $val = round($ts/3600,0).' hour';
            else if($ts>60) $val = round($ts/60,0).' minute';
            else $val = $ts.' second';

            if($val>1) $val .= 's';

            return $val;


        }

    }

}

Composer.json

"autoload": {
    "classmap": [
        "database",
        "app/Helpers"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": ["app/Helper.php"]
},

然后,我run composer install

我得到了

Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
> php artisan clear-compiled
> php artisan optimize
Generating optimized class loader

别名

然后,我像这样添加到别名数组

'DateHelper'  => 'app\Helpers\DateHelper',

使用

然后,我用它了

{{ DateHelper::day_ago($n->created_at) }}

结果

Now, I kept getting `Class 'DateHelper' not found`

如何正确添加?

对此的任何提示/建议将不胜感激!

2 个答案:

答案 0 :(得分:3)

你的别名错了。别名是具有命名空间的完全限定类名,而不是它所在的目录。

'DateHelper'  => 'App\DateHelper',

我建议遵循PSR-4标准。它可以节省时间并最大限度地减少混淆。

此外,所以这不会再发生,最好使用如下语法......

'DateHelper'  => App\DateHelper::class,

这样,你可以绝对确定这个类是否存在。

答案 1 :(得分:1)

Laravel中帮助文件的典型示例:

  1. helper.php目录中创建app文件。
  2. 创建帮助函数
  3. 现在在helper.php文件中添加composer.json文件。
  4. 执行composer dump-autoload
  5. 现在您的帮助功能将在整个项目中使用。
  6. 如果要为帮助程序文件创建目录,请为辅助文件命名空间。

    "autoload": {
      "classmap": [
         "database",
       ],
       "psr-4": {
          "App\\": "app/",
          "Helpers\\": "app/helpers/" //This is if you are using the directory
       },
       "files": ["helper.php"] //This is if it's just a php file.
    },
    

    即:

    //app/helpers/helperClass.php
    <?php namespace Helpers;
    
    class helperClass{
      public function showDate()
      {
        //return
      }
    }
    

    在控制器中,当您使用辅助函数时,请导入该类。

    即:

    use Helpers/helperClass;
    //If you've creates an alias for this, use it here. 
    use helperClass;   //(This is from the config/app.php file)
    

    如果是视图,请使用它:{{ \Helpers\helperClass::showDate() }}