Symfony 从 String class 声明中获取 className 对象

Symfony get className object from String class declaration

我有这段代码 returns 第二行中声明的类名的列名:

 public function listColumns(EntityManagerInterface $em  ) {
    $class = $em->getClassMetadata(Assure::class);
    $fields = [];
    if (!empty($class->discriminatorColumn)) {
        $fields[] = $class->discriminatorColumn['name'];
    }
    $fields = array_merge($class->getColumnNames(), $fields);
    foreach ($fields as $index => $field) {
        if ($class->isInheritedField($field)) {
            unset($fields[$index]);
        }
    }
    foreach ($class->getAssociationMappings() as $name => $relation) {
        if (!$class->isInheritedAssociation($name)){
            foreach ($relation['joinColumns'] as $joinColumn) {
                $fields[] = $joinColumn['name'];
            }
        }
    }
    return $fields;
}

我正在尝试使这个函数可参数化,这样我就可以在每次 table/className 我正在尝试获取它的列时给它

这是一个可能的解决方案,以不同的方式执行我想要的操作(提取 table 列名称):

   public function listColumns2(EntityManagerInterface $em  ) {

    $conn = $this->getEntityManager()->getConnection();

    $sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 
           N'Assure' ";
    $stmt = $conn->prepare($sql);
    $stmt->execute();

    return $stmt->fetchAllAssociative();
   }