tekintian/pinyin_utils

汉字转拼音工具,支持自定义转换方式[全拼,首字母,第一个字母],支持自定义拼音字典,目前提供2个拼音字典,精简版共收录9千多常用汉字,完整版共收录20902个基本汉字+5059生僻字。

2.0 2019-01-23 16:23 UTC

This package is auto-updated.

Last update: 2024-09-24 05:25:59 UTC


README

目前最全面的汉字词典

包含20902个基本汉字+5059生僻字

使用方法

  1. 载入本工具类
composer require tekintian/pinyin_utils
  1. 使用本工具
<?php

// 载入自动加载: 如果使用框架的话这个步骤可以忽略。
require_once __DIR__ . '/vendor/autoload.php';

use \tekintian\pinyin_utils\Pinyin;

// 拼音转换测试
$py = Pinyin::convert("云南网");

echo $py;

源代码

如何以PSR-4方式自动加载?

PSR-4是PHP中最新的自动加载标准,它强制我们使用命名空间。

为了使用PSR-4自动加载我们的类,我们需要执行以下步骤

a. 将要自动加载的类放在一个专门的目录中。例如,通常将我们自己编写的类放入名为src/的目录中,从而创建以下文件夹结构

your-website/
  src/
    Db.php
    Page.php
    User.php

b. 给类命名空间。我们必须给src/目录中的所有类赋予相同的命名空间。例如,让我们给类命名空间为Acme。这是Page类的样子

<?php
namespace Acme;

class Page {
    public function __construct()
    {
        echo "hello, i am a page.";
    }
}

我们给src/目录中的所有类赋予相同的命名空间Acme。c. 在composer.json文件中将命名空间指向src/目录。我们将包含类的目录指向composer.json文件中的命名空间。例如,这是在composer.json文件中指定我们将src/目录中的类命名为Acme的示例

{
  "autoload": {
    "psr-4": {
      "Acme\\":"src/"
    }
  }
}
  • 我们使用psr-4键。

    命名空间Acme指向src/目录。命名空间必须以\结尾。例如,"Acme\"。您可以用您品牌或网站的名称替换通用的Acme。

d. 更新Composer自动加载器

$ composer dumpautoload -o

e. 在脚本中导入命名空间。脚本需要导入命名空间以及自动加载器,例如index.php

<?php 
require "vendor/autoload.php";

use Acme\Db;
use Acme\User;
use Acme\Page;
 
$page1 = new Page();

如果目录结构复杂,如何自动加载?到目前为止,我们已经演示了在src/文件夹直接下找到的类的自动加载,但如何自动加载在子目录中找到的类?例如,我们可能希望将Page类移动到Pages目录中,从而创建以下目录树

your-website/
  src/
    Db.php
    User.php
    Pages/
      Page.php

我们需要遵循以下步骤:a. 重新定义命名空间。我们需要根据Page类在src/Pages目录中的新位置给Page类一个命名空间。

<?php
namespace Acme\Pages;

public class Page {
    function __construct()
    {
        echo "hello, i am a page.";
    }
}

b. 在脚本中使用命名空间

<?php
require "vendor/autoload.php";

use Acme\Db;
use Acme\User;
use Acme\Pages\Page;


$page1 = new Page();

结论

正如我们在最后两个教程中所展示的,Composer是一个强大的工具,可以帮助我们管理和自动加载自己的类以及其他类。现在,我们有了这样一个强大的工具,我们有权利充分利用现代PHP所能提供的最佳功能!

https://phpenthusiast.com/blog/how-to-autoload-with-composer https://phpenthusiast.com/object-oriented-php-tutorials