项目作者: php-toolkit

项目描述 :
Standard and basic PHP tool library
高级语言: PHP
项目地址: git://github.com/php-toolkit/stdlib.git
创建时间: 2020-06-08T12:27:03Z
项目社区:https://github.com/php-toolkit/stdlib

开源协议:MIT License

下载


StdLib

License
Php Version
Latest Stable Version
Unit Tests
Docs on pages

🧰 Stdlib - Useful basic tools library for PHP development.

Contains:

  • array, string, number, object helper
  • common php, OS env information

More Utils

  • PhpDotEnv Dotenv(.env) file load
  • AutoLoader Simple autoloader
  • ObjectBox simple object container
  • Optional like java java.util.Optional
  • and more …

Install

  1. composer require toolkit/stdlib

String helper

StrBuffer

  1. use Toolkit\Stdlib\Str\StrBuffer;
  2. $buf = StrBuffer::new("c");
  3. $buf->prepend('ab')
  4. $buf->append('de')
  5. $str = (string)$buf; // "abcde"
  6. $str = $buf->toString(); // "abcde"
  7. // get and clean.
  8. $str = $buf->fetch(); // "abcde"
  9. $str = $buf->join(','); // "ab,c,de"

Object helper

Object box

ObjectBox - Simple object container.

  1. use Toolkit\Stdlib\Obj\ObjectBox;
  2. $box = ObjectBox::global();
  3. // set
  4. $box->set('router', function () {
  5. return new MyRouter();
  6. });
  7. $box->set('renderer', [
  8. 'class' => MyRenderer::class,
  9. 'tplDir' => 'path/to/dir',
  10. ]);
  11. // with options for create
  12. $box->set('somObj', [
  13. 'class' => MyObject::class,
  14. '__opt' => [
  15. // will always create new object.
  16. 'objType' => ObjectBox::TYPE_PROTOTYPE,
  17. ],
  18. ]);
  19. // get
  20. /** @var MyRouter $router */
  21. $router = $box->get('router');
  22. /** @var MyRenderer $renderer */
  23. $renderer = $box->get('renderer');

Util classes

AutoLoader

AutoLoader - an simple psr4 loader, can use for tests.

  1. AutoLoader::addFiles([
  2. // alone files
  3. ]);
  4. $loader = AutoLoader::getLoader();
  5. $loader->addPsr4Map([
  6. 'namespace' => 'path'
  7. ]);
  8. $loader->addClassMap([
  9. 'name' => 'class file'
  10. ]);

Optional

It aims to eliminate excessive if judgments.

Not use Optional:

  1. use Toolkit\Stdlib\Util\Optional;
  2. $userModel = UserModel::findOne(23);
  3. if ($userModel) {
  4. $username = $userModel->name;
  5. } else {
  6. $username = 'unknown';
  7. }

Use Optional:

  1. use Toolkit\Stdlib\Util\Optional;
  2. $username = Optional::ofNullable($userModel)
  3. ->map(function ($userModel) {
  4. return $userModel->name;
  5. })->orElse('unknown');

Use arrow syntax:

  1. use Toolkit\Stdlib\Util\Optional;
  2. $username = Optional::ofNullable($userModel)
  3. ->map(fn($userModel) => $userModel->name)
  4. ->orElse('unknown');

PhpDotEnv

PhpDotEnv - a simple dont env file loader.

The env config file .env (must is ‘ini’ format):

  1. APP_ENV=dev
  2. DEBUG=true
  3. ; ... ...

Usage:

  1. PhpDotEnv::load(__DIR__, '.env');
  2. env('DEBUG', false);
  3. env('APP_ENV', 'prod');

Stream

  1. use Toolkit\Stdlib\Util\Stream\DataStream;
  2. use Toolkit\Stdlib\Util\Stream\ListStream;
  3. $userList = ListStream::of($userModels)
  4. ->filter(fn($userModel) => $userModel->age > 20) // only need age > 20
  5. ->map(function ($userModel) {
  6. // only need field: age, name
  7. return [
  8. 'age' => $userModel->age,
  9. 'name' => $userModel->name,
  10. ];
  11. })
  12. ->toArray();
  13. vdump($userList);

PipeFilters

  1. $pf = PipeFilters::newWithDefaultFilters();
  2. $val = $pf->applyString('inhere', 'upper'); // 'INHERE'
  3. $val = $pf->applyString('inhere', 'upper|substr:0,3'); // 'INH'

License

MIT