PHP函数参考xx-其他基本扩展
目录
json
本扩展实现了 » JavaScript对象符号(JSON)数据转换格式。 PHP 5 中的解码分析器基于 Douglas Crockford 的 JSON_checker。 PHP 7 中是改进的全新解析器,专门为 PHP 订制,软件许可证为 PHP license。
- json_decode — 对 JSON 格式的字符串进行解码
- json_encode — 对变量进行 JSON 编码
- json_last_error_msg — Returns the error string of the last json_encode() or json_decode() call
- json_last_error — 返回最后发生的错误
注意:json_encode的option选项可以设置JSON_UNESCAPED_UNICODE 支持正常显示中文,而不是显示unicode字符串,便于阅读。
lua
Lua是一个功能强大,速度快,轻量级,可嵌入的脚本语言。这个扩展嵌入Lua解释器,并对lua变量和函数提供面向对象的API。
扩展额外安装:https://pecl.php.net/package/lua
-
Lua::assign — 将一个php变量赋值给Lua
-
Lua::call — 调用Lua函数
-
Lua::__construct — Lua 构造方法
-
Lua::eval — 将字符串当做Lua代码执行
-
Lua::getVersion — 获取Lua版本
-
Lua::include — 解析Lua脚本文件
返回脚本文件运行结果,参数错误返回NULL ,其它错误返回FALSE。
-
Lua::registerCallback — 向Lua中注册php函数
-
LuaClosure::__invoke — 调用luaclosure
$lua = new Lua();
$closure = $lua->eval(<<<CODE
return (function ()
print("hello world")
end)
CODE
);
$lua->call($closure);
/* after PHP 5.3 */
$closure();
//输出:hello worldhello world
V8js
这个扩展将»V8 Javascript引擎嵌入到PHP中。
- V8Js::__construct — Construct a new V8Js object
- V8Js::executeString — Execute a string as Javascript code
- V8Js::getExtensions — Return an array of registered extensions
- V8Js::getPendingException — Return pending uncaught Javascript exception
- V8Js::registerExtension — Register Javascript extensions for V8Js
$v8 = new V8Js();
/* basic.js */
$JS = <<< EOT
len = print('Hello' + ' ' + 'World!' + "\\n");
len;
EOT;
try {
var_dump($v8->executeString($JS, 'basic.js'));
} catch (V8JsException $e) {
var_dump($e);
}
Hello World!
int(13)
yaml
本扩展实现了 » YAML Ain’tMarkup Language (YAML) 数据序列化标准。
yaml数据格式:
languages:
- Ruby
- Perl
- Python
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
对应的json格式:
{
languages: [ 'Ruby', 'Perl', 'Python'],
websites: {
YAML: 'yaml.org',
Ruby: 'ruby-lang.org',
Python: 'python.org',
Perl: 'use.perl.org'
}
}
- yaml_emit_file — Send the YAML representation of a value to a file
- yaml_emit — Returns the YAML representation of a value
- yaml_parse_file — Parse a YAML stream from a file
- yaml_parse_url — Parse a Yaml stream from a URL
- yaml_parse — Parse a YAML stream
$addr = array(
"given" => "Chris",
"family"=> "Dumars",
"address"=> array(
"lines"=> "458 Walkman Dr.
Suite #292",
"city"=> "Royal Oak",
"state"=> "MI",
"postal"=> 48046,
),
);
$invoice = array (
"invoice"=> 34843,
"date"=> "2001-01-23",
"bill-to"=> $addr,
"ship-to"=> $addr,
"product"=> array(
array(
"sku"=> "BL394D",
"quantity"=> 4,
"description"=> "Basketball",
"price"=> 450,
),
array(
"sku"=> "BL4438H",
"quantity"=> 1,
"description"=> "Super Hoop",
"price"=> 2392,
),
),
"tax"=> 251.42,
"total"=> 4443.52,
"comments"=> "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
);
// 把该 invoice 转换生成 YAML 的表示法
$yaml = yaml_emit($invoice);
var_dump($yaml);
// 把 YAML 转换成 PHP 变量
$parsed = yaml_parse($yaml);
// 来回转换,以检查两个结构是否相等效
var_dump($parsed == $invoice);
Yaf扩展框架
The Yet Another Framework (Yaf) 扩展是一个用来开发web应用的php框架。
http://pecl.php.net/package/yaf
http://cn2.php.net/manual/zh/yaf.tutorials.php (文档)
http://www.laruence.com/manual/preface.html (文档)
trait
trait是一个扩展,用于检测XSS代码(tainted string)。并可用于发现sql注入漏洞、shell注入漏洞等。
当启用了trait,如果传递一个traited的字符串(来自$_GET,$_POST或$_COOKIE)给一些函数,trait发出警告。
Data Structures
PHP7高效的数据结构,可以作为 array 的替代。
安装:
pecl install ds
或编译: