add code
This commit is contained in:
parent
2bcb4b7c7f
commit
54121da25a
|
@ -14,7 +14,11 @@ use Core\http\Response;
|
|||
use Core\init\MyDB;
|
||||
use Core\init\RedisHelper;
|
||||
use DI\Attribute\Inject;
|
||||
|
||||
use Hyperf\Database\Connection;
|
||||
use Mockery;
|
||||
use \PDO;
|
||||
use Hyperf\Database\Query\Grammars\MySqlGrammar;
|
||||
use Core\BeanFactory;
|
||||
/**
|
||||
* @Bean()
|
||||
*/
|
||||
|
@ -38,6 +42,11 @@ class UserController
|
|||
*/
|
||||
public function test()
|
||||
{
|
||||
///$connection = new Connection(PDO::class);
|
||||
///$connection = $connection->setQueryGrammar(new MySqlGrammar());
|
||||
///$sql = $connection->table('eb_user')->toSql();
|
||||
// var_dump($connection->query($sql));
|
||||
//var_dump($user);
|
||||
//$this->db->select('select sleep(1)');
|
||||
//User::query('select sleep(3)');
|
||||
$user = User::first();
|
||||
|
@ -49,6 +58,7 @@ class UserController
|
|||
*/
|
||||
public function user(int $uid, Request $request, Response $response)
|
||||
{
|
||||
//BeanFactory::getBean('');
|
||||
//$user = $this->db->select('select * from eb_user where id = 1');
|
||||
return ['code' => 1, 'uid' => $uid];
|
||||
}
|
||||
|
|
8
boot.php
8
boot.php
|
@ -2,13 +2,13 @@
|
|||
require_once __DIR__ . '/vendor/autoload.php';
|
||||
require_once __DIR__ . "/app/config/define.php";
|
||||
\Swoole\Runtime::enableCoroutine(true);
|
||||
|
||||
// command swoole-cli boot.php start
|
||||
use Swoole\Process;
|
||||
|
||||
use Core\server\HttpServer;
|
||||
if ($argc == 2) {
|
||||
$cmd = $argv[1];
|
||||
if ($cmd == 'start') {
|
||||
$http = new Core\server\HttpServer('first');
|
||||
$http = new HttpServer();
|
||||
$http->run();
|
||||
} else if ($cmd == 'stop') {
|
||||
$getpid = intval(file_get_contents("./Buddha.pid")); //获取上一次程序运行的 master_id
|
||||
|
@ -21,7 +21,7 @@ if ($argc == 2) {
|
|||
if ($getpid && trim($getpid) != 0) {
|
||||
Process::kill($getpid);
|
||||
sleep(1);
|
||||
$http = new Core\server\HttpServer('first');
|
||||
$http = new Core\server\HttpServer();
|
||||
echo "restart done" . PHP_EOL;
|
||||
$http->run();
|
||||
} else {
|
||||
|
|
14
common/functions.php
Normal file
14
common/functions.php
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
if (! function_exists('env')) {
|
||||
/**
|
||||
* Gets the value of an environment variable.
|
||||
*
|
||||
* @param string $key
|
||||
* @param mixed $default
|
||||
* @return mixed
|
||||
*/
|
||||
function env($key, $default = null)
|
||||
{
|
||||
return Env::get($key, $default);
|
||||
}
|
||||
}
|
|
@ -7,7 +7,10 @@
|
|||
"psr-4": {
|
||||
"App\\": "app/",
|
||||
"Core\\":"core/"
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"common/functions.php"
|
||||
]
|
||||
},
|
||||
"authors": [
|
||||
{
|
||||
|
@ -19,6 +22,7 @@
|
|||
"nikic/fast-route": "^1.3",
|
||||
"php-di/php-di": "^7.0",
|
||||
"doctrine/annotations": "^2.0.1",
|
||||
"illuminate/database": "^10.48"
|
||||
"illuminate/database": "^10.48",
|
||||
"hyperf/database": "^3.1"
|
||||
}
|
||||
}
|
||||
|
|
1158
composer.lock
generated
1158
composer.lock
generated
File diff suppressed because it is too large
Load Diff
22
config/databases.php
Normal file
22
config/databases.php
Normal file
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
return [
|
||||
'default' => [
|
||||
'driver' => env('DB_DRIVER', 'mysql'),
|
||||
'host' => env('DB_HOST', 'localhost'),
|
||||
'port' => env('DB_PORT', 3306),
|
||||
'database' => env('DB_DATABASE', 'hyperf'),
|
||||
'username' => env('DB_USERNAME', 'root'),
|
||||
'password' => env('DB_PASSWORD', ''),
|
||||
'charset' => env('DB_CHARSET', 'utf8'),
|
||||
'collation' => env('DB_COLLATION', 'utf8_unicode_ci'),
|
||||
'prefix' => env('DB_PREFIX', ''),
|
||||
'pool' => [
|
||||
'min_connections' => 1,
|
||||
'max_connections' => 10,
|
||||
'connect_timeout' => 10.0,
|
||||
'wait_timeout' => 3.0,
|
||||
'heartbeat' => -1,
|
||||
'max_idle_time' => (float)env('DB_MAX_IDLE_TIME', 60),
|
||||
]
|
||||
],
|
||||
];
|
|
@ -21,10 +21,9 @@ class BeanFactory
|
|||
//初始容器Builder
|
||||
$builder = new ContainerBuilder();
|
||||
//启用注释 主要是用它的Inject注释
|
||||
$builder->useAttributes(true);
|
||||
$builder->useAttributes(false);
|
||||
//容器初始化
|
||||
self::$container = $builder->build();
|
||||
|
||||
$handlers = glob(ROOT_PATH . "/core/annotationhandlers/*.php");
|
||||
foreach ($handlers as $handler) {
|
||||
self::$handlers = array_merge(self::$handlers, require_once($handler));
|
||||
|
@ -86,6 +85,9 @@ class BeanFactory
|
|||
//AnnotationRegistry::loadAnnotationClass($class);
|
||||
//获取所有类的注释
|
||||
$classAnnos = $reader->getClassAnnotations($refClass);
|
||||
if ($refClass->getName() == 'Core\server\HttpServer') {
|
||||
continue;
|
||||
}
|
||||
$instance = self::$container->get($refClass->getName());
|
||||
foreach ($classAnnos as $classAnno) {
|
||||
//根据注释的类型获取对应处理方法
|
||||
|
|
|
@ -4,15 +4,19 @@ namespace Core\server;
|
|||
|
||||
use Swoole\Http\Server;
|
||||
use Core\init\TestProcess;
|
||||
use Core\BeanFactory;
|
||||
#[Injectable(lazy: true)]
|
||||
class HttpServer
|
||||
{
|
||||
private $server;
|
||||
private $dispatcher;
|
||||
|
||||
public function __construct($str = 'dd')
|
||||
private $host = 'localhost';
|
||||
private $port = 8086;
|
||||
public function __construct()
|
||||
{
|
||||
if ($str == 'dd') return;
|
||||
$this->server = new Server("0.0.0.0",8085);
|
||||
$this->server = new Server($this->host,$this->port);
|
||||
echo 'host: http://' . $this->host . ':' . $this->port . PHP_EOL;
|
||||
//配置参数 https://wiki.swoole.com/#/server/setting
|
||||
$this->server->set(array(
|
||||
'worker_num' => 2, //设置启动的 Worker 进程数。【默认值:CPU 核数】
|
||||
|
@ -53,10 +57,12 @@ class HttpServer
|
|||
switch($routeInfo[0]) {
|
||||
case \FastRoute\Dispatcher::NOT_FOUND:
|
||||
$response->status(404);
|
||||
$response->write(json_encode(['code' => 404, 'msg' => 'NOT_FOUND']));
|
||||
$response->end();
|
||||
break;
|
||||
case \FastRoute\Dispatcher::METHOD_NOT_ALLOWED:
|
||||
$response->status(405);
|
||||
$response->write(json_encode(['code' => 405, 'msg' => 'METHOD_NOT_ALLOWED']));
|
||||
$response->end();
|
||||
break;
|
||||
case \FastRoute\Dispatcher::FOUND:
|
||||
|
|
35
daemon.php
35
daemon.php
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
use Swoole\Http\Server;
|
||||
use Swoole\Process;
|
||||
|
||||
if ($argc==2){
|
||||
$cmd = $argv[1];
|
||||
var_dump($argv);
|
||||
if ($cmd=='start'){
|
||||
$http = new Swoole\Http\Server('0.0.0.0',80);
|
||||
//配置参数 https://wiki.swoole.com/#/server/setting
|
||||
$http->set(array(
|
||||
'worker_num'=>1, //设置启动的 Worker 进程数。【默认值:CPU 核数】
|
||||
'daemonize'=>false // 使用docker 不需要设置守护进程
|
||||
));
|
||||
$http->on('request',function ($req,$res){
|
||||
|
||||
});
|
||||
|
||||
$http->on('Start',function (Server $server ){
|
||||
$mid = $server->master_pid; //返回当前服务器主进程的 PID。
|
||||
file_put_contents("./ttt.pid",$mid); //会覆盖
|
||||
});
|
||||
$http->start();
|
||||
|
||||
} elseif ($cmd=='stop'){
|
||||
$mid = intval(file_get_contents("./ttt.pid"));
|
||||
if (trim($mid)){
|
||||
Process::kill($mid);
|
||||
}
|
||||
} else {
|
||||
echo '无效命令';
|
||||
}
|
||||
} else {
|
||||
echo '无效命令';
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
<?php
|
||||
require_once __DIR__.'/vendor/autoload.php';
|
||||
require_once __DIR__."/app/config/define.php";
|
||||
$db = new \Core\init\MyDB();
|
||||
$users = $db->table('user')->get();
|
||||
foreach ($users as $user){
|
||||
echo $user->nickname;
|
||||
}
|
11
index.php
11
index.php
|
@ -1,11 +0,0 @@
|
|||
<?php
|
||||
|
||||
$a = 444;
|
||||
|
||||
try {
|
||||
$b = 10 / 0;
|
||||
}catch (Exception $e) {
|
||||
//echo $e->getMessage();
|
||||
} finally {
|
||||
var_dump('hahaha cuo la ba');
|
||||
}
|
24
pool.php
24
pool.php
|
@ -1,24 +0,0 @@
|
|||
<?php
|
||||
require __DIR__."/vendor/autoload.php";
|
||||
|
||||
go(function (){
|
||||
$pool = new \baihand\pool\CoMySqlPool();
|
||||
$pool->initPool();
|
||||
for ($i = 0; $i < 5; $i++) {
|
||||
go(function () use($pool,$i) {
|
||||
$conn = $pool->getConnection();
|
||||
defer(function () use ($pool,$conn){
|
||||
//defer写在前 是怕后面的执行语句不一定成功
|
||||
$pool->close($conn); // 放回链接
|
||||
//channel对connection进行了引用
|
||||
});
|
||||
$state = $conn->query(" select $i");
|
||||
|
||||
var_dump($state);
|
||||
});
|
||||
}
|
||||
while (true){
|
||||
echo "链接了\n";
|
||||
\Swoole\Coroutine::sleep(1);
|
||||
}
|
||||
});
|
|
@ -1,8 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once __DIR__.'/vendor/autoload.php';
|
||||
require_once __DIR__."/app/config/define.php";
|
||||
Core\BeanFactory::init();
|
||||
|
||||
$routerCollector= \Core\BeanFactory::getBean("RouterCollector");
|
||||
var_dump($routerCollector->routes);
|
|
@ -1,171 +0,0 @@
|
|||
Exception: STATUS_ACCESS_VIOLATION at rip=0001008C745A
|
||||
rax=00000001008308E0 rbx=0000000A005440B0 rcx=0000000000000000
|
||||
rdx=0000000000000000 rsi=00000007FFFF8F10 rdi=0000000000000058
|
||||
r8 =0000000000000000 r9 =0000000A0012F108 r10=0000000800000000
|
||||
r11=00000003FF76D542 r12=0000000000000000 r13=00006FFFFFDD0008
|
||||
r14=00000007FFFF8FA0 r15=0000000100B7F110
|
||||
rbp=00000001015C881F rsp=00000007FFFF8E20
|
||||
program=D:\software\swoole-cli\bin\swoole-cli.exe, pid 514, thread main
|
||||
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
|
||||
Stack trace:
|
||||
Frame Function Args
|
||||
0001015C881F 0001008C745A (000000000050, 0001015C881F, 0001015C87F0, 6FFFFFDD0008) swoole-cli.exe+0x4C745A
|
||||
0001015C881F 0001008CED83 (000A00000010, 0000000001D3, 000A0052E228, 000000000000) swoole-cli.exe+0x4CED83
|
||||
0001015C881F 00010090A9F4 (7FFDE0E60453, 000000000088, 000000002028, 000100911940) swoole-cli.exe+0x50A9F4
|
||||
00010171FBA0 000100922BC9 (000100922940, 00000000000C, 6FFFFFE134C0, 6FFFFF617C58) swoole-cli.exe+0x522BC9
|
||||
000000200308 0001009231A2 (000100B7F030, 000A003C4C30, 000100A6A343, 000A004169A8) swoole-cli.exe+0x5231A2
|
||||
000000200308 00010091AA75 (6FFFFFFB4710, 6FFFFFE132C0, 6FFFFFF04008, 6FFFFFE13350) swoole-cli.exe+0x51AA75
|
||||
000000200308 0001008A4A4A (0007FFFF9320, 000000000003, 000000000008, 6FFFFFE13330) swoole-cli.exe+0x4A4A4A
|
||||
000000200308 000100A4BA74 (0001017238E0, 6FFFFFE77D00, 0001009F00C6, 000000000000) swoole-cli.exe+0x64BA74
|
||||
000000000000 000100A4DA72 (000700000008, 0007FFFFA630, 0007FFFFB8B0, 0007FFFFCC38) swoole-cli.exe+0x64DA72
|
||||
0007FFFF9320 0001009E2A2B (0001009CA40D, 000000000000, 000000000000, 0007FFFFB810) swoole-cli.exe+0x5E2A2B
|
||||
0007FFFFA380 00010097E3E3 (00010097C6F0, 000100BBCEE8, 00010097C6E0, 000700000000) swoole-cli.exe+0x57E3E3
|
||||
000000000000 000100AC434D (0007FFFFCC30, 000000000025, 0000FF52424B, 0007FFFFCA84) swoole-cli.exe+0x6C434D
|
||||
000000000000 000100BDD758 (0007FFFFCC30, 000000000000, 7FFD49F48035, 0007FFFFCC50) swoole-cli.exe+0x7DD758
|
||||
0007FFFFCD30 7FFD49F480A1 (000000000000, 000000000000, 000000000000, 000000000000) cygwin1.dll+0x80A1
|
||||
0007FFFFFFF0 7FFD49F45C86 (000000000000, 000000000000, 000000000000, 000000000000) cygwin1.dll+0x5C86
|
||||
0007FFFFFFF0 7FFD49F45D34 (000000000000, 000000000000, 000000000000, 000000000000) cygwin1.dll+0x5D34
|
||||
End of stack trace
|
||||
Loaded modules:
|
||||
000100400000 swoole-cli.exe
|
||||
7FFDE0E50000 ntdll.dll
|
||||
7FFDDF570000 KERNEL32.DLL
|
||||
7FFDDE170000 KERNELBASE.dll
|
||||
0003F3A30000 cygMagickCore-7.Q16HDRI-7.dll
|
||||
0003F38F0000 cygMagickWand-7.Q16HDRI-7.dll
|
||||
0003FFE60000 cygbrotlidec-1.dll
|
||||
7FFDDF190000 ADVAPI32.dll
|
||||
0003F3540000 cygbrotlienc-1.dll
|
||||
7FFDE05C0000 msvcrt.dll
|
||||
0003FFE40000 cygbz2-1.dll
|
||||
7FFDDF410000 sechost.dll
|
||||
0003F33C0000 cygcares-2.dll
|
||||
7FFDDE520000 bcrypt.dll
|
||||
7FFDDEB80000 RPCRT4.dll
|
||||
0003FFAB0000 cygcurl-4.dll
|
||||
7FFDE03D0000 GDI32.dll
|
||||
7FFDDE550000 win32u.dll
|
||||
7FFD49F40000 cygwin1.dll
|
||||
0003FFB60000 cygcrypto-1.1.dll
|
||||
0003F41C0000 cygexslt-0.dll
|
||||
7FFDDE580000 gdi32full.dll
|
||||
7FFDDE7C0000 msvcp_win.dll
|
||||
0003FF580000 cyggmp-10.dll
|
||||
7FFDDE6A0000 ucrtbase.dll
|
||||
7FFDDEF30000 USER32.dll
|
||||
0003F2980000 cygfreetype-6.dll
|
||||
0003F20F0000 cygicui18n72.dll
|
||||
0003F23D0000 cygiconv-2.dll
|
||||
0003EEAE0000 cygjpeg-8.dll
|
||||
0003F1F30000 cygicuuc72.dll
|
||||
0003FF4F0000 cygicuio72.dll
|
||||
0003EE7B0000 cygonig-5.dll
|
||||
0003EE570000 cygpng16-16.dll
|
||||
0003FE600000 cygreadline7.dll
|
||||
0003FE470000 cygssl-1.1.dll
|
||||
0003FDF20000 cygxml2-2.dll
|
||||
0003F4180000 cygxslt-1.dll
|
||||
0003F5940000 cygsqlite3-0.dll
|
||||
0003EDC80000 cygyaml-0-2.dll
|
||||
0003FDF00000 cygz.dll
|
||||
0003ED690000 cygzip-5.dll
|
||||
0003FF760000 cyggcc_s-seh-1.dll
|
||||
0003FE290000 cygstdc++-6.dll
|
||||
0003F37B0000 cygX11-6.dll
|
||||
0003F3730000 cygXext-6.dll
|
||||
0003FF540000 cyggomp-1.dll
|
||||
0003F3420000 cygcairo-2.dll
|
||||
0003F3380000 cygcgraph-6.dll
|
||||
0003F3160000 cygdjvulibre-21.dll
|
||||
0003F2B80000 cygfontconfig-1.dll
|
||||
0003F2AE0000 cygfpx-1.dll
|
||||
0003F2F20000 cygfftw3-3.dll
|
||||
0003F2590000 cygglib-2.0-0.dll
|
||||
0003F2520000 cyggobject-2.0-0.dll
|
||||
0003EC0E0000 cyggs-9.dll
|
||||
0003EEBA0000 cygjbig-2.dll
|
||||
0003EEA80000 cyglcms2-2.dll
|
||||
0003F0E70000 cyggvc-6.dll
|
||||
0003EEA60000 cyglqr-1-0.dll
|
||||
0003FED10000 cyglzma-5.dll
|
||||
0003EE700000 cygpango-1.0-0.dll
|
||||
0003EE6E0000 cygpangocairo-1.0-0.dll
|
||||
0003EE240000 cygraqm-0.dll
|
||||
0003EE020000 cygrsvg-2-2.dll
|
||||
0003EDD80000 cygwebp-7.dll
|
||||
0003FFE80000 cygbrotlicommon-1.dll
|
||||
0003EE060000 cygraw_r-16.dll
|
||||
0003EDE10000 cygtiff-6.dll
|
||||
0003EDD30000 cygwebpdemux-2.dll
|
||||
0003EDD10000 cygwebpmux-3.dll
|
||||
0003FE750000 cygidn2-0.dll
|
||||
0003FF4A0000 cyggssapi_krb5-2.dll
|
||||
0003FF730000 cyggsasl-18.dll
|
||||
0003FEF80000 cyglber-2.dll
|
||||
0003FEE60000 cygldap-2.dll
|
||||
0003FE710000 cygnghttp2-14.dll
|
||||
0003FE6B0000 cygpsl-5.dll
|
||||
0003FE500000 cygssh2-1.dll
|
||||
0003FDE50000 cygzstd-1.dll
|
||||
0003FF640000 cyggcrypt-20.dll
|
||||
0003EA300000 cygicudata72.dll
|
||||
0003FE9B0000 cygncursesw-10.dll
|
||||
0003ED720000 cygcrypto-1.0.0.dll
|
||||
0003EDCE0000 cygxcb-1.dll
|
||||
0003EE5D0000 cygpixman-1-0.dll
|
||||
0003EDCC0000 cygxcb-render-0.dll
|
||||
0003EDCB0000 cygxcb-shm-0.dll
|
||||
0003F3670000 cygXrender-1.dll
|
||||
0003F33A0000 cygcdt-5.dll
|
||||
0003FF810000 cygexpat-1.dll
|
||||
0003FF2E0000 cygintl-8.dll
|
||||
0003FE0A0000 cyguuid-1.dll
|
||||
0003FE7B0000 cygpcre-1.dll
|
||||
0003FF7A0000 cygffi-6.dll
|
||||
0003F3610000 cygXt-6.dll
|
||||
0003FF370000 cygidn-12.dll
|
||||
0003EE6A0000 cygpaper-1.dll
|
||||
0003F5E50000 cygtiff-7.dll
|
||||
0003F3FE0000 cygltdl-7.dll
|
||||
0003EE680000 cygpathplan-4.dll
|
||||
0003EDE90000 cygthai-0.dll
|
||||
0003EE6C0000 cygpangoft2-1.0-0.dll
|
||||
0003F2960000 cygfribidi-0.dll
|
||||
0003F5ED0000 cygharfbuzz-0.dll
|
||||
0003F3330000 cygcroco-0.6-3.dll
|
||||
0003F2820000 cyggdk_pixbuf-2.0-0.dll
|
||||
0003F2690000 cyggio-2.0-0.dll
|
||||
0003FEDB0000 cygsharpyuv-0.dll
|
||||
0003EEBC0000 cygjasper-4.dll
|
||||
0003F3300000 cygdeflate-0.dll
|
||||
0003FF0D0000 cygk5crypto-3.dll
|
||||
0003FF000000 cygkrb5-3.dll
|
||||
0003FEFE0000 cygkrb5support-0.dll
|
||||
0003FFE30000 cygcom_err-2.dll
|
||||
0003FE960000 cygntlm-0.dll
|
||||
0003FE590000 cygsasl2-3.dll
|
||||
0003F1AF0000 cygunistring-5.dll
|
||||
0003FF510000 cyggpg-error-0.dll
|
||||
0003F3750000 cygXdmcp-6.dll
|
||||
0003F37A0000 cygXau-6.dll
|
||||
0003F3ED0000 cygICE-6.dll
|
||||
0003F38E0000 cygSM-6.dll
|
||||
0003F3320000 cygdatrie-1.dll
|
||||
0003F24F0000 cyggraphite2-3.dll
|
||||
0003F2580000 cyggmodule-2.0-0.dll
|
||||
7FFDDD8A0000 CRYPTBASE.DLL
|
||||
7FFDDE9D0000 bcryptPrimitives.dll
|
||||
7FFDDF530000 IMM32.DLL
|
||||
7FFDD5290000 netapi32.dll
|
||||
7FFDD5270000 SAMCLI.DLL
|
||||
7FFDD96A0000 SAMLIB.dll
|
||||
7FFDDCBD0000 NETUTILS.DLL
|
||||
7FFDDCD50000 authz.dll
|
||||
7FFDDCBE0000 iphlpapi.dll
|
||||
7FFDDCC10000 DNSAPI.dll
|
||||
7FFDE03C0000 NSI.dll
|
||||
7FFDD8360000 dhcpcsvc6.DLL
|
||||
7FFDD8380000 dhcpcsvc.DLL
|
||||
7FFDDB630000 WINNSI.DLL
|
||||
7FFDDECA0000 ws2_32.dll
|
||||
7FFDDD650000 mswsock.dll
|
12
test.php
12
test.php
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
require_once __DIR__.'/vendor/autoload.php';
|
||||
|
||||
use baihand\core\BeanFactory;
|
||||
|
||||
BeanFactory::init();
|
||||
|
||||
|
||||
/*$myRedis = ClassFactory::getBean(MyRedis::class);
|
||||
var_dump($myRedis);
|
||||
$myRedis = ClassFactory::getBean(MyUser::class);
|
||||
var_dump($myRedis);*/
|
27
va.php
27
va.php
|
@ -1,27 +0,0 @@
|
|||
<?php
|
||||
require_once __DIR__.'/vendor/autoload.php';
|
||||
|
||||
/*use \Doctrine\Common\Annotations\AnnotationReader;
|
||||
use \Doctrine\Common\Annotations\AnnotationRegistry;
|
||||
use \App\test\MyRedis;
|
||||
use \App\annotations\Value;
|
||||
|
||||
//获取反射对象 MyRedis
|
||||
$rc = new ReflectionClass(MyRedis::class);
|
||||
//获取反射对象的变量
|
||||
$p = $rc->getProperty("conn_url");
|
||||
var_dump($p);
|
||||
$reader = new AnnotationReader();
|
||||
//获取变量的注释中@Value的name
|
||||
$anno = $reader->getPropertyAnnotation($p,Value::class);
|
||||
var_dump($anno);
|
||||
echo $anno->name;*/
|
||||
|
||||
|
||||
$builder = new DI\ContainerBuilder();
|
||||
$builder->useAttributes(true);
|
||||
$container = $builder->build();
|
||||
$myUser = $container->get(\baihand\test\MyUser2::class);
|
||||
var_dump($myUser);
|
||||
var_dump($myUser->getAllUsers());
|
||||
var_dump($myUser->myredis->getValue());
|
Loading…
Reference in New Issue
Block a user