haijin / tools
PHP应用程序中常用的工具。
此包的规范存储库似乎已不存在,因此包已被冻结。
v2.0.0
2019-04-28 02:00 UTC
Requires
- php: ^7.1
Requires (Dev)
- haijin/specs: ^2.0
- phpunit/php-code-coverage: ^7.0
README
PHP应用程序中常用的工具。
版本 2.0.0
如果您非常喜欢它,您可以通过资助其开发来做出贡献。
目录
安装
将此库包含在您的项目 composer.json
文件中
{ ... "require": { ... "haijin/tools": "^2.0", ... }, ... }
可用工具
AttributePath
AttributePath是从根对象到该对象嵌套属性的一系列属性。
$path = new AttributePath("user.address"); $path = $path->concat("street"); print $path->toString(); // "user.address.street" print $path->toArray(); // ["user", "address", "street" ] $user = [ "name" => "Lisa", "lastName" => "Simpson", "address" => [ "street" => null ] ]; $path->setValueTo($user, "Evergreen 742"); print $path->getValueFrom($user); // Evergreen 742 $path = $path->back(); print $path; // "user.address"
FilePath
文件或目录的路径。
$path = new FilePath("home/dev"); $path = $path->concat("src"); print $path->toString(); // "home/dev/src" print $path->toArray(); // ["home", "dev", "src"] $path = $path->back(); print $path; // "home/dev"
对象访问器
一个类,用于使用多态接口动态读取和写入对象、数组和关联数组的属性。
$user = [ 'name' => 'Lisa', 'lastName' => 'Simpson', 'addresses' => [ [ 'street' => null ] ] ]; $accessor = new ObjectAttributeAccessor($user); $accessor->setValueAt("addresses.[0].street", "Evergreen 742"); print $accessor->getValueAt("addresses.[0].street"); // Evergreen 742
OrderedCollection
PHP 数组的替代品,用于索引集合。
它总是通过引用传递,并具有一致、简单和完整的协议。
$orderedCollection = OrderedCollection::withAll([10, 20, 30]); $orderedCollection[] = 40; print $orderedCollection[0]; // => 10 print $orderedCollection[-1]; // => 40 print $orderedCollection->findFirst(function($sum, $each) { return $each > 20; }); // 30 print $orderedCollection->select(function($each) { return $each > 20; }); // [30, 40] print $orderedCollection->collect(function($each) { return $each + 1; }); // [11, 21, 31, 41] print $orderedCollection->acummulate(0, function($sum, $each) { return $sum = $sum + $each; }); // 100 $orderedCollection->eachDo(function($each) { print $each . " "; }); // 10, 20, 30, 40 print $orderedCollection->removeAt(0); // 10
字典
PHP 数组的替代品,用于关联集合。
它总是通过引用传递,并具有一致、简单和完整的协议。
$dictionary = new Dictionary(); $dictionary['a'] = 10; $dictionary['b'] = 20; print $dictionary->getKeys(); // => ['a', 'b'] print $dictionary->getValues(); // => [10, 20] print $dictionary['a']; // => 10 print $dictionary->atIfAbsent('c', function() { return 0; }); // 0 print $dictionary->atIfAbsent('c', 0); // 0 $dictionary->keysAndValuesDo(function($key, $value) { print $key . " => " . $value . ", "; }); // 'a' => 10, 'b' => 20, print $dictionary->removeAt('a'); // 10
FilesCache
一个非常简单的文件缓存目录。
使用它来缓存缓存的文件生成的内容的示例
use Haijin\FilesCache; $cache = new FilesCache() $cache->setCacheFolder("resources/css"); $cache->lockingDo(function($cache) use($sassFilename) { if($cache->needsCaching($sassFilename)) { $cssContents = $this->sassToCss(file_get_contents($sassFilename)); $cache->writeFileContents( $sassFilename, $cssContents, $filename . ".css" ); } return $this->cache->getPathOf($sassFilename); });
使用它来从资源目录缓存文件到公共目录的示例
use Haijin\FilesCache; $cache = new FilesCache() $cache->setCacheFolder("public/css"); $cache->lockingDo(function($cache) use($filename) { if ($cache->needsCaching($filename)) { $cache->writeFile( $filename, $filename ); } return $this->cache->getPathOf($filename); });
调试器
使用 \Haijin\Debugger
递归检查任何值、数组或对象。
用于控制台和文件记录
echo \Haijin\Debugger::inspect($object);
用于 HTML 记录
echo \Haijin\Debugger::webInspect($object);
在文件 tests\specsBoot.php
中定义函数,并在规范中使用
function inspect($object) { \Haijin\Debugger::inspect($object); }
\inspect($filesCache);
运行测试
composer specs
或者,如果您想使用 PHP 7.2 的 Docker 运行测试
sudo docker run -ti -v $(pwd):/home/php-tools --rm --name php-tools haijin/php-dev:7.2 bash
cd /home/php-tools/
composer install
composer specs