From c44474e57ecfe7e498db0f27cafcd036c3b7c99e Mon Sep 17 00:00:00 2001 From: Haotong Lin Date: Fri, 4 Mar 2016 13:02:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84app=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/App.php | 4 +- tests/thinkphp/library/think/appTest.php | 76 +++++++++++++++++++++++- 2 files changed, 75 insertions(+), 5 deletions(-) diff --git a/library/think/App.php b/library/think/App.php index ea01abaa..6f88a9ab 100644 --- a/library/think/App.php +++ b/library/think/App.php @@ -212,11 +212,11 @@ class App // 获取控制器名 $controllerName = strip_tags($result[1] ?: Config::get('default_controller')); - define('CONTROLLER_NAME', Config::get('url_controller_convert') ? strtolower($controllerName) : $controllerName); + defined('CONTROLLER_NAME') or define('CONTROLLER_NAME', Config::get('url_controller_convert') ? strtolower($controllerName) : $controllerName); // 获取操作名 $actionName = strip_tags($result[2] ?: Config::get('default_action')); - define('ACTION_NAME', Config::get('url_action_convert') ? strtolower($actionName) : $actionName); + defined('ACTION_NAME') or define('ACTION_NAME', Config::get('url_action_convert') ? strtolower($actionName) : $actionName); // 执行操作 if (!preg_match('/^[A-Za-z](\/|\.|\w)*$/', CONTROLLER_NAME)) { diff --git a/tests/thinkphp/library/think/appTest.php b/tests/thinkphp/library/think/appTest.php index 490832a8..a38e9d04 100644 --- a/tests/thinkphp/library/think/appTest.php +++ b/tests/thinkphp/library/think/appTest.php @@ -16,12 +16,82 @@ namespace tests\thinkphp\library\think; +use ReflectionClass; +use think\App; +use think\Config; + +function func_trim($value) +{ + return trim($value); +} + +function func_strpos($haystack, $needle) +{ + return strpos($haystack, $needle); +} + +class AppInvokeMethodTestClass +{ + public static function staticRun($string) + { + return $string; + } + + public function run($string) + { + return $string; + } +} + class appTest extends \PHPUnit_Framework_TestCase { public function testRun() { - //\think\App::run(); - //$this->expectOutputString('

:)

欢迎使用 ThinkPHP5

'); - // todo... + Config::set('root_namespace', ['/path/']); + + App::run(); + + $expectOutputString = '

:)

欢迎使用 ThinkPHP5

'; + $this->expectOutputString($expectOutputString); + + $rc = new ReflectionClass('\think\Loader'); + $ns = $rc->getProperty('namespace'); + $ns->setAccessible(true); + $this->assertEquals(true, in_array('/path/', $ns->getValue())); + + $this->assertEquals(true, function_exists('L')); + $this->assertEquals(true, function_exists('C')); + $this->assertEquals(true, function_exists('I')); + + $this->assertEquals(Config::get('default_timezone'), date_default_timezone_get()); + + } + + // function调度 + public function testInvokeFunction() + { + $args1 = ['a b c ']; + $this->assertEquals( + trim($args1[0]), + App::invokeFunction('tests\thinkphp\library\think\func_trim', $args1) + ); + + $args2 = ['abcdefg', 'g']; + $this->assertEquals( + strpos($args2[0], $args2[1]), + App::invokeFunction('tests\thinkphp\library\think\func_strpos', $args2) + ); + } + + // 类method调度 + public function testInvokeMethod() + { + $_GET = ['thinkphp']; + $result = App::invokeMethod(['tests\thinkphp\library\think\AppInvokeMethodTestClass', 'run']); + $this->assertEquals('thinkphp', $result); + + $_GET = ['thinkphp']; + $result = App::invokeMethod('tests\thinkphp\library\think\AppInvokeMethodTestClass::staticRun'); + $this->assertEquals('thinkphp', $result); } }