Include/call 外部 class 在 laravel

Include/call external class in laravel

尽管我在 Whosebug 中看到了多个类似的问题,但我仍然无法让我的自定义 php class 在 laravel 中工作。我做了以下事情:

laravel -> 应用程序 -> 库 -> DateFunction.php 作为我的文件路径

实际DateFunction.php包含以下代码

<?php

namespace App\Libraries;

class DateFunction
{
    public $timeWorked;

    public function getRealHours($time) {
        if ($time / 60 < 1) {
             $this->timeWorked = $time . "m";
        } else {
            $hours = $time / 60;
            $minutes = $time % 60;

            $this->timeWorked  = $hours . "h" . $minutes . "m";
        }

        return $this->timeWorked;
    }

}

在我的控制器中我使用过 use App\Libraries\DateFunction;

但是当我使用

时在我的视图中
 @foreach ($labourentries as $labour)
                <tr>
                    <td>{{ $labour->labourtype_id }}</td>
                    <td>{{ getRealHours($labour->minutes_worked)  }}</td>
                </tr>
   @endforeach

它仍然给我错误:调用未定义的函数 getRealHours()

如有任何帮助,我们将不胜感激。干杯

当你写use App\Libraries\DateFunction时,这个controller中只有可用的DateFunctionclass,你应该按如下方式使用它:

Class AlohaController 
{

    public function something()
    {
        $InstanceClass = new DateFunction;
        $realHour = $InstanceClass->getRealHours(48);
    }
}

如果你想全局使用 getRealHours() 你不需要 class.

如果你想创建一个函数助手,你必须执行以下操作:

  1. 编辑文件composer.json放置你的帮助文件的路径

  2. 运行 composer dumpautoload 生成 bootstrap 文件

  3. Helpers 文件应该如下所示:

    function getRealHours($time) {
    
        $timeWorked = 0;
    
        if ($time / 60 < 1) {
            $timeWorked = $time . "m";
        } else {
            $hours = $time / 60;
            $minutes = $time % 60;
    
            $timeWorked  = $hours . "h" . $minutes . "m";
        }
    
        return $timeWorked;
    
    }
    

另一种可能的解决方案

在您的控制器中创建 DateFunction 的一个实例 class 并将其发送到您的视图。

您的控制器应如下所示:

$helpers = new DateFunction;
return view('path.to.view', ['helpers' => $helpers]);

在您看来,您可以这样使用它:

<td>{{ $helpers->getRealHours($labour->minutes_worked)  }}</td>