mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-08 23:52:49 +08:00
控制器的操作方法支持注入Request之外的对象实例
This commit is contained in:
@@ -238,8 +238,9 @@ class App
|
|||||||
foreach ($params as $param) {
|
foreach ($params as $param) {
|
||||||
$name = $param->getName();
|
$name = $param->getName();
|
||||||
$class = $param->getClass();
|
$class = $param->getClass();
|
||||||
if ($class && 'think\Request' == $class->getName()) {
|
if ($class) {
|
||||||
$args[] = Request::instance();
|
$className = $class->getName();
|
||||||
|
$args[] = method_exists($className, 'instance') ? $className::instance() : new $className();
|
||||||
} elseif (1 == $type && !empty($vars)) {
|
} elseif (1 == $type && !empty($vars)) {
|
||||||
$args[] = array_shift($vars);
|
$args[] = array_shift($vars);
|
||||||
} elseif (0 == $type && isset($vars[$name])) {
|
} elseif (0 == $type && isset($vars[$name])) {
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ class Loader
|
|||||||
if (false !== $pos = strrpos($class, '\\')) {
|
if (false !== $pos = strrpos($class, '\\')) {
|
||||||
// namespaced class name
|
// namespaced class name
|
||||||
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DS);
|
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DS);
|
||||||
} else {
|
} else {
|
||||||
// PEAR-like class name
|
// PEAR-like class name
|
||||||
$logicalPathPsr0 = strtr($class, '_', DS) . EXT;
|
$logicalPathPsr0 = strtr($class, '_', DS) . EXT;
|
||||||
@@ -155,13 +155,13 @@ class Loader
|
|||||||
if (!$prefix) {
|
if (!$prefix) {
|
||||||
if ($prepend) {
|
if ($prepend) {
|
||||||
self::$fallbackDirsPsr0 = array_merge(
|
self::$fallbackDirsPsr0 = array_merge(
|
||||||
(array)$paths,
|
(array) $paths,
|
||||||
self::$fallbackDirsPsr0
|
self::$fallbackDirsPsr0
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
self::$fallbackDirsPsr0 = array_merge(
|
self::$fallbackDirsPsr0 = array_merge(
|
||||||
self::$fallbackDirsPsr0,
|
self::$fallbackDirsPsr0,
|
||||||
(array)$paths
|
(array) $paths
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,24 +170,23 @@ class Loader
|
|||||||
|
|
||||||
$first = $prefix[0];
|
$first = $prefix[0];
|
||||||
if (!isset(self::$prefixesPsr0[$first][$prefix])) {
|
if (!isset(self::$prefixesPsr0[$first][$prefix])) {
|
||||||
self::$prefixesPsr0[$first][$prefix] = (array)$paths;
|
self::$prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($prepend) {
|
if ($prepend) {
|
||||||
self::$prefixesPsr0[$first][$prefix] = array_merge(
|
self::$prefixesPsr0[$first][$prefix] = array_merge(
|
||||||
(array)$paths,
|
(array) $paths,
|
||||||
self::$prefixesPsr0[$first][$prefix]
|
self::$prefixesPsr0[$first][$prefix]
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
self::$prefixesPsr0[$first][$prefix] = array_merge(
|
self::$prefixesPsr0[$first][$prefix] = array_merge(
|
||||||
self::$prefixesPsr0[$first][$prefix],
|
self::$prefixesPsr0[$first][$prefix],
|
||||||
(array)$paths
|
(array) $paths
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 添加Psr4空间
|
// 添加Psr4空间
|
||||||
private static function addPsr4($prefix, $paths, $prepend = false)
|
private static function addPsr4($prefix, $paths, $prepend = false)
|
||||||
{
|
{
|
||||||
@@ -195,13 +194,13 @@ class Loader
|
|||||||
// Register directories for the root namespace.
|
// Register directories for the root namespace.
|
||||||
if ($prepend) {
|
if ($prepend) {
|
||||||
self::$fallbackDirsPsr4 = array_merge(
|
self::$fallbackDirsPsr4 = array_merge(
|
||||||
(array)$paths,
|
(array) $paths,
|
||||||
self::$fallbackDirsPsr4
|
self::$fallbackDirsPsr4
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
self::$fallbackDirsPsr4 = array_merge(
|
self::$fallbackDirsPsr4 = array_merge(
|
||||||
self::$fallbackDirsPsr4,
|
self::$fallbackDirsPsr4,
|
||||||
(array)$paths
|
(array) $paths
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} elseif (!isset(self::$prefixDirsPsr4[$prefix])) {
|
} elseif (!isset(self::$prefixDirsPsr4[$prefix])) {
|
||||||
@@ -211,23 +210,22 @@ class Loader
|
|||||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||||
}
|
}
|
||||||
self::$prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
self::$prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||||
self::$prefixDirsPsr4[$prefix] = (array)$paths;
|
self::$prefixDirsPsr4[$prefix] = (array) $paths;
|
||||||
} elseif ($prepend) {
|
} elseif ($prepend) {
|
||||||
// Prepend directories for an already registered namespace.
|
// Prepend directories for an already registered namespace.
|
||||||
self::$prefixDirsPsr4[$prefix] = array_merge(
|
self::$prefixDirsPsr4[$prefix] = array_merge(
|
||||||
(array)$paths,
|
(array) $paths,
|
||||||
self::$prefixDirsPsr4[$prefix]
|
self::$prefixDirsPsr4[$prefix]
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// Append directories for an already registered namespace.
|
// Append directories for an already registered namespace.
|
||||||
self::$prefixDirsPsr4[$prefix] = array_merge(
|
self::$prefixDirsPsr4[$prefix] = array_merge(
|
||||||
self::$prefixDirsPsr4[$prefix],
|
self::$prefixDirsPsr4[$prefix],
|
||||||
(array)$paths
|
(array) $paths
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 注册命名空间别名
|
// 注册命名空间别名
|
||||||
public static function addNamespaceAlias($namespace, $original = '')
|
public static function addNamespaceAlias($namespace, $original = '')
|
||||||
{
|
{
|
||||||
@@ -308,8 +306,8 @@ class Loader
|
|||||||
public static function import($class, $baseUrl = '', $ext = EXT)
|
public static function import($class, $baseUrl = '', $ext = EXT)
|
||||||
{
|
{
|
||||||
static $_file = [];
|
static $_file = [];
|
||||||
$key = $class . $baseUrl;
|
$key = $class . $baseUrl;
|
||||||
$class = str_replace(['.', '#'], [DS, '.'], $class);
|
$class = str_replace(['.', '#'], [DS, '.'], $class);
|
||||||
if (isset($_file[$key])) {
|
if (isset($_file[$key])) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -548,4 +546,4 @@ function __include_file($file)
|
|||||||
function __require_file($file)
|
function __require_file($file)
|
||||||
{
|
{
|
||||||
return require $file;
|
return require $file;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user