monospice / spicy-identifier-tools
一个解析、转换和格式化标识符名称的简单方法。
Requires
- php: >=5.4.0
Requires (Dev)
- phpspec/phpspec: ~2.2
- phpunit/phpunit: ~4.7
This package is auto-updated.
Last update: 2024-09-21 20:15:42 UTC
README
一个解析、转换和格式化标识符名称的简单方法。
这些工具在处理动态标识符名称(如动态方法)或在不同编程语言之间工作时非常有用。
简单示例
$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_CASE
或CAMEL_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文件。