gpt4 book ai didi

php - JMSSerializer 独立 - 注释不存在,或无法自动加载

转载 作者:IT王子 更新时间:2023-10-29 01:01:10 26 4
gpt4 key购买 nike

我正在尝试将 JMSSerializer 用作独立库以将来自 API 的 JSON 响应映射到我的模型类,但遇到了一些问题。

执行以下代码会导致异常:

<?php
require dirname(__DIR__) . '/vendor/autoload.php';

use JMS\Serializer\Annotation AS JMS;

class Trii {
/**
* User ID for this session
* @JMS\SerializedName("userID")
* @JMS\Annotation(getter="getUserId")
* @JMS\Type("string")
* @var string
*/
private $userId;

public function getUserId() {
return $this->userId;
}

public function setUserId($userId) {
$this->userId = $userId;
}
}

$serializer = \JMS\Serializer\SerializerBuilder::create()->setDebug(true)->build();
$object = $serializer->deserialize('{"userID":"Trii"}', 'Trii', 'json');
var_dump($object);
?>

这里是异常(exception)

Doctrine\Common\Annotations\AnnotationException: [Semantical Error] The annotation "@JMS\Serializer\Annotation\SerializedName" in property Trii::$userId does not exist, or could not be auto-loaded.

我通过 composer 为项目安装了以下库

{
"require": {
"jms/serializer": "1.0.*@dev"
}
}

由于我没有使用整个 Doctrine 2 解决方案,是否有明显的遗漏?

编辑:我的最终解决方案是创建一个包含以下内容的引导文件:

<?php
// standard composer install vendor autoload magic
require dirname(__DIR__) . '/vendor/autoload.php';

// Bootstrap the JMS custom annotations for Object to Json mapping
\Doctrine\Common\Annotations\AnnotationRegistry::registerAutoloadNamespace(
'JMS\Serializer\Annotation',
dirname(__DIR__).'/vendor/jms/serializer/src'
);
?>

最佳答案

很确定这会启用静默自动加载,这比自己注册命名空间方便得多。

AnnotationRegistry::registerLoader('class_exists');

关于php - JMSSerializer 独立 - 注释不存在,或无法自动加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629137/

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