




🧰 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 loadAutoLoader
Simple autoloaderObjectBox
simple object containerOptional
like javajava.util.Optional
- and more ...
composer require toolkit/stdlib
useToolkit\Stdlib\Str\StrBuffer;$buf = StrBuffer::new("c");$buf->prepend('ab')$buf->append('de')$str = (string)$buf;// "abcde"$str =$buf->toString();// "abcde"// get and clean.$str =$buf->fetch();// "abcde"$str =$buf->join(',');// "ab,c,de"
ObjectBox
- Simple object container.
useToolkit\Stdlib\Obj\ObjectBox;$box = ObjectBox::global();// set$box->set('router',function () {returnnewMyRouter();});$box->set('renderer', ['class' => MyRenderer::class,'tplDir' =>'path/to/dir',]);// with options for create$box->set('somObj', ['class' => MyObject::class,'__opt' => [// will always create new object.'objType' => ObjectBox::TYPE_PROTOTYPE, ],]);// get/** @var MyRouter $router */$router =$box->get('router');/** @var MyRenderer $renderer */$renderer =$box->get('renderer');
AutoLoader
- an simple psr4 loader, can use for tests.
AutoLoader::addFiles([// alone files]);$loader = AutoLoader::getLoader();$loader->addPsr4Map(['namespace' =>'path']);$loader->addClassMap(['name' =>'class file']);
It aims to eliminate excessive if judgments.
Not use Optional:
useToolkit\Stdlib\Util\Optional;$userModel = UserModel::findOne(23);if ($userModel) {$username =$userModel->name;}else {$username ='unknown';}
Use Optional:
useToolkit\Stdlib\Util\Optional;$username = Optional::ofNullable($userModel) ->map(function ($userModel) {return$userModel->name; })->orElse('unknown');
Use arrow syntax:
useToolkit\Stdlib\Util\Optional;$username = Optional::ofNullable($userModel) ->map(fn($userModel) =>$userModel->name) ->orElse('unknown');
PhpDotEnv
- a simple dont env file loader.
The env config file.env
(must is 'ini' format):
APP_ENV=devDEBUG=true; ... ...
Usage:
PhpDotEnv::load(__DIR__,'.env');env('DEBUG',false);env('APP_ENV','prod');
useToolkit\Stdlib\Util\Stream\DataStream;useToolkit\Stdlib\Util\Stream\ListStream;$userList = ListStream::of($userModels) ->filter(fn($userModel) =>$userModel->age >20)// only need age > 20 ->map(function ($userModel) {// only need field: age, namereturn ['age' =>$userModel->age,'name' =>$userModel->name, ]; }) ->toArray();vdump($userList);
$pf = PipeFilters::newWithDefaultFilters();$val =$pf->applyString('inhere','upper');// 'INHERE'$val =$pf->applyString('inhere','upper|substr:0,3');// 'INH'
MIT