monospice/spicy-identifier-tools

一个解析、转换和格式化标识符名称的简单方法。

1.0.3 2015-11-04 19:00 UTC

This package is auto-updated.

Last update: 2024-09-21 20:15:42 UTC


README

Build Status

一个解析、转换和格式化标识符名称的简单方法。

这些工具在处理动态标识符名称(如动态方法)或在不同编程语言之间工作时非常有用。

简单示例

$identifierParts = Parser::parseFromUnderscore('an_identifier_name');
// returns array('an', 'identifier', 'name');

echo Formatter::formatCamelCase($identifierParts);
// 'anIdentifierName'

或者,只需

echo Converter::convert(
    'an_identifier_name',
    CaseFormat::UNDERSCORE,
    CaseFormat::CAMEL_CASE
);
// 'anIdentifierName'

安装

$ composer require monospice/spicy-identifier-tools

如果您正在自动加载类(希望如此)

use Monospice\SpicyIdentifiers\Tools\CaseFormat;
use Monospice\SpicyIdentifiers\Tools\Parser;
use Monospice\SpicyIdentifiers\Tools\Formatter;
use Monospice\SpicyIdentifiers\Tools\Converter;

基本用法

该软件包包含三个工具

  • 解析器:将标识符字符串转换为部分数组
  • 格式化器:将标识符部分数组转换为格式化字符串
  • 转换器:一步解析并格式化标识符字符串

解析器

Parser::parseFromCamelCase('anIdentifier');     // array('an', 'Identifier');
Parser::parseFromUnderscore('an_identifier');   // array('an', 'identifier');
Parser::parseFromHyphen('an-identifier');       // array('an', 'identifier');

// or use the generic method:
Parser::parse('anIdentifier', CaseFormat::CAMEL_CASE);
// array('an', 'Identifier');

注意:尽管PHP不支持在标识符名称中使用连字符,但在与其他支持连字符的语言(如HTML/CSS或Lisp)交互时,连字符方法可能很有用。

格式化器

$parts = array('an', 'identifier');

Formatter::formatUppercase($parts);         // 'ANIDENTIFIER'
Formatter::formatLowercase($parts);         // 'anidentifier'
Formatter::formatCamelCase($parts);         // 'anIdentifier'
Formatter::formatUpperCamelCase($parts);    // 'AnIdentifier'
Formatter::formatUnderscore($parts);        // 'an_identifier'
Formatter::formatUpperUnderscore($parts);   // 'An_Identifier'
Formatter::formatCapsUnderscore($parts);    // 'AN_IDENTIFIER'
Formatter::formatHyphen($parts);            // 'an-identifier'
Formatter::formatUpperHyphen($parts);       // 'An-Identifier'
Formatter::formatCapsHyphen($parts);        // 'AN-IDENTIFIER'

// or use the generic method:
Formatter::format($parts, CaseFormat::CAPS_UNDERSCORE); // AN_IDENTIFIER

转换器

目前,转换器类只提供一种通用方法

// Converter::convert($partsArray, $inputFormat, $outputFormat);

Converter::convert(
    'anIdentifierName',
    CaseFormat::CAMEL_CASE,
    CaseFormat::UPPER_CAMEL_CASE
);
// 'AnIdentifierName'

大小写格式

CaseFormat类包含表示每种情况的常量。

该软件包支持以下标识符的“情况”

注意:因为解析器类不执行格式化,当使用::parse()方法时,必须选择一个“基础”情况进行解析,例如CAMEL_CASE,而不是UPPER_CAMEL_CASECAMEL_CASE_WITH_ACRONYMS

标识符名称中的缩写

有时标识符名称包含缩写,例如JavaScript的XMLHttpRequest解析器类会保留这些缩写

$parts = Parser::parseFromCamelCase('XMLHttpRequest');
// array('XML', 'Http', 'Request');

但是,除非选择带有缩写的输出格式,否则格式化器转换器类不会保留这些缩写

Formatter::formatCamelCase($parts);             // 'xmlHttpRequest'
Formatter::formatCamelCaseWithAcronyms($parts); // 'XMLHttpRequest'

这种行为在转换或规范化标识符名称时提供了灵活性。

混合大小写的标识符

虽然在实际中不建议使用混合大小写的标识符,但可以使用解析器解析包含多个情况的标识符

// Parser::parseFromMixedCase($identiferString, $arrayOfCases);

Parser::parseFromMixedCase('aMixed_case-identifier', [
    CaseFormat::CAMEL_CASE,
    CaseFormat::UNDERSCORE,
    CaseFormat::HYPHEN,
]);
// array('a', 'Mixed', 'case', 'identifier');

该软件包不支持以混合格式输出标识符。

扩展ASCII标识符(实验性)

PHP支持在标识符名称中使用扩展ASCII字符。例如,字符ä

// From the php.net manual:
$täyte = 'mansikka';    // valid; 'ä' is (Extended) ASCII 228.

当通过下划线或连字符解析标识符时,这些字符没有影响。然而,驼峰式标识符可能包括由扩展ASCII字符分隔的单词,如änÏdentifierNáme

Spicy Identifier Tools软件包提供了一个实验性方法来解析这些标识符

Parser::parseFromCamelCaseExtended('änÏdentifierNáme');
// array('än', 'Ïdentifier', 'Náme');

此方法的一致性取决于源文件的字符编码以及环境语言和编码设置。作为最佳实践,应避免在标识符名称中使用扩展ASCII字符。

有关更多信息,请访问PHP手册:https://php.ac.cn/manual/en/language.variables.basics.php

测试

Spicy Identifier Tools软件包使用PHPUnit测试输入变异,并使用PHPSpec测试对象行为。

$ phpunit
$ vendor/bin/phpspec run

许可证

MIT许可证(MIT)。有关更多信息,请参阅LICENSE文件