如何在遗留PHP项目中使用symfony2验证程序组件?

如何在遗留PHP项目中使用symfony2验证程序组件?,php,validation,symfony,doctrine-orm,Php,Validation,Symfony,Doctrine Orm,我有一个不是symfony2项目的遗留项目,但是有可用的symfony2组件 我有条令实体,我希望能够通过注释断言它们。我没有容器,不能直接呼叫: $container->get('validator')->validate($entity); 您可以通过以下方式初始化验证程序: $validator = Validation::createValidatorBuilder() ->enableAnnotationMapping()

我有一个不是symfony2项目的遗留项目,但是有可用的symfony2组件

我有条令实体,我希望能够通过注释断言它们。我没有容器,不能直接呼叫:

$container->get('validator')->validate($entity);

您可以通过以下方式初始化验证程序:

$validator = Validation::createValidatorBuilder()
                    ->enableAnnotationMapping()
                    ->getValidator()
您可以通过以下方式验证实体:

$violations = $validator->validate($entity);
如果
$inflictions
是空数组,则实体已验证,否则您将获得违规,并且可以:

if (count($violations) > 0)
    foreach($violations as $violation) {
         $this->getLogger()->warning($violation->getMessage());
    }
}
您可以断言您的实体,并确保使用了所有注释。例如,我使用的遗留项目不包括
@实体
注释,虽然它不影响条令,但也影响了验证过程

<?php
namespace Hive\Model\YourEntity;

use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Id;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\Table;
use Symfony\Component\Validator\Constraints\NotNull;

/**
 * Class AdGroupAd
 * @Entity(repositoryClass="YourEntityRepository")
 * @Table(name="your_entity_table_name")
 */
class AdGroupAd
{
     ...

    /**
     * @Column(type="string")
     * @var string
     * @NotNull()
     */
    protected $status;

    ...

亲爱的投票人,我希望你能发表评论。
AnnotationRegistry::registerAutoloadNamespace(
    "Symfony",
    PATH_TO_YOUR_WEB_ROOT . "/vendor/symfony/symfony/src"
);