在laravel中包含/调用外部类

时间:2016-08-02 19:05:32

标签: php class laravel external

即使我在stackoverflow中看到过这样的多个问题,我仍然无法让我的自定义php类在laravel中工作。我做了以下事情:

laravel - > app - >图书馆 - > 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()

非常感谢任何帮助。干杯

1 个答案:

答案 0 :(得分:0)

当您编写use App\Libraries\DateFunction时,此控制器中只有DateFunction类可用,您应该按如下方式使用它:

Class AlohaController 
{

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

如果你想全局使用getRealHours()你不需要一个类。

如果要创建函数帮助程序,则必须执行以下操作:

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

    enter image description here

  2. 运行composer dumpautoload以生成引导程序文件

  3. 助手文件应如下所示:

    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;
    
    }
    
  4. 另一种可能的解决方案

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

    您的控制器应如下所示:

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

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

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