backbee/utils

BackBee 工具库,适用于php

此包的官方仓库似乎已不存在,因此该包已被冻结。

维护者

详细信息

github.com/backbee/utils

v2.0.1 2015-11-13 11:00 UTC

This package is not auto-updated.

Last update: 2024-07-14 16:16:43 UTC


README

utils 库是从 BackBee 核心项目中提取出来的。它包含许多用于操作文件、数组和字符串的有用方法。

Build Status Scrutinizer Code Quality Code Coverage

  1. 集合

尽管API不一致,PHP仍然是处理数组较为方便的程序设计语言之一。

我们已经实现了一些方法,以简化XML和CSV中数组的转换。我们还提供了一些在处理关联数组时可能需要的有用方法。

示例

require_once('some_autoloader.php');
use BackBee\Utils\Collection\Collection;

$users = [0 => ['name' => 'Charles', 'role' => 'lead developper'],
    1 => ['name' => 'Eric', 'role' => 'developper'],
];

echo Collection::toCsv($users, ';');

/**
 * Will return:
 * Charles;lead developper
 * Eric;developper
 */

$users = ['users' => [
    0 => ['name' => 'Charles', 'role' => 'lead developper'],
    1 => ['name' => 'Eric', 'role' => 'developper'],
    ],
];

echo Collection::toBasicXml($users, ';');

/**
 * <users>
 *     <0>
 *        <name>Eric</name>
 *        <role>developper</role>
 *     </0>
 *     <1>
 *        <name>Charles</name>
 *        <role>lead developper</role>
 *     </1>
 * </users>
 */

 $tree = [
    'root' => [
        'child' => [
            'subchild' => 'value',
        ],
    ],
];

Collection::has($tree, 'root:child:subchild'); // return true
Collection::has($tree, 'root::child::subchild', '::'); // return true
Collection::has($tree, 'root:child:foo'); // return false
  1. 字符串

我们为此库添加了一些简化编码操作的方法。我们还提供了一些处理具有特定含义的字符串的有用函数,如文件大小、路径、URL。

示例

require_once('some_autoloader.php');
use BackBee\Utils\String;

/**
 * Some helpers for encoding operations
 */
mb_detect_encoding(String::toASCII('BackBee')); // "ASCII"
mb_detect_encoding(String::toUTF8('w�ird')); // "UTF-8"

/**
 * Some normalizers for filepaths and urls
 */
$options = ['extension' => '.txt', 'spacereplace' => '_'];
String::toPath('test path', $options)); // "test_path.txt"

$options = ['extension' => '.com', 'spacereplace' => '_'];
String::urlize('test`s url', $options); // "tests_url.com"

/**
 * Convenients formatters for file size
 */
String::formatBytes(2000, 3); // "1.953 kb"
String::formatBytes(567000, 5); // "553.71094 kb"
String::formatBytes(567000); // "553.71 kb"
String::formatBytes(5670008902); // "5.28 gb"
  1. 目录 & 文件

我们为此库添加了一些用于目录操作的方法。目前我们提供了4种方法:copy()delete()getContent()move()

示例

require_once('some_autoloader.php');
use BackBee\Utils\File\Dir;

/**
 * /src
 *     foo/
 *        bar.txt
 *        baz.xml
 */

$fooPath = __DIR__.DIRECTORY_SEPARATOR.'foo';
$fooFooPath = $fooPath.DIRECTORY_SEPARATOR.'foo';
$fooBazPath = $fooPath.DIRECTORY_SEPARATOR.'baz';
Dir::copy($fooPath, $fooFooPath);

/**
 * /src
 *     foo/
 *         bar.txt
 *         baz.xml
 *         foo/
 *            bar.txt
 *            baz.xml
 *         baz/
 *            bar.txt
 *            baz.xml
 */

Dir::delete($fooFooPath);

/**
 * /src
 *     foo/
 *         bar.txt
 *         baz.xml
 *         baz/
 *            bar.txt
 *            baz.xml
 */

Dir::getContent(__DIR__);

/**
 * ['foo' =>
 *     ['bar.txt', 'bar.xml', 'baz' =>
 *         ['bar.txt', 'bar.xml']
 *     ]
 * ]
 */

$backbeePath =$fooPath.DIRECTORY_SEPARATOR.'backbee';

Dir::move($fooBazPath, $backbeePath, 000);
/**
 * /src
 *     foo/
 *         bar.txt
 *         baz.xml
 *         backbee/
 *            bar.txt
 *            baz.xml
 */

 Dir::getContent($backbeePath); // throw Exception()