mirror of
				https://github.com/yiisoft/yii2.git
				synced 2025-10-31 18:47:33 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| Bootstrapping
 | |
| =============
 | |
| 
 | |
| Bootstrapping refers to the process of preparing the environment before an application starts
 | |
| to resolve and process an incoming request. Bootstrapping is done in two places:
 | |
| the [entry script](structure-entry-scripts.md) and the [application](structure-applications.md).
 | |
| 
 | |
| In the [entry script](structure-entry-scripts.md), class autoloaders for different libraries are
 | |
| registered. This includes the Composer autoloader through its `autoload.php` file and the Yii
 | |
| autoloader through its `Yii` class file. The entry script then loads the application
 | |
| [configuration](concept-configurations.md) and creates an [application](structure-applications.md) instance.
 | |
| 
 | |
| In the constructor of the application, the following bootstrapping work is done:
 | |
| 
 | |
| 1. [[yii\base\Application::preInit()|preInit()]] is called, which configures some high priority
 | |
|    application properties, such as [[yii\base\Application::basePath|basePath]].
 | |
| 2. Register the [[yii\base\Application::errorHandler|error handler]].
 | |
| 3. Initialize application properties using the given application configuration.
 | |
| 4. [[yii\base\Application::init()|init()]] is called which in turn calls
 | |
|    [[yii\base\Application::bootstrap()|bootstrap()]] to run bootstrapping components.
 | |
|    - Include the extension manifest file `vendor/yiisoft/extensions.php`.
 | |
|    - Create and run [bootstrap components](structure-extensions.md#bootstrapping-classes)
 | |
|      declared by extensions.
 | |
|    - Create and run [application components](structure-application-components.md) and/or
 | |
|      [modules](structure-modules.md) that are declared in the application's
 | |
|      [bootstrap property](structure-applications.md#bootstrap).
 | |
| 
 | |
| Because the bootstrapping work has to be done before handling *every* request, it is very important
 | |
| to keep this process light and optimize it as much as possible.
 | |
| 
 | |
| Try not to register too many bootstrapping components. A bootstrapping component is needed only
 | |
| if it wants to participate the whole life cycle of requesting handling. For example, if a module
 | |
| needs to register additional URL parsing rules, it should be listed in the
 | |
| [bootstrap property](structure-applications.md#bootstrap) so that the new URL rules can take effect
 | |
| before they are used to resolve requests.
 | |
| 
 | |
| In production mode, enable a bytecode cache, such as [PHP OPcache] or [APC], to minimize the time needed for including
 | |
| and parsing PHP files.
 | |
| 
 | |
| [PHP OPcache]: https://www.php.net/manual/en/intro.opcache.php
 | |
| [APC]: https://www.php.net/manual/en/book.apcu.php
 | |
| 
 | |
| Some large applications have very complex application [configurations](concept-configurations.md)
 | |
| which are divided into many smaller configuration files. If this is the case, consider caching
 | |
| the whole configuration array and loading it directly from cache before creating the application instance
 | |
| in the entry script.
 | 
