autoframe/components-env

PHP 环境工具,Autoframe 框架

1.0.0 2023-07-02 22:25 UTC

This package is auto-updated.

Last update: 2024-10-01 00:07:47 UTC


README

Build Status License: The 3-Clause BSD License Packagist Version Downloads

PHP 环境工具,Autoframe 框架

命名空间

  • Autoframe\Components\Env
  • AfrEnv::getInstance()->isDev() 如果 APP_ENV 为 null 则返回 true
  • APP_ENV 不是必需的,但建议使用 AfrEnv::getInstance()->setInlineEnvVar('APP_ENV', 'DEV');

  • class AfrEnv extends AfrSingletonAbstractClass implements AfrEnvInterface
    • setWorkDir(string $sDir)
    • readEnv(int $iCacheSeconds, array $aExtraEnvDirsFiles = [])
      • iCacheSeconds 是在过期前的缓存秒数。使用零表示不缓存
      • aExtraEnvDirsFiles 用于添加额外的环境目录和 .env 文件
    • readEnvPhpFile(string $sFilePath)
    • setInlineEnvVar(string $sKey, $mData)
      • 填充内联键
    • required(array $aKeys): AfrEnvValidatorInterface
    • ifPresent(array $aKeys): AfrEnvValidatorInterface
    • unrequire(array $aKeys): AfrEnvValidatorInterface
      • 删除必需的或 ifPresent
    • registerEnv(bool $bMutableOverwrite = false, bool $bRegisterPutEnv = false)
      • 将填充 $_ENV, $_SERVER 和 getenv()
    • getEnv(string $sKey = '') 单个键或所有已注册的值
      • 仅存储在类内部,没有 $_ENV, $_SERVER 或 getenv()
    • flush() 重置和清除所有
    • isProduction()
    • isStaging()
    • isLocal()
    • isDev()
  • class AfrEnvParserClass extends AfrSingletonAbstractClass implements AfrEnvParserInterface
    • parseStr
    • parseFile
  • class AfrEnvValidatorClass implements AfrEnvValidatorInterface
    • 可重用的验证器使用闭包
    • required(array $aKeys)
    • ifPresent(array $aKeys)
    • customClosure(callable $fX)
    • allowedValues(array $aAllowed)
    • validateAll(array $aDataSet): bool
    • reset()
    • reset(array $aKeys)
    • unrequire(array $aKeys)
    • isInteger()
    • isFloat()
    • isBoolean()
    • isArray()
    • isString()
    • isDateTime()
    • notEmpty()

AfrEnv

// GENERAL
$oEnv = AfrEnv::getInstance()->setWorkDir(__DIR__);
$oEnv->readEnv(0); //load env files from __DIR__ without cache
$oEnv->readEnv(60); //cache loaded env file for 60 seconds
$oEnv->setInlineEnvVar('FOO', 'BAR'); //set *[FOO]=BAR

$oEnv->getEnv('APP_ENV'); //get env key
$oEnv->getEnv(); //get all env keys as array

$oEnv->registerEnv($bMutableOverwrite = true, $bRegisterPutEnv = true);
// populate $_SERVER, $_ENV and getenv()
$oEnv->flush(); //total reset for class,cache, except superglobals are stil available
// INCLUDES PHP FILE THAT CONTAINS return array(...);
$oEnv = AfrEnv::getInstance();
$oEnv->readEnvPhpFile(path);
$oEnv->getEnv('FROM_PHP_FILE');
// Validator: REQUIRED or throw error on register or access
$oEnv = AfrEnv::getInstance();
$oEnv->required(['APP_ENV','SECRET']);
$oEnv->required(['NUMBER_INT'])->isInteger();
$oEnv->ifPresent(['NUMBER_FLOAT'])->isFloat();
$oEnv->ifPresent(['SOMENTHING'])->notEmpty();
$oEnv->ifPresent(['SOME_DATE_TIME'])->isDateTime();
$oEnv->unrequire(['NUMBER_INT']);
$oEnv->getEnv('SECRET');
// CUSTOM APP_ENV
$oEnv = AfrEnv::getInstance();
$this->ifPresent(['APP_ENV'])->allowedValues([
  'DEV',
  'PRODUCTION',
  'STAGING',
  'LOCAL',
  'CUSTOM',
]);
$oEnv->setInlineEnvVar('APP_ENV', 'CUSTOM');
echo $oEnv->getEnv('APP_ENV'); //prints CUSTOM
// xet : set / get
$oEnv = AfrEnv::getInstance();
$oEnv->xetAfrEnvParser(AfrEnvParserInterface $oEnvParser = null): AfrEnvParserInterface
$oEnv->xetAfrEnvValidator(AfrEnvValidatorInterface $oValidator = null): AfrEnvValidatorInterface
$oEnv->xetFileList(AfrDirTraversingFileListInterface $oFileList = null): AfrDirTraversingFileListInterface
$oEnv->xetOverWrite(AfrOverWriteInterface $oOverWrite = null): AfrOverWriteInterface
$oEnv->xetExportArray(AfrArrExportArrayAsStringInterface $oExportArray = null): AfrArrExportArrayAsStringInterface