【发布时间】:2015-08-27 04:45:41
【问题描述】:
我是 laravel 的新手,正在导入一个现有的 php 站点。 我创建了一个名为“List”的控制器,然后我需要创建一个类的对象,编码在一个由 include_once() 包含的文件中,如图所示,
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
$INCLUDE_ROOT = 'path/to/file';
include_once($INCLUDE_ROOT . "ServiceDetails.class.php");
class Lists extends Controller
{
public function show()
{
$objServiceDetails= new ServiceDetails;
.........
........
}
}
但我遇到了类似的错误
致命错误:找不到类“App\Http\Controllers\ServiceDetails”
我对命名空间“use”和“as”不太了解。 可能这就是为什么我无法解决这个问题。 当创建一个新对象时,它只在命名空间位置搜索类,但我认为它也应该在包含的文件中查找。
【问题讨论】:
-
是的,但是你在一个命名空间中(想象它是一个文件夹),所以 ServiceDetails 在“当前文件夹”(App\Http\Controllers)中。尝试使用
new \ServiceDetails,或者该类的完整命名空间(如果有的话) -
@DamienPirsy,谢谢好友,当我使用
new \ServiceDetails时它可以工作,但它是一个巨大的项目,因此在控制器中包含大量文件,并且正在创建很多时间对象,是任何其他方式结束命名空间的范围,以便我们可以正常创建对象?
标签: php laravel namespaces laravel-5