sbwerewolf / language-specific
用于使用PHP特定功能的库
8.0.1
2024-06-15 09:59 UTC
Requires
- php: >=8.0
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-15 10:53:31 UTC
README
composer require sbwerewolf/language-specific ^7.2
特性
ArrayHandler和ValueHandler旨在实现 安全访问 数组元素以及使用元素值的 类型安全
使用ArrayHandler类,您不需要使用
array_key_exists() intval() boolval() floatval() and others
使用ValueHandler类,您可以获得所需的确切类型。
使用场景
获取具有正确类型的数据库响应
use LanguageSpecific\ArrayHandler; $connection = new PDO ($dsn,$login,$password); $command = $connection-> prepare('select name,salary from employee' . ' ORDER BY salary DESC LIMIT 1'); $command->execute(); $data = $command->fetch(PDO::FETCH_ASSOC); /* $data = array ( 'name' => 'Mike', 'salary'=> 19999.99 ); */ $employee = new ArrayHandler($data); echo "The highest paid employee is {$employee->get('name')->str()}" . ", with salary of {$employee->get('salary')->int()}$"; /* The highest paid employee is Mike, with salary of 19999$ */
版本7.2的库方法
raw() - 返回原始数组
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler( [0 => 'first', 'index' => 20, 3 => 'last',]); $original = $data->raw(); var_export($original); /* array ( 0 => 'first', 'index' => 20, 3 => 'last', ) */
has($key = null) - 标志表示数组具有索引(键)
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler([0=>1]); $data->has(); // true // array has at least one index (element) $data = new ArrayHandler([0=>1]); $data->has(0); // true // array has index 0 $data = new ArrayHandler([2=>3]); $data->has('4'); // false // array not has index '4'
get($key = null) - 通过索引或没有索引获取元素
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler( [0 => 'first', 'index' => 20, 3 => 'last',]); $data->get()->asIs(); /* 'first' */ $data->get()->has(); /* true */ $data->get('no-exists')->asIs(); /* NULL */ $data->get('no-exists')->has(); /* false */ $data->get('index')->asIs(); /* 20 */ $data->get('index')->has(); /* true */ $data->get(99)->asIs(); /* NULL */ $data->get(99)->has(); /* false */ $data->get(3)->asIs(); /* 'last' */ $data->get(3)->has(); /* true */
isUndefined() - 标志表示示例值未定义
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler(['first' => ['A' => 1], 'next' => ['B'=>2], 'last' => ['C'=>3],]); $data->pull('first')->isUndefined(); // false $data->pull('begin')->isUndefined(); // true
pull($key = null) - 获取嵌套数组的数组处理程序
use LanguageSpecific\ArrayHandler; $level4 = [-4 => ['over' => ['and' => ['over' => ['again' => ['for always']]]]]]; $level3 = [-3 => $level4, 'some' => 'other',]; $level2 = [-2 => $level3]; $level1 = [-1 => $level2, 'other' => ['content'], 'any']; $level0 = [$level1]; $data = new ArrayHandler($level0); $data->pull(0)->pull(-1)->pull(-2) ->pull(-3)->pull(-4)->pull('over') ->pull('and')->pull('over')->pull('again') ->isUndefined(); // false $data->pull(0)->pull(-1)->pull(-2) ->pull(-3)->pull(-4)->pull('over') ->pull('and')->pull('over')->pull('again') ->get()->str(); // 'for always' $data->pull(0)->pull(-1)->pull(-2) ->pull(-3)->pull(-4 )->pull(-5)->isUndefined(); // true
pulling() - 遍历数组并获取每个元素的处理器
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler([['first', 'next', 'last',], ['A','B','C',], ['1','2','3',]]); foreach ($data->pulling() as $next) { /* @var $next ArrayHandler */ echo PHP_EOL. var_export($next->raw()); } /* array ( 0 => 'first', 1 => 'next', 2 => 'last', ) array ( 0 => 'A', 1 => 'B', 2 => 'C', ) array ( 0 => '1', 1 => '2', 2 => '3', ) */
asIs() - 获取原始值
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler('1.1'); $data->get()->asIs(); // '1.1'
int() - 转换为整数
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler('1.1'); $data->get()->int(); // 1
double() - 转换为双精度浮点数
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler('1.1'); $data->get()->double(); // 1.1
str() - 转换为字符串
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler('1.1'); $data->get()->str(); // '1.1'
bool() - 转换为布尔值
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler('1.1'); $data->get()->bool(); // true
array() - 转换为数组
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler([1.1]); $data->get()->array(); // [1.1]
object() - 转换为对象
use LanguageSpecific\ArrayHandler; use LanguageSpecific\ValueHandler; $data = new ArrayHandler(new ValueHandler()); $value = $data->get()->object(); var_export($value,true); /* LanguageSpecific\ValueHandler::__set_state(array( '_value' => NULL, '_has' => true, '_default' => NULL, )) */
has() - 标志表示元素的值在示例构造时已定义
use LanguageSpecific\ArrayHandler; $data = new ArrayHandler([0=>1]); $data->get(0)->has(); // true // array element with index 0 has value $data = new ArrayHandler([2=>3]); $data->get('4')->has(); // false // array element with index '4' not has value
type() - 获取值的类型
use LanguageSpecific\ValueHandler; (new ValueHandler(null))->type(); // `NULL` (new ValueHandler(false))->type(); // `boolean` (new ValueHandler(0))->type(); // `integer` (new ValueHandler(0.0))->type(); // `double` (new ValueHandler('a'))->type(); // `string` (new ValueHandler([]))->type(); // `array` (new ValueHandler(new ValueHandler()))->type(); // `object`
asUndefined() - 值处理程序具有未定义的值
use LanguageSpecific\ValueHandler; $value = ValueHandler::asUndefined(); var_export($value,true); /* LanguageSpecific\ValueHandler::__set_state(array( '_value' => NULL, '_has' => false, '_default' => NULL, )) */
default($value = null) - 定义将用于未定义值的默认值
use LanguageSpecific\ValueHandler; ValueHandler::asUndefined()->default('default')->str(); // 'default' (new ValueHandler('string'))->default('default')->str(); // 'string'
详细信息
参考
以了解类方法的详细示例
单元测试
composer test
联系方式
Вольхин Николай
e-mail ulfnew@gmail.com
phone +7-902-272-65-35
Telegram @sbwerewolf