无法访问自定义类文件laravel 5中的模型和帮助程序类

时间:2015-03-13 09:30:16

标签: php laravel laravel-5

我在app / Classes / Common.php中创建了一个公共类 但每当我尝试在类函数中访问模型时。

$new_booking_request = BookingRequest::where('host_id','=',Auth::id())

我收到此错误

Class 'App\Models\BookingRequest' not found

即使是其他类,如Auth,URL和Cookie也无效。 有没有办法将所有类放在我的Common类范围内?

2 个答案:

答案 0 :(得分:1)

当您的命名空间错误或忘记命名空间时,就会出现此问题。

由于common.php在App / Classes中,所以在Common.php中做了类似的事情:

<?php namespace App\Classes;

use View, Auth, URL; 

class Common {
    //class methods
}

还要确保您的模型类具有正确的命名空间,如果BookingRequest.php位于App \ Models内,则在BookingRequest.php内执行此操作:

<?php namespace App\Models;

    BookingRequest extends \Eloquent {
        //other definitions
    }

然后,如果您希望在其命名空间之外或其他命名空间中使用BookingRequest.php,请执行以下操作:

<?php namespace App\Classes;

use App\Models\BookingRequest;

use View, Auth, URL; 

    class Common {
        //class methods
    }

答案 1 :(得分:0)

在Laravel 5中,所有内容都是命名空间,请确保您的类具有正确的命名空间,并且您使用指定的相同命名空间调用它。

要在其他类中包含类,请确保使用use关键字在类定义之上导入必要的类。您也可以使用\全局调用该类。例如:\Auth\URL\Cookie

对于L5中的命名空间,这是一个简单的例子:

<?php namespace App\Models;

class BookingRequest {
  // class definition  
}

然后在尝试调用该类时,要么调用该函数的完整命名空间路径,要么包含该函数。

<?php

class HomeController extends Controller {

  public function index()
  {
    $newBookingRequest = App\Models\BookingRequest::where('host_id','=',Auth::id());
  }

}

OR

<?php namespace App\Controllers;

use App\Models\BookingRequest; // Include the class

class HomeController extends Controller {

  public function index()
  {
    $newBookingRequest = BookingRequest::where('host_id','=',Auth::id());
  }

}

PS:

在定义类属性和方法时请使用camelCase,因为这有助于在使用L5框架时获得更好的代码样式和命名约定。