ryunosuke / functions
PHP 工具函数
Requires
- php: >=8.0
Requires (Dev)
- dev-master
- v2.0.14
- v2.0.13
- v2.0.12
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.6.22
- v1.6.21
- v1.6.20
- v1.6.19
- v1.6.18
- v1.6.17
- v1.6.16
- v1.6.15
- v1.6.14
- v1.6.13
- v1.6.12
- v1.6.11
- v1.6.10
- v1.6.9
- v1.6.8
- v1.6.7
- v1.6.6
- v1.6.5
- v1.6.4
- v1.6.3
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.12
- v1.5.11
- v1.5.10
- v1.5.9
- v1.5.8
- v1.5.7
- v1.5.6
- v1.5.5
- v1.5.4
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.26
- v1.4.25
- v1.4.24
- v1.4.23
- v1.4.22
- v1.4.21
- v1.4.20
- v1.4.19
- v1.4.18
- v1.4.17
- v1.4.16
- v1.4.15
- v1.4.14
- v1.4.13
- v1.4.12
- v1.4.11
- v1.4.10
- v1.4.9
- v1.4.8
- v1.4.7
- v1.4.6
- v1.4.5
- v1.4.4
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.11
- v1.3.10
- v1.3.9
- v1.3.8
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.10
- v1.2.9
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-09-28 12:34:40 UTC
README
安装
{ "require": { "ryunosuke/functions": "dev-master" } }
用法
请参考 https://arima-ryunosuke.github.io/document/php-functions/ 以获取所有参考。更改点请参考 RELEASE.md。
导入
require __DIR__ . '/vendor/autoload.php'; // グローバルへ展開 \ryunosuke\Functions\Transporter::importAsGlobal(); // 名前空間へ展開 \ryunosuke\Functions\Transporter::importAsNamespace();
每个函数前都会执行 assert。具体来说,有以下行为。
- 未定义的
- 已定义且为用户定义的
- 已定义且为内置的则引发致命错误
这是为了满足以下行为。
- 可能部分覆盖
- 通过预先定义,可以在替换时跳过,从而实现替换
- 可能新增加内置函数
- 因为
!function_exists()
会引发错误,所以定义时引发致命错误会更安全
- 因为
导出
如下所示,可以在指定命名空间中输出文件本身。这是主要的使用方法。
require __DIR__ . '/vendor/autoload.php'; // 任意の名前空間へ出力 file_put_contents('path/to/function.php', \ryunosuke\Functions\Transporter::exportNamespace('namespace'));
然后,可以在项目特有的 include.php 等文件中读取输出的文件即可。这种方法的优点是可以更改命名空间,并且可以通过将文件输出到管理下的目录来定制。此外,由于与包的相关性被切断,原则上不会发生冲突。
通过指定第二个参数,则只输出指定的函数及其依赖项。
require __DIR__ . '/vendor/autoload.php'; // 'funcA', 'funcB' だけを出力 file_put_contents('path/to/function.php', \ryunosuke\Functions\Transporter::exportNamespace('namespace', ['funcA', 'funcB']));
此外,通过给第二个参数提供文件名或目录名,可以将它们视为 PHP 文件,并实际输出正在使用的函数。
require __DIR__ . '/vendor/autoload.php'; // /path/to/project 内で使われている関数だけを出力 file_put_contents('path/to/function.php', \ryunosuke\Functions\Transporter::exportNamespace('namespace', '/path/to/project'));
会解决依赖关系,例如,如果 funcA
或 funcB
依赖于 funcC
,则也会输出 funcC
。用途是用于复制一些简短的代码片段(不需要整体代码,只需要特定部分)。
上述内容在 composer.json
的 autoload
中有相应的自动输出命令。
vendor/bin/export-function
# composer exec export-function
但是,大多数是内部用途。
使用 exportClass 可以以单例静态类的方式输出。
require __DIR__ . '/vendor/autoload.php'; // name\space\Utils に単一クラスとして出力 file_put_contents('src/Utils.php', \ryunosuke\Functions\Transporter::exportNamespace('name\\space\\Utils', ['吐き出したい関数など']));
用途是通常的 Utils 静态类。但是,大多数是内部用途。
开发
基本上只接触 src/Package
以下。其他类似文件是自动生成的。
由于相同的函数分散在各个地方,所以无法充分利用 IDE 的跳转功能。在 phpstorm 等中,可以将 'include' 排除。
以下定义了 composer subcommand。
- composer build
- 执行所有 export、test、document。
- composer export
- 从 src/Package 生成自动文件。
- composer test
- 执行 PHPUnit。