ISBN 工具

0.4.33 2024-09-19 22:39 UTC

README

此库提供了验证、格式化和转换ISBN号码的功能,该功能支持nicebooks.com网站。它遵循MIT开源许可协议,任何人都可以使用。

ISBN格式遵循ISBN国际发布的ISBN范围文件中定义的规则。

Build Status Coverage Status Latest Stable Version Total Downloads License

安装

此库可通过Composer安装

composer require nicebooks/isbn

要求

此库当前版本需要PHP 8.1或更高版本。

您可以使用较旧的PHP版本使用较早版本的,但只有使用最新版本,您才能接收到ISBN范围更新。

项目状态及发布流程

虽然此库仍在开发中,但它经过了充分的测试,应该足够稳定,可以在生产环境中使用。它目前正在nicebooks.com的生产环境中使用。

当前发布版本编号为0.x.y。当引入非破坏性变更(更新ISBN范围、添加新方法、优化现有代码等)时,y会递增。

当引入破坏性变更时,将始终开始一个新的0.x版本周期。

因此,将您的项目锁定到给定的发布周期,例如0.4.*是安全的。

如果您需要升级到较新的发布周期,请查看发布历史,以获取每个进一步的0.x.0版本引入的变更列表。

概览

IsbnTools

此类包含处理ISBN号码的所有工具,作为普通字符串。

use Nicebooks\Isbn\IsbnTools;
$tools = new IsbnTools();

其构造函数提供两个可配置参数

public function __construct(bool $cleanupBeforeValidate = true, bool $validateCheckDigit = true)
  • $cleanupBeforeValidate在验证之前从字符串中删除任何非字母数字的ASCII字符。
  • $validateCheckDigit在执行任何操作之前计算ISBN号码的校验和。

方法摘要

  • isValidIsbn(string $isbn) : bool检查给定的ISBN是否有效。

    var_export($tools->isValidIsbn('123456789X')); // true
    var_export($tools->isValidIsbn('9781234567897')); // true
  • isValidIsbn10(string $isbn) : bool检查给定的ISBN是否是有效的ISBN-10。

    var_export($tools->isValidIsbn10('123456789X')); // true
  • isValidIsbn13(string $isbn) : bool检查给定的ISBN是否是有效的ISBN-13。

    var_export($tools->isValidIsbn13('9781234567897')); // true
  • convertIsbn10to13(string $isbn) : string将给定的ISBN-10转换为ISBN-13。

    var_export($tools->convertIsbn10to13('123456789X')); // '9781234567897'
  • convertIsbn13to10(string $isbn) : string将给定的ISBN-13转换为ISBN-10。

    var_export($tools->convertIsbn13to10('9781234567897')); // '123456789X'
  • format(string $isbn) : string通过在适当的位置添加连字符来格式化给定的ISBN。

    var_export($formatter->format('123456789X')); // '1-234-56789-X'
    var_export($formatter->format('9781234567897')); // '978-1-234-56789-7'

Isbn

Isbn类是一个抽象的、不可变的类,表示有效的ISBN-10或ISBN-13。它是访问由IsbnTools提供的功能的另一种方式,并提供了一种方便的方式来传递ISBN号码,保证其有效性和完整性。

Isbn有两个子类:Isbn10Isbn13,允许您的应用程序在某些情况下只期望ISBN-10或ISBN-13时进行更窄的类型化。

使用of()工厂方法获得Isbn实例

use Nicebooks\Isbn\Isbn;

$isbn = Isbn::of('123456789X'); // will return an instance of Isbn10
$isbn = Isbn::of('9781234567897'); // will return an instance of Isbn13

您还可以使用Isbn10::of()Isbn13::of()工厂方法

Isbn10::of('123456789X'); // equivalent to Isbn::of('123456789X')->to10();
Isbn13::of('9781234567897'); // equivalent to Isbn::of('9781234567897')->to13();

方法摘要

  • is10(): bool对于ISBN-10返回true,对于ISBN-13返回false
  • is13(): bool对于ISBN-13返回true,对于ISBN-10返回false
  • isConvertibleTo10(): bool 如果ISBN可以转换为ISBN-10,则返回true,否则返回false
  • to10(): Isbn10 将ISBN转换为ISBN-10,或抛出IsbnNotConvertibleException异常。
  • to13(): Isbn13 将ISBN转换为ISBN-13。
  • format(): string 返回ISBN的格式化表示。

异常

异常位于Nicebooks\Isbn\Exception命名空间。

  • InvalidIsbnException在检测到无效ISBN时抛出。
  • IsbnNotConvertibleException在尝试将不以978开头的ISBN-13转换为ISBN-10时抛出。