承接 ayesh/case-insensitive-array 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

ayesh/case-insensitive-array

Composer 安装命令:

composer require ayesh/case-insensitive-array

包简介

Class to store and access data in a case-insensitive fashion, while maintaining the integrity and functionality of a regular array.

README 文档

README

Latest Stable Version GitHub license CI codecov SensioLabsInsight PHP versions

Synopsis

A class implementing ArrayAccess, Countable, and Iterator interfaces, and allows you to set, get, count, iterate, and validate while enforcing the keys to be case insensitive.

For example, suppose you have to store a set of HTTP headers. By definition, HTTP headers are case insensitive. With this class, you can peacefully set the same array key-pair combination any number as you feel fit, but the data set will remain consistent.

$array = new Ayesh\CaseInsensitiveArray\Strict();
$array['x-frame-options'] = 'DENY';
$array['X-FRAME-options'] = 'SAMEORIGIN';
echo $array['X-Frame-Options']; // 'SAMEORIGIN'

From the example above, notice how the array values are set two times with two keys with different case. In the echo line, the value is accessed in CamelCase, but you get the same value regardless of your querying keys case.

Prerequisites

  • PHP 7.3 or later. For older PHP versions, use please use the 1.1.x or 1.0.x versions.

Installing

The simplest way would be to install using composer.

composer require ayesh/case-insensitive-array

If, for some reason, you can't use Composer, or don't want to (Come on!), you can integrate the class with your current PSR-4 autoloader by mapping Ayesh\CaseInsensitiveArray namespace to the repository's src folder.

Usage

This class aims to take away the fact that you are using an object. Simply use it as an array.

Initialize with an array

This is optional, but if you already have an array that you need to "import", instantiate the class with that array.

$source = [
  'x-frame-options' => 'Deny',
  'X-FRAME-OPTIONS' => 'SAMEORIGIN'
];

$array = new Ayesh\CaseInsensitiveArray\Strict($source);
// Your initial array is now indexed. That was optional. You can now set/get values freely, as you would do with a regular array.
echo $array['X-Frame-OPTIONS']; // 'SAMEORIGIN'
echo $array['X-FRAME-opTIONS']; // 'SAMEORIGIN'
unset($array['x-frame-options']);
var_dump(isset($array['X-Frame-Options'])); // false

Iterate

You can iterate the array object using foreach(). The exact key and value will be returned.

$array = new Ayesh\CaseInsensitiveArray\Strict($source);
$array['x-frame-options'] = 'SameOrigin';
$array['X-Frame-Options'] = 'Deny'; // Notice the Came Case here.
$array['Strict-Transport-Security'] = 'max-age=31536000; includeSubDomains; preload';
foreach ($array as $key => $value) {
  echo "{$key}: {$value}\r\n";
}
// Output (notice how the case is preserved in X-Frame-Options):
// X-Frame-Options: Deny
// Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

You can also iterate the array with the same Iterator methods. For a near-perfect array imitation, what we need is ArrayIterator. However, it is not implemented in the current version. I would gladly work with you if you'd like to help. As of now, my scope is to have 2 classes, Strict and Union that gives basic array access, and foreach() compatibility.

Development and tests

All issues are PRs are welcome. Travis CI and PHPUnit tests are included. If you are adding new features, please make sure to add the test coverage.

Credits

By Ayesh Karunaratne.

统计信息

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

GitHub 信息

  • Stars: 10
  • Watchers: 1
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-11-23

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固