Php 在中间件方法-Laravel 5中找不到类名

Php 在中间件方法-Laravel 5中找不到类名,php,class,laravel,middleware,laravel-5,Php,Class,Laravel,Middleware,Laravel 5,我正在尝试设置中间件。 我遵照这些指示: 我的代码是 <?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\RedirectResponse; class LoadVars { $comingevents = App\Number::where('item','events')->get(array('quantity')); 正如@Quasdunk在注释中指出的,当您引用一个开头没有反斜

我正在尝试设置中间件。 我遵照这些指示:

我的代码是

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\RedirectResponse;

class LoadVars {

$comingevents = App\Number::where('item','events')->get(array('quantity'));

正如@Quasdunk在注释中指出的,当您引用一个开头没有反斜杠的类时,路径是相对的
意思是
App\Number
将在当前名称空间中查找
App
,然后查找
Number

App\Http\Middleware  &  App\Number   =>  App\Http\Middleware\App\Number
您只需在开始处添加一个
\
,路径将被解释为绝对路径,实际上从何处使用该类并不重要

App\Http\Middleware  &  \App\Number  =>  App\Number
Foo\Bar              &  \App\Number  =>  App\Number
如果您希望代码更简洁,还可以使用
use
语句导入类:

use App\Number;

class LoadVars {
    // ...
    $comingevents = Number::where('item','events')->get(array('quantity'));
    // ...
}

注意对于
use
语句,不需要反斜杠。所有路径都将是绝对路径。

您必须通过在绝对名称空间前面加反斜杠来指定该名称空间:
\App\Number
,否则它将相对于您当前所在的名称空间进行解释,即
App\Http\Middleware
。或者你可以
使用App\Number在顶部,然后使用
Number::where(…)访问它谢谢你的提示。它帮助我了解了新的L5命名空间规则。是的,@Quasdung将我推向了正确的方向,后来我学会了在控制器的前端声明类。非常感谢你们两位!