arc / base
Ariadne 组件库
3.0.3
2021-05-10 12:57 UTC
Requires
- php: >=7.1
- arc/prototype: ~3.0
Requires (Dev)
- phpunit/phpunit: 9.*
README
arc\base 是 ARC - 组件库 的一部分。此包提供了一组在大多数其他 ARC 包中使用的基数据类型和操作。
ARC 是从 Ariadne Web 应用平台和内容管理系统 http://www.ariadne-cms.org/ 分离出来的。
安装
您可以使用 composer 安装完整的 ARC 组件集
composer require arc/arc
或者您可以使用 arc/arc 开始一个新项目,如下所示
composer create-project arc/arc {$path}
或者只需使用此包
composer require arc/base
arc/base 包含
- path: 解析路径,包括相对路径,获取父级等。
- tree: 解析类似文件系统的树形结构和搜索、修改它们的方法。
- hash: 用于简化嵌套哈希的常用任务的方法。
- template: 基于PHP的简单模板,具有编译选项。
- context: 嵌套作用域或可堆叠的DI容器。
- lambda: 部分函数应用。
示例代码
\arc\path
\arc\path::collapse( '../', '/current/directory/' );
// => '/current/'
\arc\path::collapse( 'some//../where', '/current/directory' );
// => '/current/directory/where/'
\arc\path::collapse( '../../../', '/current/directory/' );
// => '/'
\arc\path::diff( '/a/b/', '/a/c/' );
// => '../c/'
\arc\path::parent( '/parent/child/' );
// => '/parent/'
\arc\path::map( '/some path/with "quotes"/', function( $entry ) {
return urlencode( $entry, ENT_QUOTES );
});
// => '/some+path/with+%22quotes%22/'
\arc\path::reduce( '/a/b/', function( $result, $entry ) {
return $result . $entry . '\\';
}, '\\' );
// => '\\a\\b\\';
\arc\tree
$tree = \arc\tree::expand([
'/' => 'Root',
'/foo/bar/' => 'Bar'
]);
// => NamedNode tree with '/' => Root, '/foo/' => null, '/foo/bar/' => 'Bar'
$hash = \arc\tree::collapse( $tree );
// [ '/' => 'Root', '/foo/bar/' => 'Bar' ]
$nodeValueWithAnR = \arc\tree::search( $tree, function($node) {
if ( strpos( $node->nodeValue, 'R' )!==false ) {
return $node->nodeValue;
}
});
// => 'Root'
$Btree = \arc\tree::filter( $tree, function($node) {
return ( strpos( $node->nodeValue, 'B' ) !== false );
});
// => [ '/foo/bar/' => 'Bar' ]
\arc\hash
\arc\hash::get( '/foo/bar/', [ 'foo' => [ 'bar' => 'baz' ] ] );
// => 'baz'
\arc\hash::get( '/foo/bar/', [ 'foo' => [ ] ], 'zilch' );
// => 'zilch'
\arc\hash::parseName( 'input[one]' );
// => '/input/one/'
\arc\hash::compileName( '/input/one' );
// => 'input[one]'
\arc\tree::collapse(
\arc\hash::tree(
[ 'foo' => [ 'bar' => 'A bar', 'baz' => 'Not a bar' ] ]
)
);
// => [ '/foo/bar/' => 'A bar', '/foo/baz/' => 'Not a bar' ]