我在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 框架时获得更好的代码样式和命名约定。