From 796d144d6543156a1b8d4429e209d16053877244 Mon Sep 17 00:00:00 2001 From: 7IN0SAN9 Date: Thu, 24 Mar 2016 18:45:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BC=80=E5=85=B3=E9=87=8F?= =?UTF-8?q?=E6=8E=A7=E5=88=B6composer=20autoload=E8=A1=8C=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .travis.yml | 8 +++---- base.php | 2 +- start.php | 52 +++------------------------------------- tests/mock.php | 2 +- think.php | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 74 insertions(+), 55 deletions(-) create mode 100644 think.php diff --git a/.travis.yml b/.travis.yml index 96a9dffc16..94de5bee28 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,13 +37,13 @@ script: ## LINT - find . -path ./vendor -prune -o -type f -name \*.php -exec php -l {} \; ## PHP_CodeSniffer - - vendor/bin/phpcs --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 --standard=PSR2 --ignore="vendor/*" ./ + - THINK_AUTOLOAD=0 vendor/bin/phpcs --runtime-set ignore_errors_on_exit 1 --runtime-set ignore_warnings_on_exit 1 --standard=PSR2 --ignore="vendor/*" ./ ## PHP Copy/Paste Detector - - vendor/bin/phpcpd --verbose --exclude vendor ./ || true + - THINK_AUTOLOAD=0 vendor/bin/phpcpd --verbose --exclude vendor ./ || true ## PHPLOC - - vendor/bin/phploc --exclude vendor ./ + - THINK_AUTOLOAD=0 vendor/bin/phploc --exclude vendor ./ ## PHPUNIT - - vendor/bin/phpunit --coverage-clover=coverage.xml --configuration=phpunit.xml + - THINK_AUTOLOAD=0 vendor/bin/phpunit --coverage-clover=coverage.xml --configuration=phpunit.xml after_success: - bash <(curl -s https://codecov.io/bash) diff --git a/base.php b/base.php index 9e21280527..768dea1df8 100644 --- a/base.php +++ b/base.php @@ -40,7 +40,7 @@ defined('APP_HOOK') or define('APP_HOOK', false); // 是否开启HOOK defined('ENV_PREFIX') or define('ENV_PREFIX', 'PHP_'); // 环境变量的配置前缀 defined('IS_API') or define('IS_API', false); // 是否API接口 -defined('APP_AUTO_RUN') or define('APP_AUTO_RUN', strrpos($_SERVER['PHP_SELF'], 'vendor/bin/') !== 0); // 是否自动运行 +defined('APP_AUTO_RUN') or define('APP_AUTO_RUN', true); // 是否自动运行 defined('APP_ROUTE_ON') or define('APP_ROUTE_ON', true); // 是否允许路由 defined('APP_ROUTE_MUST') or define('APP_ROUTE_MUST', true); // 是否严格检查路由 defined('CLASS_APPEND_SUFFIX') or define('CLASS_APPEND_SUFFIX', false); // 是否追加类名后缀 diff --git a/start.php b/start.php index b2a5a3115e..9f947dfb1c 100644 --- a/start.php +++ b/start.php @@ -12,54 +12,8 @@ namespace think; // ThinkPHP 引导文件 -// 加载基础文件 -require __DIR__ . '/base.php'; -require CORE_PATH . 'Loader.php'; +defined('THINK_AUTOLOAD') or define('THINK_AUTOLOAD', getenv('THINK_AUTOLOAD') !== '0'); -// 加载环境变量配置文件 -if (is_file(ROOT_PATH . 'env' . EXT)) { - $env = include ROOT_PATH . 'env' . EXT; - foreach ($env as $key => $val) { - $name = ENV_PREFIX . $key; - putenv("$name=$val"); - } -} -// 自动识别调试模式 -if (!defined('APP_DEBUG')) { - $debug = getenv(ENV_PREFIX . 'APP_DEBUG'); - define('APP_DEBUG', $debug); -} - -// 加载模式定义文件 -$mode = require MODE_PATH . APP_MODE . EXT; - -// 加载模式命名空间定义 -if (isset($mode['namespace'])) { - Loader::addNamespace($mode['namespace']); -} - -// 注册自动加载 -Loader::register(); - -// 加载模式别名定义 -if (isset($mode['alias'])) { - Loader::addMap($mode['alias']); -} - -// 注册错误和异常处理机制 -Error::register(); - -// 加载模式配置文件 -if (isset($mode['config'])) { - is_array($mode['config']) ? Config::set($mode['config']) : Config::load($mode['config']); -} - -// 加载模式行为定义 -if (APP_HOOK && isset($mode['tags'])) { - Hook::import($mode['tags']); -} - -// 是否自动运行 -if (APP_AUTO_RUN) { - App::run(); +if (THINK_AUTOLOAD) { + require_once __DIR__ . '/think.php'; } diff --git a/tests/mock.php b/tests/mock.php index 536d559de1..b6cae656cd 100644 --- a/tests/mock.php +++ b/tests/mock.php @@ -20,5 +20,5 @@ // 关闭应用自动执行 define('APP_AUTO_RUN', false); // 加载框架引导文件 -require __DIR__ . '/../start.php'; +require __DIR__ . '/../think.php'; \think\Loader::addNamespace('tests', TEST_PATH); diff --git a/think.php b/think.php new file mode 100644 index 0000000000..3935b085ea --- /dev/null +++ b/think.php @@ -0,0 +1,65 @@ + +// +---------------------------------------------------------------------- + +namespace think; + +// ThinkPHP 实际引导文件 +// 加载基础文件 +require __DIR__ . '/base.php'; +require CORE_PATH . 'Loader.php'; + +// 加载环境变量配置文件 +if (is_file(ROOT_PATH . 'env' . EXT)) { + $env = include ROOT_PATH . 'env' . EXT; + foreach ($env as $key => $val) { + $name = ENV_PREFIX . $key; + putenv("$name=$val"); + } +} +// 自动识别调试模式 +if (!defined('APP_DEBUG')) { + $debug = getenv(ENV_PREFIX . 'APP_DEBUG'); + define('APP_DEBUG', $debug); +} + +// 加载模式定义文件 +$mode = require MODE_PATH . APP_MODE . EXT; + +// 加载模式命名空间定义 +if (isset($mode['namespace'])) { + Loader::addNamespace($mode['namespace']); +} + +// 注册自动加载 +Loader::register(); + +// 加载模式别名定义 +if (isset($mode['alias'])) { + Loader::addMap($mode['alias']); +} + +// 注册错误和异常处理机制 +Error::register(); + +// 加载模式配置文件 +if (isset($mode['config'])) { + is_array($mode['config']) ? Config::set($mode['config']) : Config::load($mode['config']); +} + +// 加载模式行为定义 +if (APP_HOOK && isset($mode['tags'])) { + Hook::import($mode['tags']); +} + +// 是否自动运行 +if (APP_AUTO_RUN) { + App::run(); +}