mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 15:12:48 +08:00
修正composer自动加载
This commit is contained in:
@@ -146,8 +146,8 @@ class Loader
|
|||||||
// Composer自动加载支持
|
// Composer自动加载支持
|
||||||
if (is_dir(VENDOR_PATH . 'composer')) {
|
if (is_dir(VENDOR_PATH . 'composer')) {
|
||||||
// 注册Composer自动加载
|
// 注册Composer自动加载
|
||||||
self::registerComposerLoader();
|
|
||||||
self::$composerLoader = true;
|
self::$composerLoader = true;
|
||||||
|
self::registerComposerLoader();
|
||||||
} elseif (is_file(VENDOR_PATH . 'think_autoload.php')) {
|
} elseif (is_file(VENDOR_PATH . 'think_autoload.php')) {
|
||||||
// 读取Composer自动加载文件
|
// 读取Composer自动加载文件
|
||||||
$autoload = include VENDOR_PATH . 'think_autoload.php';
|
$autoload = include VENDOR_PATH . 'think_autoload.php';
|
||||||
@@ -163,88 +163,6 @@ class Loader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 扫描composer package
|
|
||||||
public static function scanComposerPackage($path)
|
|
||||||
{
|
|
||||||
// 自动扫描下载Composer安装类库
|
|
||||||
$dirs = scandir($path, 1);
|
|
||||||
$namespace = $files = $classmap = [];
|
|
||||||
foreach ($dirs as $dir) {
|
|
||||||
if ('.' != $dir && '..' != $dir && is_dir($path . $dir) && is_file($path . $dir . DS . 'composer.json')) {
|
|
||||||
// 解析Composer 包
|
|
||||||
$package = $path . $dir . DS;
|
|
||||||
$content = file_get_contents($package . 'composer.json');
|
|
||||||
$result = json_decode($content, true);
|
|
||||||
|
|
||||||
if (!empty($result['autoload'])) {
|
|
||||||
$autoload = $result['autoload'];
|
|
||||||
if (isset($autoload['psr-0'])) {
|
|
||||||
foreach ($autoload['psr-0'] as $ns => $val) {
|
|
||||||
$namespace[rtrim($ns, '\\')] = realpath($package . $val . DS . str_replace('\\', DS, $ns)) . DS;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($autoload['psr-4'])) {
|
|
||||||
foreach ($autoload['psr-4'] as $ns => $val) {
|
|
||||||
$namespace[rtrim($ns, '\\')] = realpath($package . $val) . DS;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($autoload['classmap'])) {
|
|
||||||
foreach ($autoload['classmap'] as $val) {
|
|
||||||
if (strpos($val, '/')) {
|
|
||||||
// 扫描目录
|
|
||||||
$items = scandir($package . $val);
|
|
||||||
foreach ($items as $file) {
|
|
||||||
if ('php' == pathinfo($file, PATHINFO_EXTENSION)) {
|
|
||||||
$file = realpath($package . $val . DS . $file);
|
|
||||||
$info = self::parsePhpNamespace($file);
|
|
||||||
foreach ($info as $class) {
|
|
||||||
$classmap[$class] = $file;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// 解析文件
|
|
||||||
$file = realpath($package . $val);
|
|
||||||
$info = self::parsePhpNamespace($file);
|
|
||||||
foreach ($info as $class) {
|
|
||||||
$classmap[$class] = $file;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (isset($autoload['files'])) {
|
|
||||||
foreach ($autoload['files'] as $file) {
|
|
||||||
$files[] = realpath($package . $file);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ['namespace' => $namespace, 'files' => $files, 'classmap' => $classmap];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 解析PHP文件 获取类的命名空间
|
|
||||||
private static function parsePhpNamespace($file)
|
|
||||||
{
|
|
||||||
$content = php_strip_whitespace($file);
|
|
||||||
$content = substr($content, 5);
|
|
||||||
if (0 === strpos(ltrim($content), 'namespace')) {
|
|
||||||
preg_match('/\snamespace\s(.*?);/is', $content, $matches);
|
|
||||||
$namespace = $matches[1] . '\\';
|
|
||||||
} else {
|
|
||||||
$namespace = '';
|
|
||||||
}
|
|
||||||
preg_match_all('/[\s|\;\}]class\s(\w+)\s?\{/is', $content, $matches);
|
|
||||||
|
|
||||||
$info = [];
|
|
||||||
foreach ($matches[1] as $class) {
|
|
||||||
$info[] = $namespace . $class;
|
|
||||||
}
|
|
||||||
return $info;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 注册composer自动加载
|
// 注册composer自动加载
|
||||||
private static function registerComposerLoader()
|
private static function registerComposerLoader()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ use think\Exception;
|
|||||||
|
|
||||||
class Redis extends SessionHandler
|
class Redis extends SessionHandler
|
||||||
{
|
{
|
||||||
|
/** @var \Redis */
|
||||||
protected $handler = null;
|
protected $handler = null;
|
||||||
protected $config = [
|
protected $config = [
|
||||||
'host' => '127.0.0.1', // redis主机
|
'host' => '127.0.0.1', // redis主机
|
||||||
@@ -35,8 +36,10 @@ class Redis extends SessionHandler
|
|||||||
/**
|
/**
|
||||||
* 打开Session
|
* 打开Session
|
||||||
* @access public
|
* @access public
|
||||||
* @param string $savePath
|
* @param string $savePath
|
||||||
* @param mixed $sessName
|
* @param mixed $sessName
|
||||||
|
* @return bool
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function open($savePath, $sessName)
|
public function open($savePath, $sessName)
|
||||||
{
|
{
|
||||||
@@ -72,6 +75,7 @@ class Redis extends SessionHandler
|
|||||||
* 读取Session
|
* 读取Session
|
||||||
* @access public
|
* @access public
|
||||||
* @param string $sessID
|
* @param string $sessID
|
||||||
|
* @return bool|string
|
||||||
*/
|
*/
|
||||||
public function read($sessID)
|
public function read($sessID)
|
||||||
{
|
{
|
||||||
@@ -83,6 +87,7 @@ class Redis extends SessionHandler
|
|||||||
* @access public
|
* @access public
|
||||||
* @param string $sessID
|
* @param string $sessID
|
||||||
* @param String $sessData
|
* @param String $sessData
|
||||||
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function write($sessID, $sessData)
|
public function write($sessID, $sessData)
|
||||||
{
|
{
|
||||||
@@ -97,16 +102,18 @@ class Redis extends SessionHandler
|
|||||||
* 删除Session
|
* 删除Session
|
||||||
* @access public
|
* @access public
|
||||||
* @param string $sessID
|
* @param string $sessID
|
||||||
|
* @return bool|void
|
||||||
*/
|
*/
|
||||||
public function destroy($sessID)
|
public function destroy($sessID)
|
||||||
{
|
{
|
||||||
return $this->handler->delete($this->config['session_name'] . $sessID) ? true : false;
|
$this->handler->delete($this->config['session_name'] . $sessID);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Session 垃圾回收
|
* Session 垃圾回收
|
||||||
* @access public
|
* @access public
|
||||||
* @param string $sessMaxLifeTime
|
* @param string $sessMaxLifeTime
|
||||||
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function gc($sessMaxLifeTime)
|
public function gc($sessMaxLifeTime)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user