所以我有很多我想用Symfony序列化程序序列化的类.例如
class Foo
{
public $apple = 1;
public $pear = null;
public function serialize() {
Utils::serialize($this);
}
}
Run Code Online (Sandbox Code Playgroud)
我通过以下serialize()
调用序列化:
class Utils {
public static function serialize($object) {
$encoder = new XmlEncoder();
$normalizer = new ObjectNormalizer();
$serializer = new Serializer(array($normalizer), array($encoder));
$str = $serializer->serialize($object, 'xml')
}
}
Run Code Online (Sandbox Code Playgroud)
产生的输出给了我:
<apple>1</apple><pear/>
Run Code Online (Sandbox Code Playgroud)
预期的输出应为:
<apple>1</apple>
Run Code Online (Sandbox Code Playgroud)
我看了一下Symfony 2.8 doc,并设法通过使用找到了一个快速的解决方案$normalizer->setIgnoredAttributes("pear")
.
所以改进的序列化静态函数看起来像这样
class Utils {
public static function ignoreNullAttributes($object) {
$ignored_attributes = array();
foreach($object as $member => $value) {
if (is_null($object->$member)) …
Run Code Online (Sandbox Code Playgroud) 有时,我只在 docker-compose.yml 文件中看到主要版本,例如version: '3'
. 其他时候,我还可以看到次要版本,例如version: '3.7'
我没有找到任何最佳实践。
是只指定主要版本并更灵活更好,还是将格式固定为次要版本并更严格?