如何在控制器Laravel中导入自定义类?

时间:2016-08-08 19:31:13

标签: laravel laravel-5.2

我在Laravel的根目录中创建了一个新目录Library

在里面我把文件放在上面:

class My { // }

所以,在控制器Laravel中,我尝试访问这个类:

App\Library\My

但是Laravel并不确定这条道路。

这是我的代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use View;

use App\Library\My;

class HomeController extends Controller
{
 //
}

4 个答案:

答案 0 :(得分:2)

您应该在Library文件夹

中创建app文件夹

namespace App\Library\My

app文件夹使用psr-4

在您的控制器中

use App\Library\My as My

这对我有用。希望这个答案很有帮助

答案 1 :(得分:2)

如上所述,请确保将其放在App目录中并确保其正确命名空间,例如

<?php
  $fOne = new \App\library\functions;
  $isOk = ($fOne->isOk());
?>

答案 2 :(得分:2)

您必须正确命名每个班级。

因此,您可以使用use关键字导入您的课程,如此

use App\Library\My;

....

$my = new My();

或者,如果您的班级名称有冲突,那么您可以使用as关键字在导入时为别名设置别名

use App\Library\My as MySecond;

....

$my = new MySecond();

如果您想在方法中直接访问您的类,那么您可以像这样访问它。

$my = new \App\Library\My();

注意:前导\表示App已在全局范围内声明。

答案 3 :(得分:1)

基于此处帖子的完整且实用的示例:

1-文件夹和文件-在app/下创建一个文件夹,在本示例中,我们将创建一个名为Library的文件夹。

我们还将在文件夹中创建一个带有您的班级名称的文件,在这里我们将创建一个名为My的班级。

所以我们将有app/Library/My.php

2-类和方法-现在,为了测试,在类内部创建一个名为myMethod

的静态方法
<?php

namespace App\Library;

class My
{
    public static function myMethod() 
    {
        return 'it\'s work!';
    }
}

3-控制器-现在在控制器的开头,我们将使用use声明您的类的名称空间:

<?php

namespace App\Http\Controllers;
use App\Library\My;

//rest of the controller code

最后,要在Controller中创建My类的实例,必须使用new语句:

//rest of the controller code

public function index()
{ 
    $whatever = new My;
    return $whatever::myMethod();
}