jstewmc / encode-file
编码文件。
v0.2.0
2016-09-01 03:40 UTC
Requires
- php: ^7.0
- jstewmc/read-file: ^0.1
- jstewmc/write-file: ^0.1
Requires (Dev)
- jstewmc/test-case: ^1.0
- mikey179/vfsstream: ^1.6
This package is auto-updated.
Last update: 2024-08-29 04:01:12 UTC
README
编码文件。
use Jstewmc\EncodeFile\Encode; // set the filename $filename = '/path/to/foo.txt'; // create an ASCII encoded string $contents = mb_convert_encoding('foo', 'ASCII'); // put the contents into the file file_put_contents($filename, $contents); // is the file UTF-32 encoded? mb_check_encoding(file_get_contents($filename), 'UTF-32'); // returns false // create the service // keep in mind, you'll need to implement the Read and Write interfaces // $service = new Encode(new Read(), new Write()); // convert the file to UTF-32 $service($filename, 'UTF-32'); // is the file UTF-32 encoded? mb_check_encoding(file_get_contents($filename), 'UTF-32'); // returns true
PHP 扩展
此库需要 PHP 的非默认 mbstring
扩展。如果服务实例化时未加载 mbstring
扩展,将抛出 BadMethodCallException
异常。
依赖项
此库依赖于(并提供)两个接口,用于 读取文件服务 和 写入文件服务。前者必须实现 __invoke(string $filename): string
方法,后者必须实现 __invoke(string $filename, string $contents): int
方法。
可以由 jstewmc/read-file 和 jstewmc/write-file 库实现 读取文件 和 写入文件 接口。例如,在您的应用程序中,扩展 Jstewmc\ReadFile\Read
并实现 Jstewmc\EncodeFile\Read
namespace My\App; use Jstewmc\EncodeFile\Read as ReadInterface; use Jstewmc\ReadFile\Read as ReadParent; class Read extends ReadParent implements ReadInterface { // nothing yet }
从编码
请注意,检测字符串的字符编码很困难。即使是 PHP 的 mb_detect_encoding()
函数也不是完美的。例如,mb_detect_encoding()
几乎永远不会检测到 Windows-1252 编码,即使字符串实际上是以 Windows-1252 编码的(有关详细信息,请参阅 Bug #64667)。
为了防止错误地检测文件的 from 编码,您可以将它包含为服务的第三个参数。如果没有提供“from”编码,库将尝试检测它。
use Jstewmc\EncodeFile\Encode; $service = new Encode(new Read(), new Write()); // encode file as UTF-8 from Windows-1252 $service('/path/to/file.txt', 'UTF-8', 'Windows-1252');
作者
许可证
版本
0.3.0,2016年9月6日
- 添加
Read
和Write
接口。 - 删除对 jstewmc/read-file 和 jstewmc/write-file 的依赖。
0.2.0,2016年8月31日
- 将存储库重命名为
encode-file
。 - 重构库以使用 jstewmc/read-file 和 jstewmc/write-file
0.1.0,2016年8月27日
- 首次发布