davidjeddy/normie

尝试规范PHP标准库的数组和字符串函数参数顺序。

7.4.0 2020-01-16 22:03 UTC

README

徽章

Build Status License codecov

Latest Stable Version Latest Unstable Version composer.lock

Scrutinizer Code Quality Build Status Code Coverage Code Intelligence Status

Monthly Downloads Daily Downloads Total Downloads

贡献者

描述

Normie(简称为Normalizer)通过实现norm_{函数名}()包装函数声明,试图使使用PHP标准库(SPL)函数调用更加一致。这个库绝对不会以任何方式覆盖SPL函数。

示例

函数参数顺序示例。

数组函数

Normie数组函数遵循“数组合并源X,操作符Y(回调,键,针等),其他参数为Z”的思想。完整的数组函数列表可以在这里查看。

SPL: array array_map ( callable $callback, array $arr1, array $_ = null) { }

Normie: array norm_array_map( array $array, callable $callback, array $userdata = null): array

字符串函数

Normie字符串函数遵循“搜索X字符串或Y目标,替换为Z字符串”的思想。完整的字符串函数列表可以在这里查看。

SPL: array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ] )

Normie: array explode ( string $string , string $delimiter [, int $limit = PHP_INT_MAX ] )

安装

通过Composer

php composer.phar require davidjeddy/Normie

库开发设置

# Download repo and runtime environment
git clone https://github.com/davidjeddy/normie.git
cd ./normie
docker pull php:7.4.0-cli
docker run -d --rm --name php7_4 -v $(pwd):/normie php:7.4.0-cli tail -f /dev/null

# Tools to make composer work a bit easier
apt-get update -y
apt-get install -y git zip unzip 

# Run a PHP environment
docker exec -it php7_4 bash

# Install deps
cd /normie
php composer.phar self-update
php composer.phar install --dev -vvv -o # OR php composer.phar update -vvv -o

测试/质量/报告工具

质量

php-cs-fixer
./vendor/bin/php-cs-fixer fix ./src
phpmnd
./vendor/bin/phpmnd ./src/ --progress
phpstan
./vendor/bin/phpstan analyse ./src --level 7
phploc
./vendor/bin/phploc ./src --count-tests
phpcpd
./vendor/bin/phpcpd ./src
dephpend
./vendor/bin/dephpend metrics ./src
churn
./vendor/bin/churn run src
phpcf
./vendor/bin/phpcf ./src
Roave no leaks
vendor/bin/roave-no-leaks ./tests

报告

phpcs
./vendor/bin/phpcs -p ./src/ --colors --report=source --report-file=./reports/phpcs.txt
phpmd
./vendor/bin/phpmd ./src html codesize,unusedcode,naming --reportfile ./reports/phpmd.html
phpmetrics
./vendor/bin/phpmetrics --report-html=./reports ./src/

测试

phpunit

无xDebug

./vendor/bin/phpunit --bootstrap vendor/autoload.php ./tests

有xDebug

php ./vendor/bin/phpunit ./tests --coverage-clover './reports/clover.xml'

使用方法

使用非常简单!将命名空间声明添加到您的逻辑中,然后您想使用已知函数的规范化版本时,只需在前面添加norm_即可。现在所有数组和字符串函数的参数都是可预测的顺序!

<?php

namespace Your\Class\Name;

...
use Normie\Array;
use Normie\String;
...

// some code for your application

...
    $results = norm_stristr($heystack, $key);
...

xDebug

对于某些报告/QA,需要xDebug。为此,请执行以下操作:

docker run -it --rm --name normie -v "$PWD":/app php:7.4.0-jessie bash
pecl install xdebugphp
echo "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so" >> /usr/local/etc/php/conf.d/xdebug.ini