ntentan/utils

在ntentan框架中共享的常用工具函数。

v0.13.0 2024-07-13 15:26 UTC

README

Tests Scrutinizer Code Quality Code Coverage Latest Stable Version Total Downloads

这是一个在不同ntentan包之间共享的工具类集合。ntentan/utils目前提供

  • 用于字符串操作的Text类
  • 用于输入过滤的Input类
  • 用于验证输入的Validator类
  • 一系列文件系统工具

安装

您可以通过composer中的ntentan\utils来安装此包。

文本操作

utils包中的文本操作函数提供了屈折词(用于复数或单数文本)和驼峰式转换函数。这些函数主要被用于生成类和方法名称的魔术字符串的组件所消费。所有函数都在ntentan\utils\Text中实现为静态函数。

屈折词函数

以下代码片段展示了Text类中屈折词函数的工作方式。

use ntentan\utils\Text;

print Text::singularize('names'); // Should output name
print Text::pluralize('pot'); // Should output pots

驼峰式操作

以下代码片段展示了Text类中的驼峰式操作函数的工作方式。

use ntentan\utils\Text;

print Text::camelize('home_alone'); // should output homeAlone
print Text::ucamelize('home_alone_again'); // should output HomeAloneAgain
print Text::deCamelize('HomeAloneStill'); // should output home_alone_still

值得注意的是,驼峰式操作函数允许您将第二个参数指定为自己的分隔符。例如

use ntentan\utils\Text;

print Text::camelize('home-alone', '-'); // should output HomeAlone
print Text::deCamelize('HomeAloneAgain', '-'); // should output home-alone-again

文件系统

utils包提供了一组文件操作工具,这些工具围绕PHP内置的文件系统函数提供面向对象接口。通过此包,您可以执行以下操作

  • 创建和删除目录,也可以选择递归删除所有目录内容。
  • 复制和移动文件和目录,也可以选择递归执行这些操作。
  • 从文件中读取和写入。

在提供这些功能的同时,文件系统工具依赖于异常来报告文件系统错误。文件系统工具的函数大多可以通过静态外观ntentan\utils\Filesystem访问,它提供了一个接口,可以通过该接口访问文件系统包的大多数功能。

处理目录

要创建目录...

use ntentan\utils\Filesystem;
Filesystem::directory("/path/to/some/dir")->create();

如果不存在,则创建整个层次结构...

use ntentan\utils\Filesystem;
Filesystem::directory("/path/to/some/dir")->create(true);

类似地,删除目录可以通过...

use ntentan\utils\Filesystem;
Filesystem::directory("/path/to/some/dir")->delete();

请注意,这将删除目录及其子目录的所有内容,包括递归清空。

移动和复制文件和目录

继续一贯的风格,复制目录通过...

use ntentan\utils\Filesystem;
Filesystem::directory("/path/to/some/dir")->moveTo("/path/to/new/dir");

以及复制...

use ntentan\utils\Filesystem;
Filesystem::directory("/path/to/some/dir")->copyTo("/path/to/new/dir");

如果您想使用文件,可以将对Filesystem::directory的调用替换为对Filesystem::file的调用,并按以下方式进行操作...

use ntentan\utils\Filesystem;
Filesystem::file("/path/to/some/file")->moveTo("/path/to/new/file");

检查文件状态和处理错误

在文件系统操作期间发生的错误通过异常报告。异常被赋予了描述性的名称,例如当找不到文件时抛出ntentan\utils\exceptions\FileNotFoundException,当尝试读取没有读取权限的文件时抛出ntentan\utils\exceptions\FileNotReadableException,依此类推。

可以通过静态Filesystem类中的方法显式检查文件权限和状态。这些适当地命名的函数,如Filesystem::checkWriteableFilesystem::checkExists,执行相应的检查,并在检查失败时抛出适当的异常。

验证

您可以使用utils包中的验证例程来验证数组的内容。所有验证都通过Validator类来完成。例如,要检查数组中是否设置了某些必填字段,可以使用

use ntentan\utils\Validator;

$validator = new Validator();
$validator->setRules(['required' => 'name', 'email']);

此验证器现在已配置为检查任何传递的数组中是否有设置nameemail字段。每当我们需要检查一些数据时,我们都可以调用validate方法。

$data = ['name' => 'Kofi', 'email' => 'kofi@example.com'];
$success = $validator->validate($data);

validate方法返回一个布尔值,表示数组根据验证规则的有效性。在我们上面的例子中,$success将是true。如果成功为假,例如,在我们的例子中未提供name键的值,$success将变为false。在这种情况下,要检索验证错误,可以调用验证对象的getInvalidFields()方法。

$data = ['email' => 'kofi@example.com'];
if(!$validator->validate($data)) {
    print_r($validator->getInvalidFields());
}

getInvalidFields方法始终以字段名到错误列表的关联数组的形式返回数据中找到的无效字段。在上面的例子中,执行的结果将如下所示。

Array
(
    [name] => Array
        (
            [0] => The name field is required
        )

)

许可证

版权所有(c)2008-2020 James Ekow Abaka Ainooson

特此授予任何获得本软件和相关文档副本(“软件”)的人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供者提供软件的人这样做,但需遵守以下条件

上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。

本软件按“原样”提供,除非另有规定,不提供任何形式的保证,无论是明示的、暗示的,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论源于合同、侵权或其他原因,源于、源自或与软件或软件的使用或其他方式有关。