Php 如何在laravel中将include_once()与命名空间一起使用
我是laravel的新手,正在导入一个现有的php站点。 我创建了一个名为“List”的控制器,然后我需要创建一个类的对象,在一个文件中编码,该文件由include_once()包含,如图所示Php 如何在laravel中将include_once()与命名空间一起使用,php,laravel,namespaces,laravel-5,Php,Laravel,Namespaces,Laravel 5,我是laravel的新手,正在导入一个现有的php站点。 我创建了一个名为“List”的控制器,然后我需要创建一个类的对象,在一个文件中编码,该文件由include_once()包含,如图所示 <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; $INCLUDE_ROOT = 'path/to/file'; include_once($INCLUDE_ROOT . "ServiceDeta
<?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;
.........
........
}
}
如果当前文件中有名称空间,PHP将尝试在当前名称空间中查找类,如果找不到,您将得到致命错误。您应该打开ServiceDetails.class.php
class来验证是否存在namespace
在文件的开头(在之后),您只需要为该类添加一个use
语句,以便当前文件中的类可以“看到”它
是的,但是您在一个名称空间中(假设它是一个文件夹),所以ServiceDetails位于“当前文件夹”(App\Http\Controllers)中。请尝试使用new\ServiceDetails
,或该类的完整命名空间(如果有)one@DamienPirsy,Thanx buddy,当我使用new\ServiceDetails
时,它可以工作,但这是一个巨大的项目,因此在控制器中包含大量文件,并且创建了很多时间对象,是否有任何其他方法来结束命名空间的范围,以便我们可以ate对象是否正常?Thanx我认为它是标准的,但实际上它是一个巨大的应用程序,因此有很多文件被包含,许多对象被创建,所以很难将每个include()更改为名称空间。
use App\Http\Controllers\Controller;
use ServiceDetails
use namespaceyoucopied\ServiceDetails;
use A\B\C\ServiceDetails;
<?php
namespace App\Http\Controllers;
$INCLUDE_ROOT = 'path/to/file';
include_once($INCLUDE_ROOT . "ServiceDetails.class.php");
use App\Http\Controllers\Controller;
use Namespace\To\ServiceDetails;
class Lists extends Controller
{
public function show()
{
$objServiceDetails= new ServiceDetails;
.........
........
}
}
<?php namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Lib\ServiceDetails;
class Lists extends Controller
{
public function show()
{
$objServiceDetails= new ServiceDetails;
.........
........
}
}