spoova/enlist

用于重命名多个文件的PHP包

v2.5.0 2023-07-08 07:36 UTC

This package is auto-updated.

Last update: 2024-09-08 10:18:51 UTC


README

这是一个spoova框架包,用于列出或重命名目录中的文件。它可以用于重命名文件名和文件扩展名。虽然重命名文件扩展名可能会破坏文件的函数,但某些特定的文件扩展名可以很容易地修改。应避免重命名容易破坏的文件扩展名。大多数时候,这个类可以用来更改图像文件或与文本相关的文件的扩展名。尽管一些文件扩展名可以很容易地修改,但它并不作为此类文件的转换器。在需要转换器的情况下,应使用转换器工具。

包含Enlist类

在终端中运行以下命令以要求该包

composer require spoova/enlist

初始化Enlist类

在您的示例PHP文件中包含vendor/autoload.php文件并导入Enlist类

<?php

include_once "vendor/autoload.php";

use Spoova\Enlist\Enlist;

$Enlist = new Enlist;

设置文件目录

为了使用Enlist包,必须首先指定源目录

$Enlist->source(__DIR__.'/images');

检查文件目录是否有效

我们可以通过sourceValid()方法检查提供的源目录是否有效

$Enlist->source(__DIR__.'/images');

if($Enlist->sourceValid()) {

  echo "directory is valid";

} else {

  echo "invalid source directory supplied";

}

列出目录中的文件

以下代码将列出目录中所有文件,但不包括隐藏文件

$Enlist->source(__DIR__.'/images');

if( $Enlist->sourceValid() ) {
    
    $files = $Enlist->dirFiles(); // or $Enlist->dirFiles('*')
    
    var_dump($files);

} else { 

     echo "invalid url supplied";

}

列出目录中具有jpg扩展名的文件

以下代码将列出目录中所有具有.jpg文件的文件

$Enlist->source(__DIR__.'/images');

if( $Enlist->sourceValid() ){
    
    $files = $Enlist->dirFiles(['jpg']); // or $Enlist->dirFiles('jpg')
    
    var_dump($files);

} else { 

     echo "invalid url supplied";

}

列出目录中的隐藏文件

以下代码将列出目录中只有扩展名而没有文件名的所有文件

$Enlist->source(__DIR__.'/images');

$files = $Enlist->dirFiles(['.']); // or $Enlist->dirFiles('.')

var_dump($files);

列出目录中只有png扩展名的隐藏文件

以下代码将列出源目录中所有.png文件以及隐藏文件

$Enlist->source(__DIR__.'/images');

$files = $Enlist->dirFiles(['.','png']);
 
var_dump($files); 

列出目录中的所有文件(包括隐藏文件)

以下代码将列出目录中的所有文件,包括隐藏文件

$Enlist->source(__DIR__.'/images');

$files = $Enlist->dirFiles(['.*']); // or $Enlist->dirFiles(['.','*'])
 
var_dump($files);

在目录中重命名文件

将目录中所有文件扩展名重命名为png,但不包括隐藏文件

$Enlist->source(__DIR__.'/images');

$result = $Enlist->rename('png');

var_dump($result);

通过向rename()函数提供第二个参数,也可以获得重命名的结果

$Enlist->source(__DIR__.'/images', "*");

$Enlist->rename('png', $result);
 
var_dump($result);

仅将目录中所有.jpg文件扩展名重命名为png扩展名

$Enlist->source(__DIR__.'/images', 'jpg');

$Enlist->rename('png', $result);

var_dump($result);

仅对目录中所有.jpg文件名进行编号

$Enlist->source(__DIR__.'/images', 'jpg');

$Enlist->reNumber();
$result = $Enlist->rename();
 
var_dump($result);

可以使用startFrom()方法从特定数字开始使用序列号重命名文件

$Enlist->source(__DIR__.'/images', 'jpg');

$Enlist->reNumber()->startFrom(10);
$result = $Enlist->rename();

var_dump($result);

使用prefix()reNumber()方法,可以使用命名前缀对目录中的所有文件名进行编号

$Enlist->source(__DIR__.'/src/images');

$Enlist->prefix('images-');
$Enlist->reNumber();
$Enlist->rename('jpg', $result);
 
var_dump($result);

可以使用reSpace()方法将文件名中的空格替换为其他字符。

$Enlist->source(__DIR__.'/src/images', ['jpg']);

$Enlist->reSpace("_"); //changes all spaces to underscore ( i.e _ )
$Enlist->rename('jpg', $result);

var_dump($result);

可以将智能URL格式应用于文件名。这将从文件名中删除特殊字符

$Enlist->source(__DIR__.'/src/images', ['jpg']);

$Enlist->reSpace("_"); //changes all spaces to underscore ( i.e _ )
$Enlist->rename('jpg', $result);

var_dump($result);

可以使用view()方法防止rename()主动重命名文件。如果没有错误发生,则仅将预期输出结果作为数组列表显示

$Enlist->source(__DIR__.'/src/images');

$Enlist->view();
$Enlist->prefix('images-');
$Enlist->reNumber();
$Enlist->rename('jpg', $result);

var_dump($result);

获取数据

可以使用data()方法在使用任何dirFiles()rename()reverse()方法时获取结果数据。

```php 
$Enlist->source(__DIR__.'/src/images')->view();

$Enlist->dirFiles();
$Enlist->data($dirFiles); //get data returned by dirFiles() method into $dirFiles

$Enlist->rename('jpg');
$Enlist->data($renamed); //get data returned by rename() method into $renamed
```

处理错误

如果未开启调试模式,错误将返回为文本。

$Enlist->source(__DIR__.'/src/images');

$Enlist->view();
$Enlist->prefix('image-');
$result = $Enlist->rename('.');

if($result === false){

    var_dump($Enlist->error());

}

错误也可以在开启调试模式而不抛出错误的情况下获取。为了做到这一点,必须在调用rename()之前开启debug()方法。最后,debugs()方法将返回所有发生错误的回溯。请注意,只有当指定的源url有效时,才会执行rename()dirFiles()方法。

$Enlist->debug(); //turn on debugging without throwing error

$Enlist->source(__DIR__.'/src/images') 
    
$Enlist->view(); 
$Enlist->prefix('image-');
$Enlist->rename('.', $result);
 
if(!$Enlist->debugs()){

    var_dump($result);
    
}else{
        
    var_dump($Enlist->debugs());

}

还可以通过将引用变量传递给debug()方法来获取调试信息。

$Enlist->debug(); //turn on debugging without throwing error 

$Enlist->source(__DIR__.'/src/images');

if( $Enlist->sourceValid() ) {

    $Enlist->view(); 
    $Enlist->prefix('image-');
    $Enlist->rename('.', $results);
    $Enlist->debugs($debugs);
    
    if(!$debugs){
 
      var_dump($results);
 
    } else {
 
      var_dump($debugs);
 
    } 

}

当开启调试模式时,可以启用错误抛出。这可以通过在debug()方法上提供参数"2"来实现。

$Enlist->debug(2); //turn on debugging with ErrorException thrown

$Enlist->source(__DIR__.'/src/images');

$Enlist->view(); 
$Enlist->prefix('image-');
$Enlist->rename('.', $result);

var_dump($result);

关闭调试模式时,调试方法还可以帮助跟踪错误。

$Enlist->debug();
$Enlist->source(__DIR__.'/src/images')->view();

$Enlist->dirFiles();
$Enlist->data($dirFiles); //get data returned by dirFiles() method into $dirFiles

$Enlist->rename('jpg');
$Enlist->data($renamed); //get data returned by rename() method into $renamed

$Enlist->debugs($debugs); //get first error returned into $debugs

var_dump($result);    

与会话一起工作

在文件以不希望的方式重命名或希望恢复到以前的文件名的情况下,enlist只支持在没有覆盖文件的情况下撤销对文件的更改。要恢复到以前的名称,必须使用withSession()方法定义一个活动会话以及一个唯一的键,其中存储最近的更改。如果没有提前开始会话,withSession()方法将启动它自己的新会话。一旦定义了enlist会话名称,就可以应用reverse()方法来撤销更改。

允许Enlist从会话存储中撤销最近更改

$Enlist->source(__DIR__.'/src/images');

if( $Enlist->sourceValid() ) {

    $Enlist->withSession('unique_session_name'); //set a session storage name
    $Enlist->prefix('image-');
    $result = $Enlist->rename('png');
 
    $Enlist->reverse($reversals); //reverse back to previous names
 
    var_dump($reversals);

}

会话名称也可以从会话存储中指定。只有在指定的目录中仍然存在旧文件名时才会进行撤销。此外,当进行撤销操作后,存储的会话url将被清除。

$Enlist->source(__DIR__.'/src/images');

if( $Enlist->sourceValid() ) {

    $Enlist->withSession('my_enlist_session_name'); //set a session storage name
    $Enlist->prefix('image-');
    $result = $Enlist->rename('png');
 
    $Enlist->reverse($reversals, 'my_enlist_session_name'); //reverse back to previous names using specific storage name
 
    var_dump($reversals);

}

字符及其功能

以下列表描述了参数及其功能

  • "." - 所有隐藏文件

  • "*" - 所有文件(除隐藏文件外)

  • ".*" - 所有文件(包括隐藏文件)

  • "jpg" - 所有jpg文件扩展名

  • ['jpg', 'png'] - 所有指定的文件扩展名

最佳实践

在继续重命名项目之前,始终先设置重命名到查看模式,以检查重命名文件列表的最终结果,这样可以避免合并冲突等问题,这些问题可能导致文件丢失。