👌

phpは日本語のクラス名でもautoloadできる

2021/04/29に公開

クラス名が日本語でもautoloadできるのか実験してみる

テーブル名もカラム名も日本語のデータベースにORMを使おうとすると、エンティティクラス名が日本語になってしまったので、そもそも日本語のクラスってautoloadできるのか?というのを実験してみました。

環境

ubuntu 20.04
php 8.0

成果物

リポジトリはこちら

ディレクトリ構造

.
├── composer.json
├── composer.lock
├── src
│   ├── Foo
│   │   └── Baa
│   │       └── 日本人.php
│   ├── bootstrap.php
│   └── test.php
└── vendor

日本語のクラスを用意

日本人.php
<?php

namespace Isanasan\Test;

class 日本人
{
    public function あいさつ()
    {
        echo 'こんにちは' . PHP_EOL;
    }
}

autoloadの設定

composer.json
{
    "require": {
        "php": "^8.0"
    },
    "autoload":{
        "psr-4": {
            "Isanasan\\Test\\":"src/Foo/Baa"
        }
    }
}

呼び出し側

test.json
<?php

namespace Isanasan\Test;

require_once __DIR__ . "/bootstrap.php";

$japanese = new 日本人();

$japanese->あいさつ();

実行結果

% php ./src/test.php
こんにちは

まとめ

無事、日本語のクラスのautoloadとついでに日本語メソッドの実行の確認ができました。

Discussion