gpt4 book ai didi

php - 如何在 Laravel 中将 include_once() 与命名空间一起使用

转载 作者:行者123 更新时间:2023-12-03 16:11:10 27 4
gpt4 key购买 nike

我是 Laravel 新手,正在导入现有的 php 站点。我创建了一个名为“List”的 Controller ,然后我需要创建一个类的对象,该对象在由 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;
.........
........
}
}

但是我收到了类似的错误

Fatal error: Class 'App\Http\Controllers\ServiceDetails' not found

我对命名空间“use”和“as”不太了解。可能这就是为什么我无法解决这个问题。创建新对象时,它仅在 namespace 位置中搜索类,但我认为它也应该在包含的文件中查找。

最佳答案

如果当前文件中有命名空间,PHP 将尝试在当前命名空间中查找类,如果找不到,则会出现 fatal error 。您应该打开ServiceDetails.class.php类来验证是否有 namespace ...;在文件的开头(在 <?php 之后)。如果没有,您可以简单地添加您的 Lists之后的文件:

use App\Http\Controllers\Controller;

以下行:

use ServiceDetails

如果是,您应该复制该命名空间并添加以下行:

use namespaceyoucopied\ServiceDetails;

当然在namespaceyoucopied您需要放置正确的复制 namespace ,使其看起来像这样:

use A\B\C\ServiceDetails;

您还可以查看How to use objects from other namespaces and how to import namespaces in PHPPHP namespaces manual

关于php - 如何在 Laravel 中将 include_once() 与命名空间一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30781634/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com