Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
services
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tencent
services
Commits
389de4d5
Commit
389de4d5
authored
Dec 23, 2019
by
xmy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:oem
parent
2c0716aa
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
147 additions
and
145 deletions
+147
-145
src/Common/Config/CfgCenter.php
+147
-145
No files found.
src/Common/Config/CfgCenter.php
View file @
389de4d5
<?php
<?php
namespace
Hdll\Services\Common\Config
;
namespace
Hdll\Services\Common\Config
;
use
Swoft\Redis\Redis
;
use
Swoft\Redis\Redis
;
use
Swoft\App
;
use
Swoft\App
;
class
CfgCenter
class
CfgCenter
{
{
/**
/**
* 读取指定的配置项 - 返回对象格式
* 读取指定的配置项 - 返回对象格式
* (所有配置项,需预先添加到数据库中)
* (所有配置项,需预先添加到数据库中)
* 方法一:
* 方法一:
* $value = CfgCenter::get('qCloud>Weapp>Region');
* $value = CfgCenter::get('qCloud>Weapp>Region');
* var_dump($value); // 输出:ap-shanghai
* var_dump($value); // 输出:ap-shanghai
* 方法二:
* 方法二:
* $cfgdata = CfgCenter::get('qCloud');
* $cfgdata = CfgCenter::get('qCloud');
* var_dump($cfgdata->Weapp->Region); // 输出:ap-shanghai
* var_dump($cfgdata->Weapp->Region); // 输出:ap-shanghai
*
*
* @param string $keyStr
* @param string $keyStr
* @param string $default 默认返回值
* @param string $default 默认返回值
* @return mixed
* @return mixed
*/
*/
public
static
function
get
(
$keyStr
,
$default
=
''
)
public
static
function
get
(
$keyStr
,
$default
=
''
)
{
{
$data
=
self
::
_get
(
$keyStr
);
$data
=
self
::
_get
(
$keyStr
);
if
(
$data
==
''
)
{
if
(
$data
==
''
)
{
return
$default
;
return
$default
;
}
}
return
$data
;
return
$data
;
}
}
/**
/**
* 读取指定的配置项 - 返回数组格式
* 读取指定的配置项 - 返回数组格式
* (所有配置项,需预先添加到数据库中)
* (所有配置项,需预先添加到数据库中)
* 方法一:
* 方法一:
* $value = CfgCenter::get('qCloud>Weapp>Region');
* $value = CfgCenter::get('qCloud>Weapp>Region');
* var_dump($value); // 输出:ap-shanghai
* var_dump($value); // 输出:ap-shanghai
* 方法二:
* 方法二:
* $cfgdata = CfgCenter::get('qCloud');
* $cfgdata = CfgCenter::get('qCloud');
* var_dump($cfgdata['Weapp']['Region']); // 输出:ap-shanghai
* var_dump($cfgdata['Weapp']['Region']); // 输出:ap-shanghai
*
*
* @param string $keyStr
* @param string $keyStr
* @param string $default 默认返回值
* @param string $default 默认返回值
* @return mixed
* @return mixed
*/
*/
public
static
function
getArray
(
$keyStr
,
$default
=
''
)
public
static
function
getArray
(
$keyStr
,
$default
=
''
)
{
{
$data
=
self
::
_get
(
$keyStr
);
$data
=
self
::
_get
(
$keyStr
);
if
(
$data
==
''
)
{
if
(
$data
==
''
)
{
return
$default
;
return
$default
;
}
}
if
(
is_object
(
$data
))
{
if
(
is_object
(
$data
))
{
return
json_decode
(
json_encode
(
$data
),
true
);
return
json_decode
(
json_encode
(
$data
),
true
);
}
}
return
$data
;
return
$data
;
}
}
private
static
function
_get
(
$keyStr
)
private
static
function
_get
(
$keyStr
,
$oemId
=
0
)
{
{
$keyArr
=
self
::
parseKeyStr
(
$keyStr
);
$keyArr
=
self
::
parseKeyStr
(
$keyStr
);
$rkey
=
implode
(
":"
,
$keyArr
);
$rkey
=
implode
(
":"
,
$keyArr
);
$redis
=
App
::
getBean
(
Redis
::
class
);
$redis
=
App
::
getBean
(
Redis
::
class
);
$data
=
$redis
->
get
(
"CONFIG_CENTER:"
.
$rkey
);
$data
=
$redis
->
get
(
"CONFIG_CENTER:"
.
$rkey
);
if
(
$data
===
null
)
{
if
(
$data
===
null
)
{
$res
=
self
::
dbFetch
(
$keyStr
);
$res
=
self
::
dbFetch
(
$keyStr
,
$oemId
);
if
(
$res
)
{
if
(
$res
)
{
if
(
is_object
(
$res
[
1
]))
{
if
(
is_object
(
$res
[
1
]))
{
$val
=
json_encode
(
$res
[
1
]);
$val
=
json_encode
(
$res
[
1
]);
}
else
{
}
else
{
$val
=
$res
[
1
];
$val
=
$res
[
1
];
}
}
$redis
->
set
(
"CONFIG_CENTER:"
.
$res
[
0
],
$val
,
3600
);
$redis
->
set
(
"CONFIG_CENTER:"
.
$res
[
0
],
$val
,
3600
);
return
$res
[
1
];
return
$res
[
1
];
}
}
}
}
$obj
=
json_decode
(
$data
);
$obj
=
json_decode
(
$data
);
if
(
$obj
&&
is_object
(
$obj
))
{
if
(
$obj
&&
is_object
(
$obj
))
{
return
$obj
;
return
$obj
;
}
}
return
$data
;
return
$data
;
}
}
protected
static
function
dbFetch
(
$keyStr
)
protected
static
function
dbFetch
(
$keyStr
,
$oemId
)
{
{
$keyArr
=
self
::
parseKeyStr
(
$keyStr
);
$keyArr
=
self
::
parseKeyStr
(
$keyStr
);
$name
=
array_shift
(
$keyArr
);
$name
=
array_shift
(
$keyArr
);
$dbConn
=
self
::
dbConnect
();
$dbConn
=
self
::
dbConnect
();
$result
=
$dbConn
->
select
(
"config"
,
[
'name'
,
'value'
],
[
'name'
=>
$name
]);
$result
=
$dbConn
->
select
(
"config"
,
[
'name'
,
'value'
],
[
'name'
=>
$name
,
'oemId'
=>
$oemId
]);
if
(
!
isset
(
$result
[
0
][
'value'
]))
{
if
(
!
isset
(
$result
[
0
][
'value'
]))
{
return
;
return
;
}
}
$valObj
=
json_decode
(
$result
[
0
][
'value'
]);
$valObj
=
json_decode
(
$result
[
0
][
'value'
]);
if
(
!
is_object
(
$valObj
))
{
if
(
!
is_object
(
$valObj
))
{
return
[
$name
,
$result
[
0
][
'value'
]];
return
[
$name
,
$result
[
0
][
'value'
]];
}
}
$keys
=
''
;
$keys
=
''
;
foreach
(
$keyArr
as
$key
)
{
foreach
(
$keyArr
as
$key
)
{
if
(
!
isset
(
$valObj
->
$key
))
{
if
(
!
isset
(
$valObj
->
$key
))
{
return
;
return
;
}
}
$keys
.=
$key
.
':'
;
$keys
.=
$key
.
':'
;
$valObj
=
$valObj
->
$key
;
$valObj
=
$valObj
->
$key
;
}
}
$rkey
=
$name
.
':'
.
trim
(
$keys
,
':'
);
$rkey
=
$name
.
':'
.
trim
(
$keys
,
':'
);
return
[
trim
(
$rkey
,
':'
),
$valObj
];
return
[
trim
(
$rkey
,
':'
),
$valObj
];
}
}
public
static
function
dbConnect
()
public
static
function
dbConnect
()
{
{
if
(
\env
(
'ENVIRONMENT'
,
''
)
==
''
)
{
if
(
\env
(
'ENVIRONMENT'
,
''
)
==
''
)
{
// 返回线上数据库连接
// 返回线上数据库连接
return
new
\Medoo\Medoo
([
return
new
\Medoo\Medoo
([
'database_type'
=>
'mysql'
,
'database_type'
=>
'mysql'
,
'database_name'
=>
'config_center'
,
'database_name'
=>
'config_center'
,
'server'
=>
'172.21.0.12'
,
'server'
=>
'172.21.0.12'
,
'username'
=>
'configer'
,
'username'
=>
'configer'
,
'password'
=>
'Cfgsu#2390f*_'
,
'password'
=>
'Cfgsu#2390f*_'
,
'charset'
=>
'utf8'
'charset'
=>
'utf8'
]);
]);
}
elseif
(
\env
(
'ENVIRONMENT'
,
''
)
==
'pre'
)
{
}
elseif
(
\env
(
'ENVIRONMENT'
,
''
)
==
'pre'
)
{
// 返回测试数据库连接
// 返回测试数据库连接
return
new
\Medoo\Medoo
([
return
new
\Medoo\Medoo
([
'database_type'
=>
'mysql'
,
'database_type'
=>
'mysql'
,
'database_name'
=>
'config_center'
,
'database_name'
=>
'config_center'
,
'server'
=>
'192.168.3.201'
,
'server'
=>
'192.168.3.201'
,
'username'
=>
'hdller'
,
'username'
=>
'hdller'
,
'password'
=>
'Hdlltest999'
,
'password'
=>
'Hdlltest999'
,
'charset'
=>
'utf8'
'charset'
=>
'utf8'
]);
]);
}
else
{
}
else
{
// 返回测试数据库连接
// 返回测试数据库连接
return
new
\Medoo\Medoo
([
return
new
\Medoo\Medoo
([
'database_type'
=>
'mysql'
,
'database_type'
=>
'mysql'
,
'database_name'
=>
'config_center'
,
'database_name'
=>
'config_center'
,
'server'
=>
'192.168.3.202'
,
'server'
=>
'192.168.3.202'
,
'username'
=>
'hdller'
,
'username'
=>
'hdller'
,
'password'
=>
'Hdlltest888'
,
'password'
=>
'Hdlltest888'
,
'charset'
=>
'utf8'
'charset'
=>
'utf8'
]);
]);
}
}
}
}
protected
static
function
parseKeyStr
(
$keyStr
)
protected
static
function
parseKeyStr
(
$keyStr
)
{
{
$keyArr
=
explode
(
">"
,
trim
(
$keyStr
,
'>'
));
$keyArr
=
explode
(
">"
,
trim
(
$keyStr
,
'>'
));
foreach
(
$keyArr
as
$k
=>
$v
)
{
foreach
(
$keyArr
as
$k
=>
$v
)
{
$v
=
trim
(
$v
);
$v
=
trim
(
$v
);
if
(
$v
==
""
)
{
if
(
$v
==
""
)
{
unset
(
$keyArr
[
$k
]);
unset
(
$keyArr
[
$k
]);
}
else
{
}
else
{
$keyArr
[
$k
]
=
$v
;
$keyArr
[
$k
]
=
$v
;
}
}
}
}
if
(
empty
(
$keyArr
))
{
if
(
empty
(
$keyArr
))
{
throw
new
\Exception
(
"[CfgCenter]未指定合法的Key"
);
throw
new
\Exception
(
"[CfgCenter]未指定合法的Key"
);
}
}
return
$keyArr
;
return
$keyArr
;
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment