声明新的枚举类型 php

declaring new enum type php

我是 PHP 的新手,我正在研究 Symfony 4 项目

我使用名为 role

的枚举 Class 创建了一个 Java 项目
public class Role {
public enum RoleEnum {
Admin, SuperAdmin, Etudiant, Entreprise } private Short id;
private RoleEnum name;

public Role(Short id, RoleEnum name) {
    this.id = id;
    this.name = name ;
}

在我的用户中我是这样的

public abstract class User {

private Long id;
private String nom;
private String email;
private String mdp;
private String tel;
private String photo;
private Role role;
private Boolean etatCompte;

并且我在 MySQL

中的两个 table 之间建立了关系

我也在 Java 中创建了这个方法

   public Role getRoleByName(RoleEnum input) {

    Statement stm;
    try {
        stm = cnx.createStatement();

        String query = "SELECT id from role Where name='" +input+"'";
        ResultSet rst = stm.executeQuery(query);

        while (rst.next()) {
            Short id = rst.getShort("id");
            return new Role(id, input);
        }
    } catch (SQLException ex) {
        Logger.getLogger(ServiceEtudiant.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    return null;
}

当我向 table 添加值时,例如将“admin”添加到角色,我是这样做的

        Role role = s.getRoleByName(Role.RoleEnum.Admin);

任何人都可以帮助我或指导如何在我的 symfony 项目中以同样的方式做到这一点吗?

在 PHP 中,您可以创建关联数组,例如:

[
    "FIRST" => 1,
    "SECOND" => 2,
    "THIRD" => 3,
    "FOURTH" => 4,
]

对此的改进是将键也创建为变量:

$FIRST = "FIRST";
$SECOND = "SECOND";
$THIRD = "THIRD";
$FOURTH = "FOURTH";

$myenum = [
    $FIRST = 1,
    $SECOND = 2,
    $THIRD = 3,
    $FOURTH = 4,
];

您可以创建枚举生成器

class MyEnum {
    public function __construct($keysValues) {
        foreach ($keysValues as $key => value) $this->{$key} => $value;
        $this->values = $values;
    }
}

实例化:

$numbers = new MyEnum(
[
    "FIRST" => 1,
    "SECOND" => 2,
    "THIRD" => 3,
    "FOURTH" => 4,
]);