可以在枚举 php 8 上使用类名
我正在阅读 php 枚举文档,据我了解,这个新功能最基本的形式是让我们设置在类中使用的常量以进行类型检查。
有什么办法可以与课程一起工作吗?例子:
enum ClassEnum {
case \App\Model\Test;
case \App\Model\AnotherTest;
}
I'm reading the php enum documents and from what I understand, this new feature in its most basic form is for us to set constants to be used in classes for type checking.
Is there any way to work with classes? Example:
enum ClassEnum {
case \App\Model\Test;
case \App\Model\AnotherTest;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,你不能那样使用枚举。但还有几种选择。
首先也是最重要的是使用接口,它为实现必须公开哪些方法以及其他代码可以期望使用哪些方法与其交互设置契约。
在极少数情况下,您想要使用多个非扩展类型,您也可以使用 复合类型 是在 PHP 8 中引入的:
上面的两个片段都会输出:
但是我远远建议使用接口,因为它使得你的代码更加灵活,更容易编写和维护。
No, you can't use Enums like that. But there are a couple alternatives.
First and foremost would be to use an interface, which sets the contract for what methods an implementation must expose, and what methods other code can expect to use to interact with it.
In the rare case that you want to use multiple, non-extending types you can also use Composite Types which were introduced in PHP 8:
Both of the above snippets will output:
But I far and away recommend using Interfaces as it makes your code more flexible and easier to write and maintain.