phrity/config 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

phrity/config

Composer 安装命令:

composer require phrity/config

包简介

Configuration interface, class, and factories

README 文档

README

Phrity Config

Build Status Coverage Status

Introduction

Tools for handling configuration. Interfaces, implementation class, various readers and a factory.

Installation

Install with Composer;

composer require phrity/config

The ConfigurationInterface interface

The Phrity\Config\ConfigurationInterface extends PSR-11 ContainerInterface and JsonSerializable interfaces.

// ContainerInterface implementation
public function get(string $id): mixed;
public function has(string $id): bool;

// JsonSerializable implementation
public function jsonSerialize(): mixed;

// Additional methods
public function __construct(object|array $config);
public function merge(ConfigurationInterface $config): ConfigurationInterface;

The Configuration class

The Phrity\Config\Configuration class implements the ConfigurationInterface.

use Phrity\Config\Configuration;

// Initiate with object or associative array
$config = new Configuration([
    'a' => 23,
    'b' => [
        'bb' => 66,
    ],
]);

// Check and get (case insensitive) from configuration
$config->has('a'); // => true
$config->get('a'); // => 23

// Trying to get non-exising configuration will throw exception
$config->has('c'); // => false
$config->get('c'); // throws NotFoundException

Accessing by path

// It is possible to access by path
$config->has('b/bb'); // => true
$config->get('b/bb'); // => 66

Specifying default

// If default is specified, non-exising configuration will return that value instead of throwing exception
$config->get('a', default: 99); // => 23
$config->get('c', default: 99); // => 99

Type coercion

// Some types can be coerced into another type
$config->get('a', coerce: 'string'); // => "23"

See Transformers for coerscion options. Any coercion not specified will cause a CoercionException.

Merging configurations

// Configurations can be merged (immutable, new instance will be returned)
$additional = new Configuration(['c' => 12, 'b' => ['bc' => 13]]);
$merged = $config->merge($additional);

The Reader classes

A number of configuration readers are available.

The ConfigurationFactory class

The Phrity\Config\ConfigurationFactory provides shortcuts to create and merge configurations.

$factory = new Phrity\Config\ConfigurationFactory();

$configData = $factory->fromData(data: ['a' => 23]);
$configJson = $factory->fromJson(json: '{"a": 23}');
$configJsonFile = $factory->fromJsonFile(path: 'path/to/config.json');
$configYaml = $factory->fromYaml(yaml: 'n: 23');
$configYamlFile = $factory->fromYamlFile(path: 'path/to/config.yaml');
$configNeon = $factory->fromNeon(neon: 'n: 23');
$configNeonFile = $factory->fromNeonFile(path: 'path/to/config.neon');
$configEnv = $factory->fromEnv();
$configEnvFile = $factory->fromEnvFile('.env');

$configMerged = $factory->merge(
    $configData,
    $configJson,
    $configJsonFile,
    $configYaml,
    $configYamlFile,
    $configNeon,
    $configNeonFile,
    $configEnv,
    $configEnvFile,
);

Versions

Version PHP
1.5 ^8.1 Readers (neon, neon-file), improved transformer
1.4 ^8.1 Transfomers
1.3 ^8.1 Coerce option
1.2 ^8.1 Reader (data), all file-readers get optional option
1.1 ^8.1 Readers (yaml, env-file)
1.0 ^8.1 Interface, implementation, readers (json, json-file, yaml-file, env), factory

phrity/config 适用场景与选型建议

phrity/config 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.4k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2024 年 04 月 04 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「yaml」 「json」 「configuration」 「config」 「neon」 「env」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 phrity/config 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 phrity/config 我们能提供哪些服务?
定制开发 / 二次开发

基于 phrity/config 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 3.4k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 11
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-04-04