回答編集履歴
2
具体例を追加
answer
CHANGED
@@ -3,6 +3,16 @@
|
|
3
3
|
- [PHP Manual - クラスのオートローディング](http://php.net/manual/ja/language.oop5.autoload.php)
|
4
4
|
- [Qiita - PHP で、spl_autoload_register を使って、require_once 地獄を脱出しよう](http://qiita.com/misogi@github/items/8d02f2eac9a91b4e6215)
|
5
5
|
|
6
|
+
```php
|
7
|
+
// 例
|
8
|
+
spl_autoload_register(function ($classname) {
|
9
|
+
$path = __DIR__ . '/' . $classname . '.php';
|
10
|
+
if (file_exists($path)) {
|
11
|
+
require $path;
|
12
|
+
}
|
13
|
+
});
|
14
|
+
```
|
15
|
+
|
6
16
|
これをベースに更に規約を設けて,オートローディングのための関数すら自分で書く必要を無くした仕組みを導入したものが,PHPのパッケージマネージャ「Composer」として用意されています.**PSR-4**という規約(あるいは旧式のPSR-0)に則ってクラスを作成およびファイルを配置すれば,PHPが提供している`spl_autoload_register`という関数を利用して自動的に読み込みを行ってくれます.
|
7
17
|
|
8
18
|
- [PHP開発でComposerを使わないなんてありえない!基礎編](http://qiita.com/niisan-tokyo/items/8cccec88d45f38171c94#create-project)
|
1
補足
answer
CHANGED
@@ -5,7 +5,30 @@
|
|
5
5
|
|
6
6
|
これをベースに更に規約を設けて,オートローディングのための関数すら自分で書く必要を無くした仕組みを導入したものが,PHPのパッケージマネージャ「Composer」として用意されています.**PSR-4**という規約(あるいは旧式のPSR-0)に則ってクラスを作成およびファイルを配置すれば,PHPが提供している`spl_autoload_register`という関数を利用して自動的に読み込みを行ってくれます.
|
7
7
|
|
8
|
+
- [PHP開発でComposerを使わないなんてありえない!基礎編](http://qiita.com/niisan-tokyo/items/8cccec88d45f38171c94#create-project)
|
8
9
|
- [Qiita - PSR-4 autoloader (日本語訳)](http://qiita.com/inouet/items/0208237629496070bbd4)
|
9
10
|
- [ngの日記 - Composer が PSR-4 に対応していた](http://ngyuki.hatenablog.com/entry/2014/01/09/203427)
|
10
11
|
|
11
|
-
|
12
|
+
この仕組みは,他者が提供しているライブラリを`composer install`でインストールした場合だけでなく,自分のプロジェクト内のファイルに対しても適用が可能です.`composer install`あるいは`composer update`のタイミングで,自分のプロジェクト内の各クラスに対するオートローダが定義されます.
|
13
|
+
|
14
|
+
なお大前提として,ディレクトリ構成からして変えたほうがいいかと思います.**HTTPでアクセスする必要のないファイルは公開ディレクトリの外に起きましょう.**例えば以下の例では`www`を公開ディレクトリとし,`http://example.com/archive.php`が`project/www/archive.php`に対応することを想定しています.
|
15
|
+
|
16
|
+
```html
|
17
|
+
project
|
18
|
+
|--.git
|
19
|
+
|--composer.json
|
20
|
+
|--vendor
|
21
|
+
| `--autoload.php
|
22
|
+
|--class
|
23
|
+
| |--controller
|
24
|
+
| |--model
|
25
|
+
| `--view
|
26
|
+
`--www
|
27
|
+
|--css
|
28
|
+
|--img
|
29
|
+
|--js
|
30
|
+
|--archive.php
|
31
|
+
|--home.php
|
32
|
+
|--login.php
|
33
|
+
`--setting.php
|
34
|
+
```
|