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


Unable to access models and helper classes in custom class file 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.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
    }

在 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());
  }
}

<?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());
  }
}

附注:

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