zvermafia / transliteration
乌兹别克拉丁文 <=> 西里尔文转写器
v0.1.0
2020-02-17 19:44 UTC
Requires
- php: >=7.1.3
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-26 02:13:57 UTC
README
乌兹别克拉丁文 <=> 西里尔文转写器。在内部,它使用一些在线转写服务。但它可扩展!
按部分导航
安装
通过 Composer
$ composer require zvermafia/uzbek-transliterator
用法
默认情况下,有两个实现供您选择
Zvermafia\Transliteration\AlifTransliterator使用 alif.uz 在线转写服务的 API;Zvermafia\Transliteration\LotinTransliterator使用 lotin.uz 在线转写服务的 API;
您还可以实现自己的类,该类将使用另一个服务的 API 或不使用任何服务的 API,并自行完成所有工作。
require __DIR__ . "/vendor/autoload.php"; // Initialize the object $transliterator = new Zvermafia\Transliteration\AlifTransliterator(); // or you can use LotinTransliterator $transliterator->setText("Salom, dunyo!") ->toCyrillic() ->translit(); echo $transliterator->getResult(); // it will output: Салом, дунё!
创建自己的实现(扩展)
如果这两个现有的实现还不够,那么您可以通过实现自己的转写类来扩展该包的功能。如果是这样,有三种可能的方式
- 通过实现一个
Zvermafia\Transliteration\Interfaces\TransliteratorInterface接口来创建一个类。在这种情况下,您必须从头开始自己实现接口中定义的所有方法; - 这是推荐的方式(如果您不打算使用带有 HTTP 的第三方 API)。通过扩展
Zvermafia\Transliteration\Abstracts\TransliteratorAbstract抽象类来创建一个类。在这种情况下,您必须实现那些尚未由抽象类实现的方法。抽象类已经实现了接口的公共方法; - 这与前一种方法类似。因为在这种情况下,您将使用一个扩展了
Zvermafia\Transliteration\Abstracts\TransliteratorAbstract的Zvermafia\Transliteration\Abstracts\HttpTransliteratorAbstract抽象类。但区别是什么?区别在于这个抽象类实现了通过 cURL 扩展与 HTTP 一起工作的公共方法。所以您只需配置一些特定的 HTTP 请求参数来与 API 一起工作。
以下是一些示例。
第1点的示例
<?php namespace Whatever\Namespace; use Zvermafia\Transliteration\Interfaces\TransliteratorInterface; // point #1 class MyTransliterator implements TransliteratorInterface { // realize all the methods defined in the interface ( }
第2点的示例
<?php namespace Whatever\Namespace; use Zvermafia\Transliteration\Abstracts\TransliteratorAbstract; use Zvermafia\Transliteration\Interfaces\TransliteratorInterface; // point #1 class MyTransliterator extends TransliteratorAbstract { public function translit(): : TransliteratorInterface { $text = $this->getText(); // $result = ... // here translit the text $this->setResult($result); return $this; } }
第3点的示例
作为此点的示例,您可以查看 Zvermafia\Transliteration\AlifTransliterator 和 Zvermafia\Transliteration\LotinTransliterator 的源代码。
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
测试
$ composer test
贡献
请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT 了解详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 mohirjon@gmail.com 报告,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。