Skip to content

Commit ece8c4a

Browse files
committed
Update
1 parent 6fee502 commit ece8c4a

3 files changed

Lines changed: 59 additions & 22 deletions

File tree

autoload.php

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,14 @@
55
* @author Candison November <www.kandisheng.com>
66
*/
77

8+
require_once('library/Autoload.php');
9+
10+
use CodeMommy\AutoloadPHP\Library\Autoload;
11+
812
$autoloaDirectory = array(
13+
'library' => 'CodeMommy\\AutoloadPHP\\Library',
914
'class' => 'CodeMommy\\AutoloadPHP',
1015
'interface' => 'CodeMommy\\AutoloadPHP'
1116
);
1217

13-
foreach ($autoloaDirectory as $directory => $namespaceRoot) {
14-
$directory = sprintf('%s%s%s', __DIR__, DIRECTORY_SEPARATOR, $directory);
15-
spl_autoload_register(function ($className) use ($directory, $namespaceRoot) {
16-
$directory = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $directory);
17-
$directory = rtrim($directory, '/\\');
18-
$namespaceRoot = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $namespaceRoot);
19-
$namespaceRoot = trim($namespaceRoot, '/\\');
20-
$className = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $className);
21-
$className = trim($className, '/\\');
22-
if (substr($className, 0, strlen($namespaceRoot)) == $namespaceRoot) {
23-
$className = substr($className, strlen($namespaceRoot));
24-
$className = ltrim($className, '/\\');
25-
}
26-
$extensionList = array('php', 'class.php');
27-
foreach ($extensionList as $extension) {
28-
$file = $directory . DIRECTORY_SEPARATOR . $className . '.' . $extension;
29-
if (is_file($file) && is_readable($file)) {
30-
require_once($file);
31-
}
32-
}
33-
});
34-
}
18+
Autoload::directory($autoloaDirectory);

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
],
2525
"autoload": {
2626
"psr-4": {
27+
"CodeMommy\\AutoloadPHP\\Library\\": "library",
2728
"CodeMommy\\AutoloadPHP\\": [
2829
"interface",
2930
"class"

library/Autoload.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
3+
/**
4+
* CodeMommy AutoloadPHP
5+
* @author Candison November <www.kandisheng.com>
6+
*/
7+
8+
namespace CodeMommy\AutoloadPHP\Library;
9+
10+
/**
11+
* Class Autoload
12+
* @package CodeMommy\AutoloadPHP\Library;
13+
*/
14+
class Autoload
15+
{
16+
/**
17+
* Autoload constructor.
18+
*/
19+
public function __construct()
20+
{
21+
}
22+
23+
/**
24+
* Directory
25+
* @param array $autoloaDirectory
26+
*/
27+
public static function directory($autoloaDirectory =array())
28+
{
29+
foreach ($autoloaDirectory as $directory => $namespaceRoot) {
30+
$directory = sprintf('%s%s%s', __DIR__, DIRECTORY_SEPARATOR, $directory);
31+
spl_autoload_register(function ($className) use ($directory, $namespaceRoot) {
32+
$directory = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $directory);
33+
$directory = rtrim($directory, '/\\');
34+
$namespaceRoot = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $namespaceRoot);
35+
$namespaceRoot = trim($namespaceRoot, '/\\');
36+
$className = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $className);
37+
$className = trim($className, '/\\');
38+
if (substr($className, 0, strlen($namespaceRoot)) == $namespaceRoot) {
39+
$className = substr($className, strlen($namespaceRoot));
40+
$className = ltrim($className, '/\\');
41+
}
42+
$extensionList = array('php', 'class.php');
43+
foreach ($extensionList as $extension) {
44+
$file = $directory . DIRECTORY_SEPARATOR . $className . '.' . $extension;
45+
if (is_file($file) && is_readable($file)) {
46+
require_once($file);
47+
}
48+
}
49+
});
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)