回答編集履歴

1

追記

2016/06/10 03:11

投稿

manto
manto

スコア14

test CHANGED
@@ -1,16 +1,14 @@
1
1
  setting.phpがindex.phpやlogin.phpと同じ階層にあると仮定します。
2
2
 
3
- setting.php内に以下のコードを記述するとオートロードれるかと思ます
3
+ setting.php内に以下のコードを記述して下さい。
4
+
5
+ そして、各index.phpやlogin.php内でsetting.phpを読み込んで下さい。
4
6
 
5
7
 
6
8
 
7
9
  $scan_dirsに自動で読み込ませたいフォルダを配列で渡しています。
8
10
 
9
11
  以下コードはPHP5.4以上で動作します。
10
-
11
-
12
-
13
-
14
12
 
15
13
  ```PHP
16
14
 
@@ -41,3 +39,93 @@
41
39
  });
42
40
 
43
41
  ```
42
+
43
+
44
+
45
+ 新たに読み込むディレクトリを増やしたい場合は、以下のように配列に追加すれば良いです。
46
+
47
+ ```PHP
48
+
49
+ spl_autoload_register(function ($class_name) {
50
+
51
+ $scan_dirs = [
52
+
53
+ __dir__.'/class/check',
54
+
55
+ __dir__.'/class/get',
56
+
57
+ // ↓新しく3つの読み込むディレクトリを増やす
58
+
59
+ __dir__.'/class/newdir1',
60
+
61
+ __dir__.'/class/newdir2',
62
+
63
+ __dir__.'/class/newdir3',
64
+
65
+ ];
66
+
67
+ foreach ($scan_dirs as $scan_dir) {
68
+
69
+ $include_path = $scan_dir.'/'.$class_name.'.php';
70
+
71
+ if (is_readable($include_path)) {
72
+
73
+ require_once $include_path;
74
+
75
+ break;
76
+
77
+ }
78
+
79
+ }
80
+
81
+ });
82
+
83
+ ```
84
+
85
+
86
+
87
+
88
+
89
+ 【イメージ】
90
+
91
+ // インスタンス化
92
+
93
+ $user = new User();
94
+
95
+ ↑Userクラスがまだ読み込まれていない場合は、通常エラーが発生しますが、オートロード設定をしていると、以下の様な流れになります。
96
+
97
+
98
+
99
+ ```PHP
100
+
101
+ // ↓Userが引数として渡される
102
+
103
+ spl_autoload_register(function ('User') {
104
+
105
+ ```
106
+
107
+ ```PHP
108
+
109
+ // ↓以下のようなイメージ
110
+
111
+ foreach ($scan_dirs as $scan_dir) {
112
+
113
+ $include_path = $scan_dir.'/User.php';
114
+
115
+ if (is_readable($include_path)) {
116
+
117
+ require_once $include_path;
118
+
119
+ break;
120
+
121
+ }
122
+
123
+ }
124
+
125
+ ```
126
+
127
+
128
+
129
+
130
+
131
+ わかりにくい説明ですが、このような流れです。