Skip to content

Latest commit

 

History

History
764 lines (628 loc) · 31.4 KB

app.md

File metadata and controls

764 lines (628 loc) · 31.4 KB

Application运行时类的数据存储情况

instances=[
    'path'=>'app',
    'path.base'=>'\',
    'path.lang'=>'resoruces\lang',
    'path.config'=>'config',
    'path.public'=>'public',
    'path.storage'=>'storage',
    'path.database'=>'database',
    'path.resources'=>'resources',
    'path.bootstrap'=>'bootstrap',
    'app'=>'Application实例',
    'Illuminate\Container\Container::class'=>'Application实例',
    'Illuminate\Foundation\PackageManifest::class'=>'Illuminate\Foundation\PackageManifest实例',
    /**
    new PackageManifest(
                new Filesystem, $this->basePath(), $this->getCachedPackagesPath()
            )
    **/ 
    'app'=>'Application实例',
    'request'=>Illuminate\Http\Request实例,
    'config'=>Illuminate\Config\Repository实例,
    'routes'=>Illuminate\Routing\RouteCollection实例,
     Route::class=>Illuminate\Routing\Route实例【http请求匹配到的对象实例】,
    
]

bootedCallbacks=>[
            'function () {
                              $this->app['router']->getRoutes()->refreshNameLookups();
                              $this->app['router']->getRoutes()->refreshActionLookups();
                          }',
            console端运行时注册
            'function () {
                          $this->app->singleton(Schedule::class, function ($app) {
                                     return (new Schedule($this->scheduleTimezone()))
                                             ->useCache($this->scheduleCache());
                         });
                 
                         $schedule = $this->app->make(Schedule::class);
                 
                         $this->schedule($schedule);
                     }
            '
]

reboundCallbacks=[
    'request'=>'function ($app, $request) {
                            $app['url']->setRequest($request);
                        }',
      
    'routes'=>'function ($app, $routes) {
                               $app['url']->setRoutes($routes);
                           }',                  
]
//在FormRequestServiceProviders服务类运行时完成的
afterResolvingCallbacks = [
    Illuminate\Contracts\Validation\ValidatesWhenResolved=>function ($resolved) {
                                                                       $resolved->validateResolved();
                                                                   },
                                                              
]
//在FormRequestServiceProviders服务类运行时完成的
resolvingCallbacks = [
    Illuminate\Foundation\Http\FormRequest=>function ($request, $app) {
                                                        $request = FormRequest::createFrom($app['request'], $request);
                                            
                                                        $request->setContainer($app)->setRedirector($app->make(Redirector::class));
                                                    }     
]


bindings=[
//队列
    'queue'=>'function ($app) {
                         //Illuminate\Queue
                          return tap(new QueueManager($app), function ($manager) {
                              $this->registerConnectors($manager);
                          });
                      }',
                      
    'queue.connection'=>'function ($app) {
                                     return $app['queue']->connection();
                                 }',
                                 
    'queue.worker'=>'function () {
                                //Illuminate\Queue\Worker
                                 return new Worker(
                                     $this->app['queue'], $this->app['events'], $this->app[ExceptionHandler::class]
                                 );
                             }',
                             
    'queue.listener'=>'function () {
                                    //Illuminate\Queue\Worker
                                   return new Listener($this->app->basePath());
                               }',
                               
    'queue.failer'=>'function () {
                                 $config = $this->app['config']['queue.failed'];
                     
                                 return isset($config['table'])
                                             ? $this->databaseFailedJobProvider($config)
                                             : new NullFailedJobProvider;
                             }',
                             
    'Illuminate\Contracts\Bus\Dispatcher'=>'function ($app) {
    //Illuminate\Bus\Dispatcher
                                                        return new Dispatcher($app, function ($connection = null) use ($app) {
                                                            return $app[QueueFactoryContract::class]->connection($connection);
                                                        });
                                                    }',
                           
    'events'=>'function ($app) {
                           return (new Dispatcher($app))->setQueueResolver(function () use ($app) {
                               return $app->make(QueueFactoryContract::class);
                           });
                       }',
                       
    'redis'=>'function ($app) {
                          $config = $app->make('config')->get('database.redis', []);
              
                          return new RedisManager($app, Arr::pull($config, 'client', 'predis'), $config);
                      }',
                      
    'redis.connection'=>'function ($app) {
                                     return $app['redis']->connection();
                                 }',
                       
    'cache'=>'function ($app) {
    //Illuminate\Cache\CacheManager 缓存管理器
                          return new CacheManager($app);
                      }',
                      
    'cache.store'=>'function ($app) {
                                return $app['cache']->driver();
                            }',
                            
    'memcached.connector'=>'function () {
                                        return new MemcachedConnector;
                                    }',
                       
    'log'=>'function () {
                        return new LogManager($this->app);
                    }',  
                    
    'router'=>'function ($app) {
                           return new Router($app['events'], $app);
                       }',
                       
    'url'=>'function ($app) {
                        $routes = $app['router']->getRoutes();
        
                        $app->instance('routes', $routes);
            
                        $url = new UrlGenerator(
                            $routes, $app->rebinding(
                                'request', $this->requestRebinder()
                            ), $app['config']['app.asset_url']
                        );
  
                        $url->setSessionResolver(function () {
                            return $this->app['session'] ?? null;
                        });
            
                        $url->setKeyResolver(function () {
                            return $this->app->make('config')->get('app.key');
                        });
    
                        $app->rebinding('routes', function ($app, $routes) {
                            $app['url']->setRoutes($routes);
                        });
            
                        return $url;
                    }',    
                    
    'redirect'=>'function ($app) {
                             $redirector = new Redirector($app['url']);
    
                             if (isset($app['session.store'])) {
                                 $redirector->setSession($app['session.store']);
                             }
                 
                             return $redirector;
                         }',      
                         
    'ServerRequestInterface::class'=>'function ($app) {
                                                  return (new DiactorosFactory)->createRequest($app->make('request'));
                                              }',  
                                              
    'ResponseInterface::class'=>'function () {
                                             return new PsrResponse;
                                         }',  
                                         
    'Illuminate\Contracts\Routing\ResponseFactory'=>'function ($app) {
                                                   return new ResponseFactory($app[ViewFactoryContract::class], $app['redirect']);
                                               }',   
                                               
    'Illuminate\Routing\Contracts\ControllerDispatcher'=>'function ($app) {
                                                                      return new ControllerDispatcher($app);
                                                                  }',   
                                                                      
    'Illuminate\Contracts\Http\Kernel::class'=>'function ($container, $parameters = []) use (Illuminate\Contracts\Http\Kernel::class, App\Http\Kernel::class) {
                                              if ($abstract == $concrete) {
                                                  return $container->build($concrete);
                                              }
                                  
                                              return $container->resolve(
                                                  $concrete, $parameters, $raiseEvents = false
                                              );
                                          }',    
                                          
    'Illuminate\Contracts\Console\Kernel::class'=>'function ($container, $parameters = []) use (Illuminate\Contracts\Console\Kernel::class, App\Console\Kernel::class) {
                                                  if ($abstract == $concrete) {
                                                      return $container->build($concrete);
                                                  }
                                      
                                                  return $container->resolve(
                                                      $concrete, $parameters, $raiseEvents = false
                                                  );
                                              }',   
    'Illuminate\Contracts\Debug\ExceptionHandler::class'=>'function ($container, $parameters = []) use (Illuminate\Contracts\Debug\ExceptionHandler::class, App\Exceptions\Handler::class) {
                                                      if ($abstract == $concrete) {
                                                          return $container->build($concrete);
                                                      }
                                          
                                                      return $container->resolve(
                                                          $concrete, $parameters, $raiseEvents = false
                                                      );
                                                  }', 
                                                  
    'Illuminate\Contracts\Debug\ExceptionHandler::class'=>'function ($container, $parameters = []) use (Illuminate\Contracts\Debug\ExceptionHandler::class, App\Exceptions\Handler::class) {
                                                          if ($abstract == $concrete) {
                                                              return $container->build($concrete);
                                                          }
                                              
                                                          return $container->resolve(
                                                              $concrete, $parameters, $raiseEvents = false
                                                          );
                                                      }',  
    'db.factory'=>'function ($app) {
    //Illuminate\Database\Connectors\ConnectionFactory
                               return new ConnectionFactory($app);
                           }',       
    
    'db'=>'function ($app) {
    Illuminate\Database\DatabaseManager
                       return new DatabaseManager($app, $app['db.factory']);
                   }',     
                   
    'db.connection'=>' function ($app) {
                                  return $app['db']->connection();
                              }',   
    'Faker\Generator as FakerGenerator'=>'function ($app) {
                                                      return FakerFactory::create($app['config']->get('app.faker_locale', 'en_US'));
                                                  }',    
                                                  
    'Illuminate\Database\Eloquent\Factory as EloquentFactory'=>'function ($app) {
                                                                            return EloquentFactory::construct(
                                                                                $app->make(FakerGenerator::class), $this->app->databasePath('factories')
                                                                            );
                                                                        }', 
    'Illuminate\Contracts\Queue\EntityResolver'=>'function () {
    Illuminate\Database\Eloquent\QueueEntityResolver
                                                              return new QueueEntityResolver;
                                                          }',   
                     
    //view服务提供类注册【运行时自动保存】                                       
    'view'=>'function ($app) {
                         // Next we need to grab the engine resolver instance that will be used by the
                         // environment. The resolver will be used by an environment to get each of
                         // the various engine implementations such as plain PHP or Blade engine.
                         $resolver = $app['view.engine.resolver'];
             
                         $finder = $app['view.finder'];
                         /**
                          protected function createFactory($resolver, $finder, $events)
                             {
                             //Illuminate\View\Factory
                                 return new Factory($resolver, $finder, $events);
                             }
                         **/
                         $factory = $this->createFactory($resolver, $finder, $app['events']);
             
                         // We will also set the container instance on this view environment since the
                         // view composers may be classes registered in the container, which allows
                         // for great testable, flexible composers for the application developer.
                         $factory->setContainer($app);
             
                         $factory->share('app', $app);
             
                         return $factory;
                     }',   
                     
    'view.finder'=>'function ($app) {
    \\Illuminate\View
                                return new FileViewFinder($app['files'], $app['config']['view.paths']);
                            }',    
                            
    'view.engine.resolver'=>'function () {
    \\Illuminate\View
                                         $resolver = new EngineResolver;
                             
                                         foreach (['file', 'php', 'blade'] as $engine) {
                                             $this->{'register'.ucfirst($engine).'Engine'}($resolver);
                                         }
                                         
                                         /**
                                             function registerFileEngine($resolver)
                                             {
                                                 $resolver->register('file', function () {
                                                     return new FileEngine;
                                                 });
                                             }
                                         
                                             function registerPhpEngine($resolver)
                                             {
                                                 $resolver->register('php', function () {
                                                     return new PhpEngine;
                                                 });
                                             }
                                         
                                             function registerBladeEngine($resolver)
                                             {
                                                
                                                 $this->app->singleton('blade.compiler', function () {
                                                     return new BladeCompiler(
                                                         $this->app['files'], $this->app['config']['view.compiled']
                                                     );
                                                 });
                                         
                                                 $resolver->register('blade', function () {
                                                     return new CompilerEngine($this->app['blade.compiler']);
                                                 });
                                             }
                                         **/
                             
                                         return $resolver;
                                     }',                                                                                                                           
                                                                                                                                              
                                                                                                                                           
                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                
]

aliases=[
          Illuminate\Contracts\Container\Container] => app
          [Illuminate\Contracts\Foundation\Application] => app
          [Psr\Container\ContainerInterface] => app
          [Illuminate\Auth\AuthManager] => auth
          [Illuminate\Contracts\Auth\Factory] => auth
          [Illuminate\Contracts\Auth\Guard] => auth.driver
          [Illuminate\View\Compilers\BladeCompiler] => blade.compiler
          [Illuminate\Cache\CacheManager] => cache
          [Illuminate\Contracts\Cache\Factory] => cache
          [Illuminate\Cache\Repository] => cache.store
          [Illuminate\Contracts\Cache\Repository] => cache.store
          [Illuminate\Config\Repository] => config
          [Illuminate\Contracts\Config\Repository] => config
          [Illuminate\Cookie\CookieJar] => cookie
          [Illuminate\Contracts\Cookie\Factory] => cookie
          [Illuminate\Contracts\Cookie\QueueingFactory] => cookie
          [Illuminate\Encryption\Encrypter] => encrypter
          [Illuminate\Contracts\Encryption\Encrypter] => encrypter
          [Illuminate\Database\DatabaseManager] => db
          [Illuminate\Database\Connection] => db.connection
          [Illuminate\Database\ConnectionInterface] => db.connection
          [Illuminate\Events\Dispatcher] => events
          [Illuminate\Contracts\Events\Dispatcher] => events
          [Illuminate\Filesystem\Filesystem] => files
          [Illuminate\Filesystem\FilesystemManager] => filesystem
          [Illuminate\Contracts\Filesystem\Factory] => filesystem
          [Illuminate\Contracts\Filesystem\Filesystem] => filesystem.disk
          [Illuminate\Contracts\Filesystem\Cloud] => filesystem.cloud
          [Illuminate\Hashing\HashManager] => hash
          [Illuminate\Contracts\Hashing\Hasher] => hash.driver
          [Illuminate\Translation\Translator] => translator
          [Illuminate\Contracts\Translation\Translator] => translator
          [Illuminate\Log\LogManager] => log
          [Psr\Log\LoggerInterface] => log
          [Illuminate\Mail\Mailer] => mailer
          [Illuminate\Contracts\Mail\Mailer] => mailer
          [Illuminate\Contracts\Mail\MailQueue] => mailer
          [Illuminate\Auth\Passwords\PasswordBrokerManager] => auth.password
          [Illuminate\Contracts\Auth\PasswordBrokerFactory] => auth.password
          [Illuminate\Auth\Passwords\PasswordBroker] => auth.password.broker
          [Illuminate\Contracts\Auth\PasswordBroker] => auth.password.broker
          [Illuminate\Queue\QueueManager] => queue
          [Illuminate\Contracts\Queue\Factory] => queue
          [Illuminate\Contracts\Queue\Monitor] => queue
          [Illuminate\Contracts\Queue\Queue] => queue.connection
          [Illuminate\Queue\Failed\FailedJobProviderInterface] => queue.failer
          [Illuminate\Routing\Redirector] => redirect
          [Illuminate\Redis\RedisManager] => redis
          [Illuminate\Contracts\Redis\Factory] => redis
          [Illuminate\Http\Request] => request
          [Symfony\Component\HttpFoundation\Request] => request
          [Illuminate\Routing\Router] => router
          [Illuminate\Contracts\Routing\Registrar] => router
          [Illuminate\Contracts\Routing\BindingRegistrar] => router
          [Illuminate\Session\SessionManager] => session
          [Illuminate\Session\Store] => session.store
          [Illuminate\Contracts\Session\Session] => session.store
          [Illuminate\Routing\UrlGenerator] => url
          [Illuminate\Contracts\Routing\UrlGenerator] => url
          [Illuminate\Validation\Factory] => validator
          [Illuminate\Contracts\Validation\Factory] => validator
          [Illuminate\View\Factory] => view
          [Illuminate\Contracts\View\Factory] => view
          ]  
          
          
          
abstractAliases= [
 [app] => Array
         (
             [0] => 
             [1] => Illuminate\Contracts\Container\Container
             [2] => Illuminate\Contracts\Foundation\Application
             [3] => Psr\Container\ContainerInterface
         )
 
     [auth] => Array
         (
             [0] => Illuminate\Auth\AuthManager
             [1] => Illuminate\Contracts\Auth\Factory
         )
 
     [auth.driver] => Array
         (
             [0] => Illuminate\Contracts\Auth\Guard
         )
 
     [blade.compiler] => Array
         (
             [0] => Illuminate\View\Compilers\BladeCompiler
         )
 
     [cache] => Array
         (
             [0] => Illuminate\Cache\CacheManager
             [1] => Illuminate\Contracts\Cache\Factory
         )
 
     [cache.store] => Array
         (
             [0] => Illuminate\Cache\Repository
             [1] => Illuminate\Contracts\Cache\Repository
         )
 
     [config] => Array
         (
             [0] => Illuminate\Config\Repository
             [1] => Illuminate\Contracts\Config\Repository
         )
 
     [cookie] => Array
         (
             [0] => Illuminate\Cookie\CookieJar
             [1] => Illuminate\Contracts\Cookie\Factory
             [2] => Illuminate\Contracts\Cookie\QueueingFactory
         )
 
     [encrypter] => Array
         (
             [0] => Illuminate\Encryption\Encrypter
             [1] => Illuminate\Contracts\Encryption\Encrypter
         )
 
     [db] => Array
         (
             [0] => Illuminate\Database\DatabaseManager
         )
 
     [db.connection] => Array
         (
             [0] => Illuminate\Database\Connection
             [1] => Illuminate\Database\ConnectionInterface
         )
 
     [events] => Array
         (
             [0] => Illuminate\Events\Dispatcher
             [1] => Illuminate\Contracts\Events\Dispatcher
         )
 
     [files] => Array
         (
             [0] => Illuminate\Filesystem\Filesystem
         )
 
     [filesystem] => Array
         (
             [0] => Illuminate\Filesystem\FilesystemManager
             [1] => Illuminate\Contracts\Filesystem\Factory
         )
 
     [filesystem.disk] => Array
         (
             [0] => Illuminate\Contracts\Filesystem\Filesystem
         )
 
     [filesystem.cloud] => Array
         (
             [0] => Illuminate\Contracts\Filesystem\Cloud
         )
 
     [hash] => Array
         (
             [0] => Illuminate\Hashing\HashManager
         )
 
     [hash.driver] => Array
         (
             [0] => Illuminate\Contracts\Hashing\Hasher
         )
 
     [translator] => Array
         (
             [0] => Illuminate\Translation\Translator
             [1] => Illuminate\Contracts\Translation\Translator
         )
 
     [log] => Array
         (
             [0] => Illuminate\Log\LogManager
             [1] => Psr\Log\LoggerInterface
         )
 
     [mailer] => Array
         (
             [0] => Illuminate\Mail\Mailer
             [1] => Illuminate\Contracts\Mail\Mailer
             [2] => Illuminate\Contracts\Mail\MailQueue
         )
 
     [auth.password] => Array
         (
             [0] => Illuminate\Auth\Passwords\PasswordBrokerManager
             [1] => Illuminate\Contracts\Auth\PasswordBrokerFactory
         )
 
     [auth.password.broker] => Array
         (
             [0] => Illuminate\Auth\Passwords\PasswordBroker
             [1] => Illuminate\Contracts\Auth\PasswordBroker
         )
 
     [queue] => Array
         (
             [0] => Illuminate\Queue\QueueManager
             [1] => Illuminate\Contracts\Queue\Factory
             [2] => Illuminate\Contracts\Queue\Monitor
         )
 
     [queue.connection] => Array
         (
             [0] => Illuminate\Contracts\Queue\Queue
         )
 
     [queue.failer] => Array
         (
             [0] => Illuminate\Queue\Failed\FailedJobProviderInterface
         )
 
     [redirect] => Array
         (
             [0] => Illuminate\Routing\Redirector
         )
 
     [redis] => Array
         (
             [0] => Illuminate\Redis\RedisManager
             [1] => Illuminate\Contracts\Redis\Factory
         )
 
     [request] => Array
         (
             [0] => Illuminate\Http\Request
             [1] => Symfony\Component\HttpFoundation\Request
         )
 
     [router] => Array
         (
             [0] => Illuminate\Routing\Router
             [1] => Illuminate\Contracts\Routing\Registrar
             [2] => Illuminate\Contracts\Routing\BindingRegistrar
         )
 
     [session] => Array
         (
             [0] => Illuminate\Session\SessionManager
         )
 
     [session.store] => Array
         (
             [0] => Illuminate\Session\Store
             [1] => Illuminate\Contracts\Session\Session
         )
 
     [url] => Array
         (
             [0] => Illuminate\Routing\UrlGenerator
             [1] => Illuminate\Contracts\Routing\UrlGenerator
         )
 
     [validator] => Array
         (
             [0] => Illuminate\Validation\Factory
             [1] => Illuminate\Contracts\Validation\Factory
         )
 
     [view] => Array
         (
             [0] => Illuminate\View\Factory
             [1] => Illuminate\Contracts\View\Factory
         )
 ]                          

Illuminate\Routing\Router的数据存储

middlewareGroups=[
'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
]

middleware=[
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
]

protected $events;


protected $container;


protected $routes;


protected $current;


protected $currentRequest;



public $middlewarePriority = [
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\Illuminate\Auth\Middleware\Authenticate::class,
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Illuminate\Auth\Middleware\Authorize::class,
];


protected $binders = [];


protected $patterns = [];

protected $groupStack = [
    0=>[
        'middleware'=>[
                0=>'web'
        ],
        namespace='App\Http\Controllers'
    ]
];

public static $verbs = ['GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'];

app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1

abstractAliases
app1
app1
app1
app1
app1
app1
app1

实例池里的部分数据 instances[]
config
app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1 app1

events
app1

PackageManifest
app1

request
app1 app1

routers
app1 app1

routes
app1 app1 app1 app1 app1

globalAfterResolvingCallbacks|afterResolvingCallbacks|globalResolvingCallbacks|resolvingCallbacks存储情况
app1