Composer の autoload を使う(ローカルライブラリ)
製品パッケージの dist から vendor を丸ごと除外してしまったりすると autoload.php をはじめ実際に使うファイルが含まれないので厳重注意。
メリット
require書いたり依存関係の読み込み順での動作不良の心配がない
設定方法
Packagist への登録は行わずにローカルのオレオレ使用のみの場合
ライブラリの作成
プロジェクト内にディレクトリを作成し、その中にファイルを纏める。
1. 親ディレクトリの作成
作成するライブラリのディレクトリ名をnamespace名にする(必須ではないがその方が混乱しない)
2. 子ディレクトリの作成
Packagist に登録する場合は src ディレクトリの中に入れるのが一般的のようなので、ライブラリのディレクトリ名/src/ の中にファイルを作成する。
3. ファイルの作成
ライブラリ内のファイルには必ず最初に namespace を記述する
ファイル名はclass名と同じにする
<?php
/**
* My Test Lib
*
*/
namespace mylib;
class Sample {
public static function test() {
echo '<br />__|\○_ヒャッ ε=\_○ノ ホーウ!!' . '<br />' . "\n";
}
}
composer.json の設定
以下のように autoload を追加する。
"require": {},
"autoload": {
"psr-4": {
"mylib\\": "mylib/src/"
}
},
の
"mylib\\": "mylib/src/"
の部分。
左側が namespace 名で右側が ライブラリのディレクトリ
階層がある場合
mylib/src/aich/Nagoya.php
の場合、namespaceは mylib\aich
autoloadが上手く動作しない時は...
vendorディレクトリ消してインストールしなおし
上手く動かなかったら
composer install
でインストールしなおしてみる
クラス名とファイル名は全く同じにするのが無難
ファイル名が小文字&class名はキャメルケースでも動作はするが...小文字大文字も同じの方が安全と思われる。
※動作しない場合はvendorディレクトリ消してinstallしなおしてみる。
composer update
namespace名やディレクトリなど、composer.json を変更した場合は
composer update
を必ず行う。そうすると
vendor/composer/autoload_psr4.php
が更新される
実際の使用
先に autoload.php を読み込んだ上で使うライブラリの namespace とクラス名を use で記述する
それ以降で普通に使える。
require_once dirname( dirname( dirname( __FILE__ ) ) ) . '/vendor/autoload.php';
use mylib\Sample;
$sample = new Sample();
$sample->test
投稿者プロフィール
-
名古屋のウェブ制作会社数社に10年程度務めた後、株式会社ベクトル設立。
企画・運営・コンサルティング〜WordPressを中心としたシステム開発まで幅広く携わる。
[ 著書 ]
・いちばんやさしいWordPressの教本(共著)
・現場でかならず使われているWordPressデザインのメソッド(共著)
[ 最近のWordPressコミュニティでの活動 ]
2018 WordCampOsaka セッションスピーカー
2017 WordCampKyoto セッションスピーカー
2016 WordCampTokyo LT
2016 WordCampKansai ハンズオン世話役
2015 WordCampTokyo セッションスピーカー
2015 WordCampKansai セッションスピーカー
2014 WordFesNagoya 実行委員 & セッションスピーカー
2013 WordCampTokyo セッションスピーカー(パネラー)
2013 WordFesNagoya 実行委員 & セッションスピーカー
2013 WordCrabFukui セッションスピーカー
他
最新の投稿
シンプルでカスタマイズしやすいWordPressテーマ
プラグイン VK All in One Expansion Unit とセットで使う事でビジネスサイトにもブログにも活用できます。