テーブル名もカラム名も日本語のデータベースに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とついでに日本語メソッドの実行の確認ができました。