Skip to content

Commit 925dacb

Browse files
committed
0.0.3
1 parent f2d0f27 commit 925dacb

File tree

11 files changed

+302
-86
lines changed

11 files changed

+302
-86
lines changed

composer.json

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,36 @@
11
{
2-
"name": "codemommy/autoloadphp",
3-
"version": "0.0.2",
4-
"description": "Automatic load namespaces, classes and files",
5-
"keywords": [
6-
"CodeMommy",
7-
"AutoloadPHP",
8-
"Autoload",
9-
"PHP"
10-
],
11-
"license": "Apache 2.0",
12-
"homepage": "http://www.codemommy.com",
13-
"support": {
14-
"issues": "https://github.com/CodeMommy/AutoloadPHP/issues",
15-
"source": "https://github.com/CodeMommy/AutoloadPHP"
16-
},
17-
"authors": [
18-
{
19-
"name": "Candison November",
20-
"email": "kandisheng@163.com",
21-
"homepage": "http://www.kandisheng.com"
2+
"name": "codemommy/autoloadphp",
3+
"version": "0.0.3",
4+
"description": "Automatic load namespaces, classes and files",
5+
"keywords": [
6+
"CodeMommy",
7+
"AutoloadPHP",
8+
"Autoload",
9+
"PHP"
10+
],
11+
"license": "Apache 2.0",
12+
"homepage": "http://www.codemommy.com",
13+
"support": {
14+
"issues": "https://github.com/CodeMommy/AutoloadPHP/issues",
15+
"source": "https://github.com/CodeMommy/AutoloadPHP"
16+
},
17+
"authors": [
18+
{
19+
"name": "Candison November",
20+
"email": "kandisheng@163.com",
21+
"homepage": "http://www.kandisheng.com"
22+
}
23+
],
24+
"autoload": {
25+
"psr-4": {
26+
"CodeMommy\\AutoloadPHP\\": "source/"
27+
}
28+
},
29+
"require": {
30+
"php": ">=5.3.0"
31+
},
32+
"require-dev": {
33+
"CodeMommy/TaskPHP": "*",
34+
"phpunit/phpunit": "*"
2235
}
23-
],
24-
"autoload": {
25-
"psr-4": {
26-
"CodeMommy\\AutoloadPHP\\": "source/"
27-
}
28-
},
29-
"require": {
30-
"php": ">=5.3.0"
31-
},
32-
"require-dev": {
33-
"phpunit/phpunit": "*"
34-
}
3536
}

source/Tool.php renamed to private/Path.php

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

8-
namespace CodeMommy\AutoloadPHP;
8+
namespace NotPublic;
99

1010
/**
11-
* Class Tool
12-
* @package CodeMommy\AutoloadPHP
11+
* Class Path
12+
* @package NotPublic
1313
*/
14-
class Tool
14+
class Path
1515
{
1616
/**
1717
* Remove First Slash
18-
*
1918
* @param $string
2019
*/
2120
public static function removeFirstSlash(&$string)
2221
{
23-
if (substr($string, 0, 1) == '/') {
22+
if (substr($string, 0, 1) == '/' || substr($string, 0, 1) == '\\') {
2423
$string = substr($string, 1);
24+
self::removeFirstSlash($string);
2525
}
2626
}
2727

2828
/**
2929
* Remove Last Slash
30-
*
3130
* @param $string
3231
*/
3332
public static function removeLastSlash(&$string)
3433
{
35-
if (substr($string, -1) == '/') {
34+
if (substr($string, -1) == '/' || substr($string, -1) == '\\') {
3635
$string = substr($string, 0, -1);
36+
self::removeLastSlash($string);
3737
}
3838
}
3939

4040
/**
4141
* Replace Slash
42-
*
4342
* @param $string
4443
*/
4544
public static function replaceSlash(&$string)
4645
{
47-
$string = str_replace('\\', '/', $string);
46+
$string = str_replace('\\', DIRECTORY_SEPARATOR, $string);
47+
$string = str_replace('/', DIRECTORY_SEPARATOR, $string);
4848
}
4949
}

source/Autoload.php

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77

88
namespace CodeMommy\AutoloadPHP;
99

10+
require_once(__DIR__ . '/../private/Path.php');
11+
12+
use NotPublic\Path;
13+
1014
/**
1115
* Class Autoload
1216
* @package CodeMommy\AutoloadPHP
@@ -15,52 +19,69 @@ class Autoload
1519
{
1620
/**
1721
* Directory
18-
*
1922
* @param $directory
2023
* @param $namespaceRoot
2124
*/
2225
public static function directory($directory, $namespaceRoot)
2326
{
2427
spl_autoload_register(function ($className) use ($directory, $namespaceRoot) {
25-
Tool::replaceSlash($directory);
26-
Tool::removeLastSlash($directory);
27-
Tool::replaceSlash($namespaceRoot);
28-
Tool::removeFirstSlash($namespaceRoot);
29-
Tool::removeLastSlash($namespaceRoot);
30-
Tool::replaceSlash($className);
31-
Tool::removeFirstSlash($className);
32-
Tool::removeLastSlash($className);
28+
Path::replaceSlash($directory);
29+
Path::removeLastSlash($directory);
30+
Path::replaceSlash($namespaceRoot);
31+
Path::removeFirstSlash($namespaceRoot);
32+
Path::removeLastSlash($namespaceRoot);
33+
Path::replaceSlash($className);
34+
Path::removeFirstSlash($className);
35+
Path::removeLastSlash($className);
3336
if (substr($className, 0, strlen($namespaceRoot)) == $namespaceRoot) {
3437
$className = substr($className, strlen($namespaceRoot));
35-
Tool::removeFirstSlash($className);
38+
Path::removeFirstSlash($className);
3639
}
37-
$file = $directory . '/' . $className . '.php';
38-
if (is_file($file)) {
39-
require_once($file);
40+
$extensionList = array('php', 'class.php');
41+
foreach ($extensionList as $extension) {
42+
$file = $directory . '/' . $className . '.' . $extension;
43+
if (is_file($file)) {
44+
require_once($file);
45+
}
4046
}
4147
});
4248
}
4349

4450
/**
4551
* File
46-
*
4752
* @param $file
4853
* @param $className
4954
*/
5055
public static function file($file, $className)
5156
{
5257
spl_autoload_register(function ($name) use ($file, $className) {
53-
Tool::replaceSlash($className);
54-
Tool::removeFirstSlash($className);
55-
Tool::removeLastSlash($className);
56-
Tool::replaceSlash($name);
57-
Tool::removeFirstSlash($name);
58-
Tool::removeLastSlash($name);
58+
Path::replaceSlash($className);
59+
Path::removeFirstSlash($className);
60+
Path::removeLastSlash($className);
61+
Path::replaceSlash($name);
62+
Path::removeFirstSlash($name);
63+
Path::removeLastSlash($name);
5964
if ($className == $name) {
6065
if (is_file($file)) {
6166
require_once($file);
6267
}
6368
}
6469
});
6570
}
71+
72+
/**
73+
* Basic
74+
* @param $file
75+
* @param bool $isOnce
76+
*/
77+
public static function basic($file, $isOnce = true)
78+
{
79+
if (is_file($file)) {
80+
if ($isOnce) {
81+
require_once($file);
82+
} else {
83+
require($file);
84+
}
85+
}
86+
}
6687
}

task.php

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#!/usr/bin/env php
2+
3+
<?php
4+
5+
/**
6+
* CodeMommy AutoloadPHP
7+
* @author Candison November <www.kandisheng.com>
8+
*/
9+
10+
require_once(__DIR__ . '/vendor/autoload.php');
11+
12+
use CodeMommy\TaskPHP\Task;
13+
14+
/**
15+
* Task Update Version
16+
*/
17+
Task::add('update-version', 'Update Version', function () {
18+
$file = __DIR__ . '/composer.json';
19+
$composer = file_get_contents($file);
20+
$composer = json_decode($composer, true);
21+
$version = $composer['version'];
22+
$version = explode('.', $version);
23+
$version[2] = intval($version[2]) + 1;
24+
$version = implode('.', $version);
25+
$composer['version'] = $version;
26+
$composer = json_encode($composer, JSON_PRETTY_PRINT);
27+
$composer = str_replace('\\/', '/', $composer);
28+
file_put_contents($file, $composer);
29+
echo(sprintf('Updated version to %s.', $version));
30+
});
31+
32+
/**
33+
* Task Update
34+
*/
35+
Task::add('update', 'Update Composer', function () {
36+
system('php -v');
37+
Task::line();
38+
system('git pull');
39+
Task::line();
40+
system('composer self-update');
41+
Task::line();
42+
system('composer update');
43+
});
44+
45+
/**
46+
* Task Test
47+
*/
48+
Task::add('test', 'Test', function () {
49+
$test = Task::getParameter(0);
50+
$phpUnitPath = sprintf('%s/vendor/bin/phpunit', __DIR__);
51+
$phpUnitPath = str_replace('/', DIRECTORY_SEPARATOR, $phpUnitPath);
52+
if (empty($test)) {
53+
system($phpUnitPath);
54+
} else {
55+
system(sprintf('cd test && "%s" %sTest --repeat 100', $phpUnitPath, $test));
56+
}
57+
});
58+
59+
/**
60+
* Start
61+
*/
62+
Task::config('CodeMommy AutoloadPHP Task', '');
63+
Task::run();

test/AutoloadTest.php

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22

33
/**
4+
* CodeMommy AutoloadPHP
45
* @author Candison November <www.kandisheng.com>
56
*/
67

@@ -10,30 +11,46 @@
1011

1112
use PHPUnit\Framework\TestCase;
1213
use CodeMommy\AutoloadPHP\Autoload;
13-
use NamespaceOne\ClassOne;
14-
use Root\NamespaceTwo\ClassTwo;
15-
use Root\NamespaceThree\ClassThree;
14+
use NamespaceA\ClassA;
15+
use Root\NamespaceB\ClassB;
16+
use Root\NamespaceC\ClassC;
17+
use Root\NamespaceD\ClassD;
18+
use Root\NamespaceE\ClassE;
1619

20+
/**
21+
* Class AutoloadTest
22+
* @package Test
23+
*/
1724
class AutoloadTest extends TestCase
1825
{
1926
/**
2027
* Test Directory
2128
* @return void
2229
*/
23-
public function testDirectoryClassOne()
30+
public function testDirectoryClassA()
2431
{
2532
Autoload::directory(__DIR__, '');
26-
$this->assertEquals(ClassOne::show(), 'ClassOne');
33+
$this->assertEquals(ClassA::show(), 'ClassA');
34+
}
35+
36+
/**
37+
* Test Directory
38+
* @return void
39+
*/
40+
public function testDirectoryClassB()
41+
{
42+
Autoload::directory(__DIR__, 'Root');
43+
$this->assertEquals(ClassB::show(), 'ClassB');
2744
}
2845

2946
/**
3047
* Test Directory
3148
* @return void
3249
*/
33-
public function testDirectoryClassTwo()
50+
public function testDirectoryClassC()
3451
{
3552
Autoload::directory(__DIR__, 'Root');
36-
$this->assertEquals(ClassTwo::show(), 'ClassTwo');
53+
$this->assertEquals(ClassC::show(), 'ClassC');
3754
}
3855

3956
/**
@@ -42,7 +59,17 @@ public function testDirectoryClassTwo()
4259
*/
4360
public function testFile()
4461
{
45-
Autoload::file(__DIR__ . '/NamespaceThree/ClassThree.php', 'Root\NamespaceThree\ClassThree');
46-
$this->assertEquals(ClassThree::show(), 'ClassThree');
62+
Autoload::file(__DIR__ . '/NamespaceD/ClassD.php', 'Root\NamespaceD\ClassD');
63+
$this->assertEquals(ClassD::show(), 'ClassD');
64+
}
65+
66+
/**
67+
* Test Basic
68+
* @return void
69+
*/
70+
public function testBasic()
71+
{
72+
Autoload::basic(__DIR__ . '/NamespaceE/ClassE.php');
73+
$this->assertEquals(ClassE::show(), 'ClassE');
4774
}
4875
}

0 commit comments

Comments
 (0)