PHP7 返回类型转换为 JSON

6

PHP 7有一个新特性,就是返回类型声明。

我们可以返回类型为'string'的值,例如:

function myFunction ($a) : string  { }

我们也可以返回一个像 'array'(数组)一样的数据类型:
function myFunction ($a) : array  { }

但是我们如何声明“JSON”类型的响应呢?


3
JSON并不是一种数据类型,它是一种结构化的字符串。所以,如果你的函数返回JSON,实际上是返回了一个字符串,就像序列化对象也会返回一个字符串一样。 - KhorneHoly
2
你可以编写一个自定义类,它只是包装了一个字符串并对其执行一些验证,但这大概就是你能得到的最接近的了。如果你还在其中实现了 __toString 方法,那么你的调用代码甚至不需要知道差异。 - iainn
1
谢谢大家!不好意思,是我的问题,对@iainn加一票,确实是个好主意。 - mpalencia
3个回答

21

在PHP中,JSON不是本地数据类型,它是一个结构化的字符串。因此,如果您的函数返回JSON,则返回的是一个字符串。

所以,function myFunction ($a) : string { } 是正确的。

如果您想进一步描述返回值,应该使用文档。

/**
 * @return string $jsonString The returned string contains JSON
 */
function myFunction ($a) : string  { }

对于PHP中的序列化对象,同样也适用。序列化对象是一个结构化字符串。


0

我喜欢@KhorneHoly的回答。不过,你可能需要考虑一个更好的函数名(myFunction只是一个虚拟名称,对吧?):

function getJson($a) : string { }

这表明返回的字符串实际上是JSON(无需使用PHPDocs),这一点非常明显。

-1
class PropertyNormalizer
{
    /**
     * @param Object $doc
     * @return NormalisedProperty
     */
    public function normalize(Object $doc): Object
    {
        $property = new NormalisedProperty($doc);
        // ... 
        return $property;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接