php - 使用未按预期工作的外部类
问题描述
我有一个问题,我试图从另一个文件中的类调用方法。我已经完成了:use Tests\Feature\testName
当我尝试在我的函数中使用它时,这显示了该类,甚至显示了我试图在 testName 文件中调用的函数。但是,当我尝试只运行 PHP 文件时,我得到了这个错误:
Uncaught Error: Class 'Tests\Feature\testName' not found in path\to\file
我对它为什么不起作用感到有些困惑,如果有人能解释为什么会这样,我将不胜感激!:)
解决方案
在 PHP 中,类不包含在简单地使用use
指令中。您需要通过包含类所在的文件来加载它们。
有什么用use
?(哈哈)
use
让您不使用您正在使用的类的 FQDN,请参见下面的代码:
use \A\Long\Namespace\Foo;
$foo = new Foo();
// Without use, you would have needed : $foo = new \A\Long\Namespace\Foo();
无聊的方式
这就是 PHP 开发人员多年前这样做的方式,它只是明确要求该文件:
// Foo.php
class Foo {}
// index.php
require_once( __DIR__ . '/Foo.php');
$foo = new Foo();
正常的方式
现在,人们使用自动加载具有模式的类的代码,您可以使用Composer(其中,不会在此处进行基于意见的讨论),或者,如果您的项目很小并且您不想使用它,因为你对它没有信心,手动加载你的类。例如,将所有类放在一个class
文件夹中,并用类的相同名称命名文件,然后您可以使用以下代码:
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});
加载您需要的所有类(您可能希望将其放在 PHP 代码的开头)。
推荐阅读
- django - 如何使用 firebase 和 django 向用户发送推送通知
- r - 使用“Expand.Grid”和“mapply”评估函数
- react-native - 快速刷新如何在后台工作?
- awk - 用 0 或 NaN 替换列值
- css - 如何使用 CSS 使一个元素缩小到某一点,然后将兄弟元素缩小到某一点,然后包装元素?
- c# - 您如何使用 Appium 来测试具有相同代码的 iOS 和 Android 设备?
- javascript - 如何避免在 mxgraph 中重复拖动
- c# - 如何将位置地址和电话号码绑定到 ICS
- c# - 禁用组合框中的项目:devexperss winforms
- reactjs - useForm 如何在外部设置控制器值