当前位置: 首页 > news >正文

四川省城市建设培训中心 网站哪个网站做高中的题好

四川省城市建设培训中心 网站,哪个网站做高中的题好,win2008做的网站打不开,绿植租摆网站建设一、原理描述 hyperf中#xff0c;不难发现比如自定义控制器中获取参数#xff0c;hyperf.php中容器获取#xff0c;传入的都是接口#xff0c;而不是实体类。 这是因为框架中的配置文件有设置对应抽象类的子类#xff0c;框架加载的时候将其作为数组#xff0c;使用的…一、原理描述 hyperf中不难发现比如自定义控制器中获取参数hyperf.php中容器获取传入的都是接口而不是实体类。 这是因为框架中的配置文件有设置对应抽象类的子类框架加载的时候将其作为数组使用的时候通过数组对应子类。 实现这个功能就需要composer autoload 代理即生成的composer.lock文件再处理。但是需要其余对应的composer拉取的程序在composer.json中设置对应数据。 例如 //vendor\hyperf\http-server\composer.json extra: {branch-alias: {dev-master: 2.2-dev},hyperf: {config: Hyperf\\HttpServer\\ConfigProvider}} //vendor\hyperf\db-connection\composer.jsonextra: {branch-alias: {dev-master: 2.2-dev},hyperf: {config: Hyperf\\DbConnection\\ConfigProvider}} #vendor/hyperf/http-server/src/ConfigProvider.php namespace Hyperf\HttpServer;use Hyperf\HttpServer\Contract\RequestInterface; use Hyperf\HttpServer\Contract\ResponseInterface; use Psr\Http\Message\ServerRequestInterface;class ConfigProvider {public function __invoke(): array{return [dependencies [RequestInterface::class Request::class,ServerRequestInterface::class Request::class,ResponseInterface::class Response::class,],annotations [scan [paths [__DIR__,],],],];} }#vendor\hyperf\db-connection\src\ConfigProvider.php namespace Hyperf\DbConnection;use Hyperf\Database\Commands\Migrations\FreshCommand; use Hyperf\Database\Commands\Migrations\GenMigrateCommand; use Hyperf\Database\Commands\Migrations\InstallCommand; use Hyperf\Database\Commands\Migrations\MigrateCommand; use Hyperf\Database\Commands\Migrations\RefreshCommand; use Hyperf\Database\Commands\Migrations\ResetCommand; use Hyperf\Database\Commands\Migrations\RollbackCommand; use Hyperf\Database\Commands\Migrations\StatusCommand; use Hyperf\Database\Commands\ModelCommand; use Hyperf\Database\Commands\Seeders\GenSeederCommand; use Hyperf\Database\Commands\Seeders\SeedCommand; use Hyperf\Database\ConnectionResolverInterface; use Hyperf\Database\Connectors\ConnectionFactory; use Hyperf\Database\Connectors\MySqlConnector; use Hyperf\Database\Migrations\MigrationRepositoryInterface; use Hyperf\DbConnection\Listener\RegisterConnectionResolverListener; use Hyperf\DbConnection\Pool\PoolFactory;class ConfigProvider {public function __invoke(): array{return [dependencies [PoolFactory::class PoolFactory::class,ConnectionFactory::class ConnectionFactory::class,ConnectionResolverInterface::class ConnectionResolver::class,db.connector.mysql MySqlConnector::class,MigrationRepositoryInterface::class DatabaseMigrationRepositoryFactory::class,],commands [ModelCommand::class,GenMigrateCommand::class,InstallCommand::class,MigrateCommand::class,FreshCommand::class,RefreshCommand::class,ResetCommand::class,RollbackCommand::class,StatusCommand::class,GenSeederCommand::class,SeedCommand::class,],listeners [RegisterConnectionResolverListener::class,],annotations [scan [paths [__DIR__,],],],publish [[id config,description The config for database.,source __DIR__ . /../publish/databases.php,destination BASE_PATH . /config/autoload/databases.php,],[id query-listener,description The listener of database to record log.,source __DIR__ . /../publish/DbQueryExecutedListener.php,destination BASE_PATH . /app/Listener/DbQueryExecutedListener.php,],],];} }以bin/hyperf.php为例,加载autoload.php文件执行Hyperf\Di\ClassLoader::init()设置执行 $application-run();输出命令。 1.1 Hyperf\Di\ClassLoader::init() Hyperf\Di\ClassLoader::init() 加载配置文件、composer.lock并合并数据。 主要使用Composer::getMergedExtra(hyperf)[config]就是composer.lock中extra中的hyperf中config值。 根据config中的值调用其__invoke()获取数组并设置。 在上述过程中涉及ProviderConfig::load();运行会对ProviderConfig::$providerConfigs数据进行初始化。 ProviderConfig::load()获取的值中包括每个composer拉取的程序中ConfigProvider.php文件中的内容当然也就包括commands。 ProviderConfig::load()在之后也会被使用。 ClassLoader::init()会调用其构造函数打印ClassLoader构造中的$config ScanConfig::instance($configDir);结果可以看到类内的成员变量包括cacheable、configDir、paths、collectors、ignoreAnnotations、globalImports、dependencies、classMap。 就bin/hyperf.php而言此时并没有使用配置中的commands数据。 1.2 /config/container.php hyperf.php中随后加载/config/container.php。 container.php中通过$container new Container((new DefinitionSourceFactory(true))());调用DefinitionSourceFactory的构造和__invoke()方法。 DefinitionSourceFactory::__invoke()中通过ProviderConfig::load();加载配置获取配置中的dependencies数组最后返回key和object对应的数组。 container.php文件最后返回 Hyperf\Di\Container类其构造参数的为DefinitionSourceFactory::__invoke()返回的数组。 Hyperf\Di\Container构造方法中会设置$this-definitionSource和$this-resolvedEntries。 1.3 $container-get() $application对象通过$application $container-get(Hyperf\Contract\ApplicationInterface::class);获取。调用$container-get()会先判断Container::resolvedEntries是否有数据有则返回否则使用Container::make()使用Container::definitionSource创建数据。最后返回对应的实体类。 即为$application $container-get(Hyperf\Contract\ApplicationInterface::class);返回ApplicationFactory类ApplicationFactory构造最后返回Symfony\Component\Console\Application类。 Hyperf\Contract\ApplicationInterface::__invoke()会先执行。其中运行Application::__construct(),设置默认值比如默认命令为“list”。__invoke()还会将commands数据添加到Symfony\Component\Console\Application中。 1.4 Application::run() 调用 $application-run();就是调用Symfony\Component\Console\Application::run()。 对于配置文件中commands的处理、console的使用也是在Application::run()方法中。 Application::run()调用Application::doRun()。 doRun()中执行默认的命令“list”运行Symfony\Component\Console\Command\ListCommand::execute(),其中运行DescriptorHelper::__construct()。 ListCommand::execute()通过DescriptorHelper::describe()运行TextDescriptor(默认)的父类Descriptor::describe()。 Descriptor::describe()中通过其子类实现的describeApplication()方法,获取项目中的commands(配置中的commands),这里即为TextDescriptor::describeApplication()。 TextDescriptor::describeApplication()中通过调用 ConsoleOutput-write()输出内容。 每个命令的execute()方法通过其父类Symfony\Component\Console\Command:run()调用。 dorun()中调用doRunCommand()这其中会调用Command:run()。 二、原理总结
http://www.dnsts.com.cn/news/88061.html

相关文章:

  • 商城网站作品有口碑的大连网站建设
  • 建站之星破解版下载承德网站
  • 抽奖网站怎么做怎么查询网站后台地址
  • 网络营销专业的职业生涯规划优化关键词的正确方法
  • 用什么网站做微信推送成都专业网站制作建设
  • 网站备案信息更改做网站图片像素
  • 最专业的网站设计公司有哪些精准客户运营推广
  • 玉溪网站开发做网站要哪些技术
  • 网站建设四步骤厦门建站服务
  • 一般网站的字体是什么快速建手机网站
  • 微网站建设比较全面的是做外贸生意用哪个网站最好
  • 综合电子商务型企业网站有哪些如何建设本地网站
  • 邯郸市建设局网站政策网页 开发
  • 龙华区住房和建设局官方网站wordpress网站描述
  • 做饰品网站金融产品做网站推广
  • 做电子商务网站公司做视频网站想用家庭网络
  • 网站开发流程指什么网站建设实验周志与总结
  • 建设二手网站的建设费用包括自助建站基础工作主要包括
  • 温岭建设公司网站软文网官网
  • 网站如何实现临时聊天个人网站模板源码
  • 河南网站建设费用自己怎么做网站卖东西
  • 什么网站做电子章做得好备案个人网站名称
  • 化妆品网站设计欣赏中学加强校园网站建设
  • 网站开发文件dw网页设计位置1
  • 如何做擦边球网站张店做网站公司
  • 荣耀商城官网网站crm登录系统
  • 农业建设管理信息网站可以自己买个服务器做网站吗
  • 成都网站建设制作介绍家乡网页html代码
  • 网站账户上的余额分录怎么做哪个网站可以帮助做数学题
  • 做网站策划遇到的问题wordpress云采插件