gpt4 book ai didi

php - 在 Laravel 5 项目中使用枚举类

转载 作者:行者123 更新时间:2023-12-04 16:54:42 25 4
gpt4 key购买 nike

我想在我的 laravel 5 应用程序中使用一些枚举类。
它们以这个 PHP 手册页示例为蓝本:http://php.net/manual/en/class.splenum.php

文件 app\Enums.php 看起来像这样:

<?php
namespace MyApp\Enums;
class ItemStates extends SplEnum
{
const __default = self::Active;

const Active = 1;
const Pending = 2;
}

class ItemVisibility extends SplEnum
{
const __default = self::Community;

const Community = 1;
const Personal = 2;
}

我想从 Controller 中使用这些。
我在 Controller 的顶部放置了一个 use 语句:
use MyApp\Enums;

当我尝试像这样使用该类时:
if ($category['Family'] == CategoryFamily::General)

我收到一个错误:
找不到类“MyApp\Http\Controllers\Quiz\CategoryFamily”

我已经运行 compose dump-autoload 以防万一。

如何从 Controller 内部(多个 Controller )使用我的 Enum 类?

最佳答案

如果我错了,请纠正我,但 Laravel 使用 PSR-4合规的自动装载机。在 psr-4 的文档中提到:

The terminating class name corresponds to a file name ending in .php. The file name MUST match the case of the terminating class name.



您可以在 composer.json 中检查它是否使用此标准。文件以确保:
"psr-4": {
"MyApp\\": "app/"
}

这意味着它将无法找到您的类(class)。我建议您将每个类放入一个与类同名的单独文件中,并将其放入 MyApp\Enum 命名空间中。

您拥有的其他选项是使用 psr-0 包含您的应用程序您的标准 composer.json , 或者手动包含您想要的 Enum 文件。

更新

完成此操作后,您应该可以通过输入 use SplEnum; 来使用 SplEnum。下 namespace ..在您的文件顶部,当且仅当您安装了 SplTypes 时。如果您使用的是 Windows 或不想安装此 PECL Extension ,那么我建议这个答案: https://stackoverflow.com/a/254543/2433843一个优雅的解决方案。

关于php - 在 Laravel 5 项目中使用枚举类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31255567/

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