生成代码的帮助程序。
LangUtil的Python项目详细描述
语言实用程序
目前,这个实用程序只输出等效的php代码。
php
importlangutil.php
转换“标量”
php中的标量是任何不是对象的东西(在php中: !is_object(1) === true)。
# Booleanslangutil.php.generate_scalar(True)=='true'langutil.php.generate_scalar(True,True)=='TRUE'# None turns into nulllangutil.php.generate_scalar(None)=='null'langutil.php.generate_scalar(None,True)=='null'# Numbers are untouchedlangutil.php.generate_scalar(1)=='1'langutil.php.generate_scalar(2.5)=='2.5'# Strings use single quotes unless it is necessary to use double quotes# Double quotes are only necessary if the character has any control codeslangutil.php.generate_scalar('php code!')==''phpcode!''langutil.php.generate_scalar('this string has\nnew lines')=='"this string has\nnew lines"'
转换列表、元组、字典等
这些类型在php中都解析为同一类型:“php数组”。这个 generate_array()函数处理递归结构,但可能失败 检测特殊对象的底层结构,除非它们实现 像__dict__()这样的方法。
所有字符串(包括字典的键)将默认为单个 引号,除非需要双引号。
输出将使用新行和两个空格缩进。
langutil.php.generate_array([])=='array();'langutil.php.generate_array(tuple([]))=='array();'langutil.php.generate_array(set(tuple([])))=='array();'langutil.php.generate_array({})=='array();'
列表/集合/元组转换
langutil.php.generate_array([1,2,])
输出:
array(
1,
2,
);
字典转换
对于字典,键的顺序是不保证的。在php中,散列是 命令。
langutil.php.generate_array({'special':'\n','special\x05':'a string','key':1,'list':[1,2,3],})
输出:
array(
'key' => 1,
'list' => array(
1,
2,
3,
),
"special\x05" => 'a string',
'special' => "\n",
);
串行化
使用php.serialize(data_arg)在php的special中序列化数据 序列化格式。模块将尝试使用该模块 phpserialize第一个,但是有纯的回退版本 用于简单值的python(不处理类、引用或 “对象”)。
注意,类型list、tuple、set和dict变为 php数组(序列化格式要求为 列表使它们成为整数,但应该是等价的 php中的“基于整数的数组”(数字键不会变成字符串 钥匙)。
要取消序列化,请使用php.unserialize(str_arg),这需要 phpserialize模块。