From 3c16faa5b0048bf7b22b4c47cb729c0d60d3416b Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Thu, 7 Sep 2017 22:45:49 +0300 Subject: [PATCH] Fixes #14761: Removed Yii autoloader in favor of Composer's PSR-4 implementation --- composer.json | 3 + docs/guide/concept-autoloading.md | 121 +++++------- docs/guide/helper-overview.md | 13 +- docs/guide/structure-applications.md | 1 - docs/guide/structure-entry-scripts.md | 6 - docs/guide/tutorial-console.md | 1 - docs/guide/tutorial-yii-integration.md | 67 +++---- framework/BaseYii.php | 53 ----- framework/CHANGELOG.md | 1 + framework/UPGRADE.md | 5 + framework/Yii.php | 2 - framework/classes.php | 348 --------------------------------- framework/composer.json | 5 +- 13 files changed, 108 insertions(+), 518 deletions(-) delete mode 100644 framework/classes.php diff --git a/composer.json b/composer.json index 05abff4..06bd6e4 100644 --- a/composer.json +++ b/composer.json @@ -103,6 +103,9 @@ "yii\\cs\\": "cs/src/" } }, + "autoload-dev": { + "psr-4": {"yiiunit\\": "tests/"} + }, "config": { "platform": {"php": "7.1"} }, diff --git a/docs/guide/concept-autoloading.md b/docs/guide/concept-autoloading.md index 90d17d7..8519c11 100644 --- a/docs/guide/concept-autoloading.md +++ b/docs/guide/concept-autoloading.md @@ -2,93 +2,74 @@ Class Autoloading ================= Yii relies on the [class autoloading mechanism](http://www.php.net/manual/en/language.oop5.autoload.php) -to locate and include all required class files. It provides a high-performance class autoloader that is compliant with the +to locate and include all required class files. The loader itself is generated by Composer and complies to [PSR-4 standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md). -The autoloader is installed when you include the `Yii.php` file. > Note: For simplicity of description, in this section we will only talk about autoloading of classes. However, keep in mind that the content we are describing here applies to autoloading of interfaces and traits as well. - - -Using the Yii Autoloader ------------------------- - -To make use of the Yii class autoloader, you should follow two simple rules when creating and naming your classes: - -* Each class must be under a [namespace](http://php.net/manual/en/language.namespaces.php) (e.g. `foo\bar\MyClass`) -* Each class must be saved in an individual file whose path is determined by the following algorithm: - -```php -// $className is a fully qualified class name without the leading backslash -$classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); + + +## Configuring autoloader + +Since Yii uses Composer-generated autoloader, in order to configure it, `composer.json` should be used: + + +```json +{ + "name": "myorg/myapp", + "autoload": { + "psr-4": { + "app\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "tests\\": "tests" + } + } +} ``` -For example, if a class name and namespace is `foo\bar\MyClass`, the [alias](concept-aliases.md) for the corresponding class file path -would be `@foo/bar/MyClass.php`. In order for this alias to be resolvable into a file path, -either `@foo` or `@foo/bar` must be a [root alias](concept-aliases.md#defining-aliases). - -When using the [Basic Project Template](start-installation.md), you may put your classes under the top-level -namespace `app` so that they can be autoloaded by Yii without the need of defining a new alias. This is because -`@app` is a [predefined alias](concept-aliases.md#predefined-aliases), and a class name like `app\components\MyClass` -can be resolved into the class file `AppBasePath/components/MyClass.php`, according to the algorithm just described. - -In the [Advanced Project Template](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/README.md), each tier has its own root alias. For example, -the front-end tier has a root alias `@frontend`, while the back-end tier root alias is `@backend`. As a result, -you may put the front-end classes under the namespace `frontend` while the back-end classes are under `backend`. This will -allow these classes to be autoloaded by the Yii autoloader. +Note that test-specific requirements are in `autoload-dev` in order not to pollute autoloader in production where Composer +is used with `--no-dev` flag. -To add a custom namespace to the autoloader you need to define an alias for the base directory of the namespace using [[Yii::setAlias()]]. -For example to load classes in the `foo` namespace that are located in the `path/to/foo` directory you will call `Yii::setAlias('@foo', 'path/to/foo')`. +See [Composer documentation](https://getcomposer.org/doc/01-basic-usage.md#autoloading) for details. -Class Map ---------- +After configuration is done, run `composer dump-autoload` to generate autoloader. Note that it should be done after each +re-configuration. -The Yii class autoloader supports the *class map* feature, which maps class names to the corresponding class file paths. -When the autoloader is loading a class, it will first check if the class is found in the map. If so, the corresponding -file path will be included directly without further checks. This makes class autoloading super fast. In fact, -all core Yii classes are autoloaded this way. - -You may add a class to the class map, stored in `Yii::$classMap`, using: +In order for your application to be aware of autoloader, require `vendor/autoload.php` in your entry script. For web +application it is typically `index.php`, for console it's `yii`: ```php -Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; -``` + ------------------------ +$config = require(__DIR__ . '/../config/web.php'); -Because Yii embraces Composer as a package dependency manager, it is recommended that you also install -the Composer autoloader. If you are using 3rd-party libraries that have their own autoloaders, you should -also install those. +(new yii\web\Application($config))->run(); -When using the Yii autoloader together with other autoloaders, you should include the `Yii.php` file -*after* all other autoloaders are installed. This will make the Yii autoloader the first one responding to -any class autoloading request. For example, the following code is extracted from -the [entry script](structure-entry-scripts.md) of the [Basic Project Template](start-installation.md). The first -line installs the Composer autoloader, while the second line installs the Yii autoloader: - -```php -require __DIR__ . '/../vendor/autoload.php'; -require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; ``` -You may use the Composer autoloader alone without the Yii autoloader. However, by doing so, the performance -of your class autoloading may be degraded, and you must follow the rules set by Composer in order for your classes -to be autoloadable. +## Using autoloader -> Info: If you do not want to use the Yii autoloader, you must create your own version of the `Yii.php` file - and include it in your [entry script](structure-entry-scripts.md). +To make use of the class autoloader, you should follow two simple rules when creating and naming your classes: - -Autoloading Extension Classes ------------------------------ - -The Yii autoloader is capable of autoloading [extension](structure-extensions.md) classes. The sole requirement -is that an extension specifies the `autoload` section correctly in its `composer.json` file. Please refer to the -[Composer documentation](https://getcomposer.org/doc/04-schema.md#autoload) for more details about specifying `autoload`. - -In case you do not use the Yii autoloader, the Composer autoloader can still autoload extension classes for you. +* Each class must be under a [namespace](http://php.net/manual/en/language.namespaces.php) (e.g. `foo\bar\MyClass`) +* Each class must be saved in an individual file whose path matches namespace and name matches class name with `.php` at + the end of it. + +> Note: In fact, you can break 2nd rule if you need to store a class in a directory that doesn't match the namespace. +> See [Composer documentation](https://getcomposer.org/doc/01-basic-usage.md#autoloading). + +For example, if a class name and namespace is `foo\bar\MyClass` the file would be `bar/MyClass.php` and `foo` will be +mapped according to `composer.json` autoloader definition. + +When using the [Project Template](start-installation.md), you may put your classes under the top-level +namespace `app` that is pre-defined for you. A class name like `app\components\MyClass` +can be resolved into the class file `AppBasePath/components/MyClass.php`. diff --git a/docs/guide/helper-overview.md b/docs/guide/helper-overview.md index f6f85c3..fcd3816 100644 --- a/docs/guide/helper-overview.md +++ b/docs/guide/helper-overview.md @@ -67,14 +67,21 @@ class ArrayHelper extends BaseArrayHelper Save your class in a file named `ArrayHelper.php`. The file can be in any directory, for example `@app/components`. -Next, in your application's [entry script](structure-entry-scripts.md), add the following line of code -after including the `yii.php` file to tell the [Yii class autoloader](concept-autoloading.md) to load your custom +Next, in your application's `composer.json`, add the class to the class map to load your custom class instead of the original helper class from the framework: ```php -Yii::$classMap['yii\helpers\ArrayHelper'] = '@app/components/ArrayHelper.php'; +"autoload": { + "psr-4": { + "app\\": "" + }, + "classmap": ["overrides/yii/helpers/Html.php"], + "exclude-from-classmap": ["vendor/yiisoft/yii2/helpers/Html.php"] +}, ``` +After it is done, regenerate autoloader with `composer dump-autoload`. + Note that customizing of helper classes is only useful if you want to change the behavior of an existing function of the helpers. If you want to add additional functions to use in your application, you may be better off creating a separate helper for that. diff --git a/docs/guide/structure-applications.md b/docs/guide/structure-applications.md index 89a33e3..46dcc94 100644 --- a/docs/guide/structure-applications.md +++ b/docs/guide/structure-applications.md @@ -20,7 +20,6 @@ a [configuration](concept-configurations.md) and apply it to the application, as ```php require __DIR__ . '/../vendor/autoload.php'; -require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; // load application configuration $config = require __DIR__ . '/../config/web.php'; diff --git a/docs/guide/structure-entry-scripts.md b/docs/guide/structure-entry-scripts.md index 93f9296..64f81fd 100644 --- a/docs/guide/structure-entry-scripts.md +++ b/docs/guide/structure-entry-scripts.md @@ -36,9 +36,6 @@ defined('YII_ENV') or define('YII_ENV', 'dev'); // register Composer autoloader require __DIR__ . '/../vendor/autoload.php'; -// include Yii class file -require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; - // load application configuration $config = require __DIR__ . '/../config/web.php'; @@ -68,9 +65,6 @@ defined('YII_ENV') or define('YII_ENV', 'dev'); // register Composer autoloader require __DIR__ . '/vendor/autoload.php'; -// include Yii class file -require __DIR__ . '/vendor/yiisoft/yii2/Yii.php'; - // load application configuration $config = require __DIR__ . '/config/console.php'; diff --git a/docs/guide/tutorial-console.md b/docs/guide/tutorial-console.md index d2345d4..31e8ab5 100644 --- a/docs/guide/tutorial-console.md +++ b/docs/guide/tutorial-console.md @@ -72,7 +72,6 @@ defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require __DIR__ . '/vendor/autoload.php'; -require __DIR__ . '/vendor/yiisoft/yii2/Yii.php'; $config = require __DIR__ . '/config/console.php'; diff --git a/docs/guide/tutorial-yii-integration.md b/docs/guide/tutorial-yii-integration.md index 400e381..eb39ab0 100644 --- a/docs/guide/tutorial-yii-integration.md +++ b/docs/guide/tutorial-yii-integration.md @@ -19,17 +19,7 @@ You can install such libraries by taking the following two simple steps: 1. modify the `composer.json` file of your application and specify which Composer packages you want to install. 2. run `composer install` to install the specified packages. -The classes in the installed Composer packages can be autoloaded using the Composer autoloader. Make sure -the [entry script](structure-entry-scripts.md) of your application contains the following lines to install -the Composer autoloader: - -```php -// install Composer autoloader -require __DIR__ . '/../vendor/autoload.php'; - -// include Yii class file -require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; -``` +The classes in the installed Composer packages can be autoloaded using the Composer autoloader. ### Using Downloaded Libraries @@ -37,22 +27,26 @@ If a library is not released as a Composer package, you should follow its instal In most cases, you will need to download a release file manually and unpack it in the `BasePath/vendor` directory, where `BasePath` represents the [base path](structure-applications.md#basePath) of your application. -If a library carries its own class autoloader, you may install it in the [entry script](structure-entry-scripts.md) -of your application. It is recommended the installation is done before you include the `Yii.php` file so that -the Yii class autoloader can take precedence in autoloading classes. +If a library carries its own class autoloader, you may require it in the [entry script](structure-entry-scripts.md) +of your application. It is recommended to put `require` statements before Composer autoloader file so that +the Composer autoloader can take precedence in autoloading classes. If a library does not provide a class autoloader, but its class naming follows [PSR-4](http://www.php-fig.org/psr/psr-4/), -you may use the Yii class autoloader to autoload the classes. All you need to do is just to declare a -[root alias](concept-aliases.md#defining-aliases) for each root namespace used in its classes. For example, +you may use the Composer autoloader to autoload the classes. You need to declare each root namespace used in its classes +in `composer.json`. For example, assume you have installed a library in the directory `vendor/foo/bar`, and the library classes are under -the `xyz` root namespace. You can include the following code in your application configuration: +the `xyz` root namespace. You can include the following: -```php -[ - 'aliases' => [ - '@xyz' => '@vendor/foo/bar', - ], -] +```json +{ + "name": "myorg/myapp", + "autoload": { + "psr-4": { + "app\\": "src", + "xyz\\": "vendor/foo/bar", + } + }, +} ``` If neither of the above is the case, it is likely that the library relies on PHP include path configuration to @@ -62,12 +56,19 @@ In the worst case when the library requires explicitly including every class fil to include the classes on demand: * Identify which classes the library contains. -* List the classes and the corresponding file paths in `Yii::$classMap` in the [entry script](structure-entry-scripts.md) - of the application. For example, -```php -Yii::$classMap['Class1'] = 'path/to/Class1.php'; -Yii::$classMap['Class2'] = 'path/to/Class2.php'; -``` +* List the classes and the corresponding file paths in the application `composer.json`: + ```json + "autoload": { + "psr-4": { + "app\\": "" + }, + "classmap": [ + "path/to/Class1.php", + "path/to/Class2.php", + "path/to/library/", + ] + }, + ``` Using Yii in Third-Party Systems @@ -99,7 +100,7 @@ the `BasePath/vendor` directory. Next, you should modify the entry script of the 3rd-party system by including the following code at the beginning: ```php -require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php'; +require __DIR__ . '/../vendor/autoload.php'; // in case 3rd-party system doesn't use Composer $yiiConfig = require __DIR__ . '/../config/yii/web.php'; new yii\web\Application($yiiConfig); // Do NOT call run() here @@ -160,9 +161,9 @@ class Yii extends \yii\BaseYii // copy-paste the code from YiiBase (1.x) here } -Yii::$classMap = include($yii2path . '/classes.php'); -// register Yii 2 autoloader via Yii 1 -Yii::registerAutoloader(['yii\BaseYii', 'autoload']); +// register Composer autoloader +require(__DIR__ . '/../vendor/autoload.php'); + // create the dependency injection container Yii::$container = new yii\di\Container; ``` diff --git a/framework/BaseYii.php b/framework/BaseYii.php index 9329f64..5411748 100644 --- a/framework/BaseYii.php +++ b/framework/BaseYii.php @@ -66,14 +66,6 @@ defined('YII_ENABLE_ERROR_HANDLER') or define('YII_ENABLE_ERROR_HANDLER', true); class BaseYii { /** - * @var array class map used by the Yii autoloading mechanism. - * The array keys are the class names (without leading backslashes), and the array values - * are the corresponding class file paths (or [path aliases](guide:concept-aliases)). This property mainly affects - * how [[autoload()]] works. - * @see autoload() - */ - public static $classMap = []; - /** * @var \yii\console\Application|\yii\web\Application the application instance */ public static $app; @@ -258,51 +250,6 @@ class BaseYii } /** - * Class autoload loader. - * This method is invoked automatically when PHP sees an unknown class. - * The method will attempt to include the class file according to the following procedure: - * - * 1. Search in [[classMap]]; - * 2. If the class is namespaced (e.g. `yii\base\Component`), it will attempt - * to include the file associated with the corresponding path alias - * (e.g. `@yii/base/Component.php`); - * - * This autoloader allows loading classes that follow the [PSR-4 standard](http://www.php-fig.org/psr/psr-4/) - * and have its top-level namespace or sub-namespaces defined as path aliases. - * - * Example: When aliases `@yii` and `@yii/bootstrap` are defined, classes in the `yii\bootstrap` namespace - * will be loaded using the `@yii/bootstrap` alias which points to the directory where bootstrap extension - * files are installed and all classes from other `yii` namespaces will be loaded from the yii framework directory. - * - * Also the [guide section on autoloading](guide:concept-autoloading). - * - * @param string $className the fully qualified class name without a leading backslash "\" - * @throws UnknownClassException if the class does not exist in the class file - */ - public static function autoload($className) - { - if (isset(static::$classMap[$className])) { - $classFile = static::$classMap[$className]; - if ($classFile[0] === '@') { - $classFile = static::getAlias($classFile); - } - } elseif (strpos($className, '\\') !== false) { - $classFile = static::getAlias('@' . str_replace('\\', '/', $className) . '.php', false); - if ($classFile === false || !is_file($classFile)) { - return; - } - } else { - return; - } - - include $classFile; - - if (YII_DEBUG && !class_exists($className, false) && !interface_exists($className, false) && !trait_exists($className, false)) { - throw new UnknownClassException("Unable to find '$className' in file: $classFile. Namespace missing?"); - } - } - - /** * Creates a new object using the given configuration. * * You may view this method as an enhanced version of the `new` operator. diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 2f37284..14cff76 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -30,6 +30,7 @@ Yii Framework 2 Change Log - Chg #13885: Removed APC support in ApcCache. APCu works as before (samdark) - Chg #14178: Removed HHVM-specific code (samdark) - Enh #14671: use `random_int()` instead of `mt_rand()` to generate cryptographically secure pseudo-random integers (yyxx9988) +- Chg #14761: Removed Yii autoloader in favor of Composer's PSR-4 implementation (samdark) 2.0.13 under development ------------------------ diff --git a/framework/UPGRADE.md b/framework/UPGRADE.md index 1c474e4..f4c57d5 100644 --- a/framework/UPGRADE.md +++ b/framework/UPGRADE.md @@ -105,6 +105,11 @@ Upgrade from Yii 2.0.x extend `yii\caching\SimpleCache` abstract class. Use `yii\caching\CacheInterface` only if you wish to replace `yii\caching\Cache` component providing your own solution for cache dependency handling. * Console command used to clear cache now calls related actions "clear" instead of "flush". +* Yii autoloader was removed in favor of Composer-generated one. You should remove explicit inclusion of `Yii.php` from + your entry `index.php` scripts. In case you have relied on class map, use `composer.json` instead of configuring it + with PHP. For details please refer to [guide on autoloading](https://github.com/yiisoft/yii2/blob/2.1/docs/guide/concept-autoloading.md), + [guide on customizing helpers](https://github.com/yiisoft/yii2/blob/2.1/docs/guide/helper-overview.md#customizing-helper-classes-) + and [guide on Working with Third-Party Code](https://github.com/yiisoft/yii2/blob/2.1/docs/guide/tutorial-yii-integration.md). Upgrade from Yii 2.0.12 diff --git a/framework/Yii.php b/framework/Yii.php index 4226770..faa714e 100644 --- a/framework/Yii.php +++ b/framework/Yii.php @@ -20,6 +20,4 @@ class Yii extends \yii\BaseYii { } -spl_autoload_register(['Yii', 'autoload'], true, true); -Yii::$classMap = require __DIR__ . '/classes.php'; Yii::$container = new yii\di\Container(); diff --git a/framework/classes.php b/framework/classes.php deleted file mode 100644 index 01048b5..0000000 --- a/framework/classes.php +++ /dev/null @@ -1,348 +0,0 @@ - YII2_PATH . '/base/Action.php', - 'yii\base\ActionEvent' => YII2_PATH . '/base/ActionEvent.php', - 'yii\base\ActionFilter' => YII2_PATH . '/base/ActionFilter.php', - 'yii\base\Application' => YII2_PATH . '/base/Application.php', - 'yii\base\ArrayAccessTrait' => YII2_PATH . '/base/ArrayAccessTrait.php', - 'yii\base\Arrayable' => YII2_PATH . '/base/Arrayable.php', - 'yii\base\ArrayableTrait' => YII2_PATH . '/base/ArrayableTrait.php', - 'yii\base\Behavior' => YII2_PATH . '/base/Behavior.php', - 'yii\base\BootstrapInterface' => YII2_PATH . '/base/BootstrapInterface.php', - 'yii\base\Component' => YII2_PATH . '/base/Component.php', - 'yii\base\Configurable' => YII2_PATH . '/base/Configurable.php', - 'yii\base\Controller' => YII2_PATH . '/base/Controller.php', - 'yii\base\DynamicModel' => YII2_PATH . '/base/DynamicModel.php', - 'yii\base\ErrorException' => YII2_PATH . '/base/ErrorException.php', - 'yii\base\ErrorHandler' => YII2_PATH . '/base/ErrorHandler.php', - 'yii\base\Event' => YII2_PATH . '/base/Event.php', - 'yii\base\Exception' => YII2_PATH . '/base/Exception.php', - 'yii\base\ExitException' => YII2_PATH . '/base/ExitException.php', - 'yii\base\InlineAction' => YII2_PATH . '/base/InlineAction.php', - 'yii\base\InvalidCallException' => YII2_PATH . '/base/InvalidCallException.php', - 'yii\base\InvalidConfigException' => YII2_PATH . '/base/InvalidConfigException.php', - 'yii\base\InvalidArgumentException' => YII2_PATH . '/base/InvalidArgumentException.php', - 'yii\base\InvalidRouteException' => YII2_PATH . '/base/InvalidRouteException.php', - 'yii\base\InvalidValueException' => YII2_PATH . '/base/InvalidValueException.php', - 'yii\base\Model' => YII2_PATH . '/base/Model.php', - 'yii\base\ModelEvent' => YII2_PATH . '/base/ModelEvent.php', - 'yii\base\Module' => YII2_PATH . '/base/Module.php', - 'yii\base\NotSupportedException' => YII2_PATH . '/base/NotSupportedException.php', - 'yii\base\Object' => YII2_PATH . '/base/Object.php', - 'yii\base\BaseObject' => YII2_PATH . '/base/BaseObject.php', - 'yii\base\Request' => YII2_PATH . '/base/Request.php', - 'yii\base\Response' => YII2_PATH . '/base/Response.php', - 'yii\base\Security' => YII2_PATH . '/base/Security.php', - 'yii\base\Theme' => YII2_PATH . '/base/Theme.php', - 'yii\base\UnknownClassException' => YII2_PATH . '/base/UnknownClassException.php', - 'yii\base\UnknownMethodException' => YII2_PATH . '/base/UnknownMethodException.php', - 'yii\base\UnknownPropertyException' => YII2_PATH . '/base/UnknownPropertyException.php', - 'yii\base\UserException' => YII2_PATH . '/base/UserException.php', - 'yii\base\View' => YII2_PATH . '/base/View.php', - 'yii\base\ViewContextInterface' => YII2_PATH . '/base/ViewContextInterface.php', - 'yii\base\ViewEvent' => YII2_PATH . '/base/ViewEvent.php', - 'yii\base\ViewNotFoundException' => YII2_PATH . '/base/ViewNotFoundException.php', - 'yii\base\ViewRenderer' => YII2_PATH . '/base/ViewRenderer.php', - 'yii\base\Widget' => YII2_PATH . '/base/Widget.php', - 'yii\base\WidgetEvent' => YII2_PATH . '/base/WidgetEvent.php', - 'yii\behaviors\AttributeBehavior' => YII2_PATH . '/behaviors/AttributeBehavior.php', - 'yii\behaviors\AttributeTypecastBehavior' => YII2_PATH . '/behaviors/AttributeTypecastBehavior.php', - 'yii\behaviors\BlameableBehavior' => YII2_PATH . '/behaviors/BlameableBehavior.php', - 'yii\behaviors\SluggableBehavior' => YII2_PATH . '/behaviors/SluggableBehavior.php', - 'yii\behaviors\TimestampBehavior' => YII2_PATH . '/behaviors/TimestampBehavior.php', - 'yii\caching\ApcCache' => YII2_PATH . '/caching/ApcCache.php', - 'yii\caching\ArrayCache' => YII2_PATH . '/caching/ArrayCache.php', - 'yii\caching\Cache' => YII2_PATH . '/caching/Cache.php', - 'yii\caching\ChainedDependency' => YII2_PATH . '/caching/ChainedDependency.php', - 'yii\caching\DbCache' => YII2_PATH . '/caching/DbCache.php', - 'yii\caching\DbDependency' => YII2_PATH . '/caching/DbDependency.php', - 'yii\caching\DbQueryDependency' => YII2_PATH . '/caching/DbQueryDependency.php', - 'yii\caching\Dependency' => YII2_PATH . '/caching/Dependency.php', - 'yii\caching\DummyCache' => YII2_PATH . '/caching/DummyCache.php', - 'yii\caching\ExpressionDependency' => YII2_PATH . '/caching/ExpressionDependency.php', - 'yii\caching\FileCache' => YII2_PATH . '/caching/FileCache.php', - 'yii\caching\FileDependency' => YII2_PATH . '/caching/FileDependency.php', - 'yii\caching\MemCached' => YII2_PATH . '/caching/MemCached.php', - 'yii\caching\MemCachedServer' => YII2_PATH . '/caching/MemCachedServer.php', - 'yii\caching\TagDependency' => YII2_PATH . '/caching/TagDependency.php', - 'yii\caching\WinCache' => YII2_PATH . '/caching/WinCache.php', - 'yii\captcha\Captcha' => YII2_PATH . '/captcha/Captcha.php', - 'yii\captcha\CaptchaAction' => YII2_PATH . '/captcha/CaptchaAction.php', - 'yii\captcha\CaptchaAsset' => YII2_PATH . '/captcha/CaptchaAsset.php', - 'yii\captcha\CaptchaValidator' => YII2_PATH . '/captcha/CaptchaValidator.php', - 'yii\data\ActiveDataProvider' => YII2_PATH . '/data/ActiveDataProvider.php', - 'yii\data\ArrayDataProvider' => YII2_PATH . '/data/ArrayDataProvider.php', - 'yii\data\BaseDataProvider' => YII2_PATH . '/data/BaseDataProvider.php', - 'yii\data\DataProviderInterface' => YII2_PATH . '/data/DataProviderInterface.php', - 'yii\data\Pagination' => YII2_PATH . '/data/Pagination.php', - 'yii\data\Sort' => YII2_PATH . '/data/Sort.php', - 'yii\data\SqlDataProvider' => YII2_PATH . '/data/SqlDataProvider.php', - 'yii\db\ActiveQuery' => YII2_PATH . '/db/ActiveQuery.php', - 'yii\db\ActiveQueryInterface' => YII2_PATH . '/db/ActiveQueryInterface.php', - 'yii\db\ActiveQueryTrait' => YII2_PATH . '/db/ActiveQueryTrait.php', - 'yii\db\ActiveRecord' => YII2_PATH . '/db/ActiveRecord.php', - 'yii\db\ActiveRecordInterface' => YII2_PATH . '/db/ActiveRecordInterface.php', - 'yii\db\ActiveRelationTrait' => YII2_PATH . '/db/ActiveRelationTrait.php', - 'yii\db\AfterSaveEvent' => YII2_PATH . '/db/AfterSaveEvent.php', - 'yii\db\BaseActiveRecord' => YII2_PATH . '/db/BaseActiveRecord.php', - 'yii\db\BatchQueryResult' => YII2_PATH . '/db/BatchQueryResult.php', - 'yii\db\ColumnSchema' => YII2_PATH . '/db/ColumnSchema.php', - 'yii\db\ColumnSchemaBuilder' => YII2_PATH . '/db/ColumnSchemaBuilder.php', - 'yii\db\Command' => YII2_PATH . '/db/Command.php', - 'yii\db\Connection' => YII2_PATH . '/db/Connection.php', - 'yii\db\DataReader' => YII2_PATH . '/db/DataReader.php', - 'yii\db\Exception' => YII2_PATH . '/db/Exception.php', - 'yii\db\Expression' => YII2_PATH . '/db/Expression.php', - 'yii\db\IntegrityException' => YII2_PATH . '/db/IntegrityException.php', - 'yii\db\Migration' => YII2_PATH . '/db/Migration.php', - 'yii\db\MigrationInterface' => YII2_PATH . '/db/MigrationInterface.php', - 'yii\db\Query' => YII2_PATH . '/db/Query.php', - 'yii\db\QueryBuilder' => YII2_PATH . '/db/QueryBuilder.php', - 'yii\db\QueryInterface' => YII2_PATH . '/db/QueryInterface.php', - 'yii\db\QueryTrait' => YII2_PATH . '/db/QueryTrait.php', - 'yii\db\Schema' => YII2_PATH . '/db/Schema.php', - 'yii\db\SchemaBuilderTrait' => YII2_PATH . '/db/SchemaBuilderTrait.php', - 'yii\db\StaleObjectException' => YII2_PATH . '/db/StaleObjectException.php', - 'yii\db\TableSchema' => YII2_PATH . '/db/TableSchema.php', - 'yii\db\Transaction' => YII2_PATH . '/db/Transaction.php', - 'yii\db\ViewFinderTrait' => YII2_PATH . '/db/ViewFinderTrait.php', - 'yii\db\cubrid\ColumnSchemaBuilder' => YII2_PATH . '/db/cubrid/ColumnSchemaBuilder.php', - 'yii\db\cubrid\QueryBuilder' => YII2_PATH . '/db/cubrid/QueryBuilder.php', - 'yii\db\cubrid\Schema' => YII2_PATH . '/db/cubrid/Schema.php', - 'yii\db\mssql\PDO' => YII2_PATH . '/db/mssql/PDO.php', - 'yii\db\mssql\QueryBuilder' => YII2_PATH . '/db/mssql/QueryBuilder.php', - 'yii\db\mssql\Schema' => YII2_PATH . '/db/mssql/Schema.php', - 'yii\db\mssql\SqlsrvPDO' => YII2_PATH . '/db/mssql/SqlsrvPDO.php', - 'yii\db\mssql\TableSchema' => YII2_PATH . '/db/mssql/TableSchema.php', - 'yii\db\mysql\ColumnSchemaBuilder' => YII2_PATH . '/db/mysql/ColumnSchemaBuilder.php', - 'yii\db\mysql\QueryBuilder' => YII2_PATH . '/db/mysql/QueryBuilder.php', - 'yii\db\mysql\Schema' => YII2_PATH . '/db/mysql/Schema.php', - 'yii\db\oci\ColumnSchemaBuilder' => YII2_PATH . '/db/oci/ColumnSchemaBuilder.php', - 'yii\db\oci\QueryBuilder' => YII2_PATH . '/db/oci/QueryBuilder.php', - 'yii\db\oci\Schema' => YII2_PATH . '/db/oci/Schema.php', - 'yii\db\pgsql\QueryBuilder' => YII2_PATH . '/db/pgsql/QueryBuilder.php', - 'yii\db\pgsql\Schema' => YII2_PATH . '/db/pgsql/Schema.php', - 'yii\db\sqlite\ColumnSchemaBuilder' => YII2_PATH . '/db/sqlite/ColumnSchemaBuilder.php', - 'yii\db\sqlite\QueryBuilder' => YII2_PATH . '/db/sqlite/QueryBuilder.php', - 'yii\db\sqlite\Schema' => YII2_PATH . '/db/sqlite/Schema.php', - 'yii\di\Container' => YII2_PATH . '/di/Container.php', - 'yii\di\Instance' => YII2_PATH . '/di/Instance.php', - 'yii\di\NotInstantiableException' => YII2_PATH . '/di/NotInstantiableException.php', - 'yii\di\ServiceLocator' => YII2_PATH . '/di/ServiceLocator.php', - 'yii\filters\AccessControl' => YII2_PATH . '/filters/AccessControl.php', - 'yii\filters\AccessRule' => YII2_PATH . '/filters/AccessRule.php', - 'yii\filters\ContentNegotiator' => YII2_PATH . '/filters/ContentNegotiator.php', - 'yii\filters\Cors' => YII2_PATH . '/filters/Cors.php', - 'yii\filters\HostControl' => YII2_PATH . '/filters/HostControl.php', - 'yii\filters\HttpCache' => YII2_PATH . '/filters/HttpCache.php', - 'yii\filters\PageCache' => YII2_PATH . '/filters/PageCache.php', - 'yii\filters\RateLimitInterface' => YII2_PATH . '/filters/RateLimitInterface.php', - 'yii\filters\RateLimiter' => YII2_PATH . '/filters/RateLimiter.php', - 'yii\filters\VerbFilter' => YII2_PATH . '/filters/VerbFilter.php', - 'yii\filters\auth\AuthInterface' => YII2_PATH . '/filters/auth/AuthInterface.php', - 'yii\filters\auth\AuthMethod' => YII2_PATH . '/filters/auth/AuthMethod.php', - 'yii\filters\auth\CompositeAuth' => YII2_PATH . '/filters/auth/CompositeAuth.php', - 'yii\filters\auth\HttpBasicAuth' => YII2_PATH . '/filters/auth/HttpBasicAuth.php', - 'yii\filters\auth\HttpBearerAuth' => YII2_PATH . '/filters/auth/HttpBearerAuth.php', - 'yii\filters\auth\QueryParamAuth' => YII2_PATH . '/filters/auth/QueryParamAuth.php', - 'yii\grid\ActionColumn' => YII2_PATH . '/grid/ActionColumn.php', - 'yii\grid\CheckboxColumn' => YII2_PATH . '/grid/CheckboxColumn.php', - 'yii\grid\Column' => YII2_PATH . '/grid/Column.php', - 'yii\grid\DataColumn' => YII2_PATH . '/grid/DataColumn.php', - 'yii\grid\GridView' => YII2_PATH . '/grid/GridView.php', - 'yii\grid\GridViewAsset' => YII2_PATH . '/grid/GridViewAsset.php', - 'yii\grid\RadioButtonColumn' => YII2_PATH . '/grid/RadioButtonColumn.php', - 'yii\grid\SerialColumn' => YII2_PATH . '/grid/SerialColumn.php', - 'yii\helpers\ArrayHelper' => YII2_PATH . '/helpers/ArrayHelper.php', - 'yii\helpers\BaseArrayHelper' => YII2_PATH . '/helpers/BaseArrayHelper.php', - 'yii\helpers\BaseConsole' => YII2_PATH . '/helpers/BaseConsole.php', - 'yii\helpers\BaseFileHelper' => YII2_PATH . '/helpers/BaseFileHelper.php', - 'yii\helpers\BaseFormatConverter' => YII2_PATH . '/helpers/BaseFormatConverter.php', - 'yii\helpers\BaseHtml' => YII2_PATH . '/helpers/BaseHtml.php', - 'yii\helpers\BaseHtmlPurifier' => YII2_PATH . '/helpers/BaseHtmlPurifier.php', - 'yii\helpers\BaseInflector' => YII2_PATH . '/helpers/BaseInflector.php', - 'yii\helpers\BaseJson' => YII2_PATH . '/helpers/BaseJson.php', - 'yii\helpers\BaseMarkdown' => YII2_PATH . '/helpers/BaseMarkdown.php', - 'yii\helpers\BaseStringHelper' => YII2_PATH . '/helpers/BaseStringHelper.php', - 'yii\helpers\BaseUrl' => YII2_PATH . '/helpers/BaseUrl.php', - 'yii\helpers\BaseVarDumper' => YII2_PATH . '/helpers/BaseVarDumper.php', - 'yii\helpers\Console' => YII2_PATH . '/helpers/Console.php', - 'yii\helpers\FileHelper' => YII2_PATH . '/helpers/FileHelper.php', - 'yii\helpers\FormatConverter' => YII2_PATH . '/helpers/FormatConverter.php', - 'yii\helpers\Html' => YII2_PATH . '/helpers/Html.php', - 'yii\helpers\HtmlPurifier' => YII2_PATH . '/helpers/HtmlPurifier.php', - 'yii\helpers\Inflector' => YII2_PATH . '/helpers/Inflector.php', - 'yii\helpers\Json' => YII2_PATH . '/helpers/Json.php', - 'yii\helpers\Markdown' => YII2_PATH . '/helpers/Markdown.php', - 'yii\helpers\ReplaceArrayValue' => YII2_PATH . '/helpers/ReplaceArrayValue.php', - 'yii\helpers\StringHelper' => YII2_PATH . '/helpers/StringHelper.php', - 'yii\helpers\UnsetArrayValue' => YII2_PATH . '/helpers/UnsetArrayValue.php', - 'yii\helpers\Url' => YII2_PATH . '/helpers/Url.php', - 'yii\helpers\VarDumper' => YII2_PATH . '/helpers/VarDumper.php', - 'yii\i18n\DbMessageSource' => YII2_PATH . '/i18n/DbMessageSource.php', - 'yii\i18n\Formatter' => YII2_PATH . '/i18n/Formatter.php', - 'yii\i18n\GettextFile' => YII2_PATH . '/i18n/GettextFile.php', - 'yii\i18n\GettextMessageSource' => YII2_PATH . '/i18n/GettextMessageSource.php', - 'yii\i18n\GettextMoFile' => YII2_PATH . '/i18n/GettextMoFile.php', - 'yii\i18n\GettextPoFile' => YII2_PATH . '/i18n/GettextPoFile.php', - 'yii\i18n\I18N' => YII2_PATH . '/i18n/I18N.php', - 'yii\i18n\MessageFormatter' => YII2_PATH . '/i18n/MessageFormatter.php', - 'yii\i18n\MessageSource' => YII2_PATH . '/i18n/MessageSource.php', - 'yii\i18n\MissingTranslationEvent' => YII2_PATH . '/i18n/MissingTranslationEvent.php', - 'yii\i18n\PhpMessageSource' => YII2_PATH . '/i18n/PhpMessageSource.php', - 'yii\log\DbTarget' => YII2_PATH . '/log/DbTarget.php', - 'yii\log\EmailTarget' => YII2_PATH . '/log/EmailTarget.php', - 'yii\log\FileTarget' => YII2_PATH . '/log/FileTarget.php', - 'yii\log\Logger' => YII2_PATH . '/log/Logger.php', - 'yii\log\SyslogTarget' => YII2_PATH . '/log/SyslogTarget.php', - 'yii\log\Target' => YII2_PATH . '/log/Target.php', - 'yii\mail\BaseMailer' => YII2_PATH . '/mail/BaseMailer.php', - 'yii\mail\BaseMessage' => YII2_PATH . '/mail/BaseMessage.php', - 'yii\mail\MailEvent' => YII2_PATH . '/mail/MailEvent.php', - 'yii\mail\MailerInterface' => YII2_PATH . '/mail/MailerInterface.php', - 'yii\mail\MessageInterface' => YII2_PATH . '/mail/MessageInterface.php', - 'yii\mutex\DbMutex' => YII2_PATH . '/mutex/DbMutex.php', - 'yii\mutex\FileMutex' => YII2_PATH . '/mutex/FileMutex.php', - 'yii\mutex\Mutex' => YII2_PATH . '/mutex/Mutex.php', - 'yii\mutex\MysqlMutex' => YII2_PATH . '/mutex/MysqlMutex.php', - 'yii\mutex\OracleMutex' => YII2_PATH . '/mutex/OracleMutex.php', - 'yii\mutex\PgsqlMutex' => YII2_PATH . '/mutex/PgsqlMutex.php', - 'yii\rbac\Assignment' => YII2_PATH . '/rbac/Assignment.php', - 'yii\rbac\BaseManager' => YII2_PATH . '/rbac/BaseManager.php', - 'yii\rbac\CheckAccessInterface' => YII2_PATH . '/rbac/CheckAccessInterface.php', - 'yii\rbac\DbManager' => YII2_PATH . '/rbac/DbManager.php', - 'yii\rbac\Item' => YII2_PATH . '/rbac/Item.php', - 'yii\rbac\ManagerInterface' => YII2_PATH . '/rbac/ManagerInterface.php', - 'yii\rbac\Permission' => YII2_PATH . '/rbac/Permission.php', - 'yii\rbac\PhpManager' => YII2_PATH . '/rbac/PhpManager.php', - 'yii\rbac\Role' => YII2_PATH . '/rbac/Role.php', - 'yii\rbac\Rule' => YII2_PATH . '/rbac/Rule.php', - 'yii\rest\Action' => YII2_PATH . '/rest/Action.php', - 'yii\rest\ActiveController' => YII2_PATH . '/rest/ActiveController.php', - 'yii\rest\Controller' => YII2_PATH . '/rest/Controller.php', - 'yii\rest\CreateAction' => YII2_PATH . '/rest/CreateAction.php', - 'yii\rest\DeleteAction' => YII2_PATH . '/rest/DeleteAction.php', - 'yii\rest\IndexAction' => YII2_PATH . '/rest/IndexAction.php', - 'yii\rest\OptionsAction' => YII2_PATH . '/rest/OptionsAction.php', - 'yii\rest\Serializer' => YII2_PATH . '/rest/Serializer.php', - 'yii\rest\UpdateAction' => YII2_PATH . '/rest/UpdateAction.php', - 'yii\rest\UrlRule' => YII2_PATH . '/rest/UrlRule.php', - 'yii\rest\ViewAction' => YII2_PATH . '/rest/ViewAction.php', - 'yii\test\ActiveFixture' => YII2_PATH . '/test/ActiveFixture.php', - 'yii\test\ArrayFixture' => YII2_PATH . '/test/ArrayFixture.php', - 'yii\test\BaseActiveFixture' => YII2_PATH . '/test/BaseActiveFixture.php', - 'yii\test\DbFixture' => YII2_PATH . '/test/DbFixture.php', - 'yii\test\Fixture' => YII2_PATH . '/test/Fixture.php', - 'yii\test\FixtureTrait' => YII2_PATH . '/test/FixtureTrait.php', - 'yii\test\InitDbFixture' => YII2_PATH . '/test/InitDbFixture.php', - 'yii\validators\BooleanValidator' => YII2_PATH . '/validators/BooleanValidator.php', - 'yii\validators\CompareValidator' => YII2_PATH . '/validators/CompareValidator.php', - 'yii\validators\DateValidator' => YII2_PATH . '/validators/DateValidator.php', - 'yii\validators\DefaultValueValidator' => YII2_PATH . '/validators/DefaultValueValidator.php', - 'yii\validators\EachValidator' => YII2_PATH . '/validators/EachValidator.php', - 'yii\validators\EmailValidator' => YII2_PATH . '/validators/EmailValidator.php', - 'yii\validators\ExistValidator' => YII2_PATH . '/validators/ExistValidator.php', - 'yii\validators\FileValidator' => YII2_PATH . '/validators/FileValidator.php', - 'yii\validators\FilterValidator' => YII2_PATH . '/validators/FilterValidator.php', - 'yii\validators\ImageValidator' => YII2_PATH . '/validators/ImageValidator.php', - 'yii\validators\InlineValidator' => YII2_PATH . '/validators/InlineValidator.php', - 'yii\validators\IpValidator' => YII2_PATH . '/validators/IpValidator.php', - 'yii\validators\NumberValidator' => YII2_PATH . '/validators/NumberValidator.php', - 'yii\validators\PunycodeAsset' => YII2_PATH . '/validators/PunycodeAsset.php', - 'yii\validators\RangeValidator' => YII2_PATH . '/validators/RangeValidator.php', - 'yii\validators\RegularExpressionValidator' => YII2_PATH . '/validators/RegularExpressionValidator.php', - 'yii\validators\RequiredValidator' => YII2_PATH . '/validators/RequiredValidator.php', - 'yii\validators\SafeValidator' => YII2_PATH . '/validators/SafeValidator.php', - 'yii\validators\StringValidator' => YII2_PATH . '/validators/StringValidator.php', - 'yii\validators\UniqueValidator' => YII2_PATH . '/validators/UniqueValidator.php', - 'yii\validators\UrlValidator' => YII2_PATH . '/validators/UrlValidator.php', - 'yii\validators\ValidationAsset' => YII2_PATH . '/validators/ValidationAsset.php', - 'yii\validators\Validator' => YII2_PATH . '/validators/Validator.php', - 'yii\web\Application' => YII2_PATH . '/web/Application.php', - 'yii\web\AssetBundle' => YII2_PATH . '/web/AssetBundle.php', - 'yii\web\AssetConverter' => YII2_PATH . '/web/AssetConverter.php', - 'yii\web\AssetConverterInterface' => YII2_PATH . '/web/AssetConverterInterface.php', - 'yii\web\AssetManager' => YII2_PATH . '/web/AssetManager.php', - 'yii\web\BadRequestHttpException' => YII2_PATH . '/web/BadRequestHttpException.php', - 'yii\web\CacheSession' => YII2_PATH . '/web/CacheSession.php', - 'yii\web\CompositeUrlRule' => YII2_PATH . '/web/CompositeUrlRule.php', - 'yii\web\ConflictHttpException' => YII2_PATH . '/web/ConflictHttpException.php', - 'yii\web\Controller' => YII2_PATH . '/web/Controller.php', - 'yii\http\Cookie' => YII2_PATH . '/http/Cookie.php', - 'yii\http\CookieCollection' => YII2_PATH . '/http/CookieCollection.php', - 'yii\web\DbSession' => YII2_PATH . '/web/DbSession.php', - 'yii\web\ErrorAction' => YII2_PATH . '/web/ErrorAction.php', - 'yii\web\ErrorHandler' => YII2_PATH . '/web/ErrorHandler.php', - 'yii\web\ForbiddenHttpException' => YII2_PATH . '/web/ForbiddenHttpException.php', - 'yii\web\GoneHttpException' => YII2_PATH . '/web/GoneHttpException.php', - 'yii\web\GroupUrlRule' => YII2_PATH . '/web/GroupUrlRule.php', - 'yii\http\HeaderCollection' => YII2_PATH . '/http/HeaderCollection.php', - 'yii\web\HtmlResponseFormatter' => YII2_PATH . '/web/HtmlResponseFormatter.php', - 'yii\web\HttpException' => YII2_PATH . '/web/HttpException.php', - 'yii\web\IdentityInterface' => YII2_PATH . '/web/IdentityInterface.php', - 'yii\web\JqueryAsset' => YII2_PATH . '/web/JqueryAsset.php', - 'yii\web\JsExpression' => YII2_PATH . '/web/JsExpression.php', - 'yii\web\JsonParser' => YII2_PATH . '/web/JsonParser.php', - 'yii\web\JsonResponseFormatter' => YII2_PATH . '/web/JsonResponseFormatter.php', - 'yii\web\Link' => YII2_PATH . '/web/Link.php', - 'yii\web\Linkable' => YII2_PATH . '/web/Linkable.php', - 'yii\web\MethodNotAllowedHttpException' => YII2_PATH . '/web/MethodNotAllowedHttpException.php', - 'yii\web\MultiFieldSession' => YII2_PATH . '/web/MultiFieldSession.php', - 'yii\web\MultipartFormDataParser' => YII2_PATH . '/web/MultipartFormDataParser.php', - 'yii\web\NotAcceptableHttpException' => YII2_PATH . '/web/NotAcceptableHttpException.php', - 'yii\web\NotFoundHttpException' => YII2_PATH . '/web/NotFoundHttpException.php', - 'yii\web\RangeNotSatisfiableHttpException' => YII2_PATH . '/web/RangeNotSatisfiableHttpException.php', - 'yii\web\Request' => YII2_PATH . '/web/Request.php', - 'yii\web\RequestParserInterface' => YII2_PATH . '/web/RequestParserInterface.php', - 'yii\web\Response' => YII2_PATH . '/web/Response.php', - 'yii\web\ResponseFormatterInterface' => YII2_PATH . '/web/ResponseFormatterInterface.php', - 'yii\web\ServerErrorHttpException' => YII2_PATH . '/web/ServerErrorHttpException.php', - 'yii\web\Session' => YII2_PATH . '/web/Session.php', - 'yii\web\SessionIterator' => YII2_PATH . '/web/SessionIterator.php', - 'yii\web\TooManyRequestsHttpException' => YII2_PATH . '/web/TooManyRequestsHttpException.php', - 'yii\web\UnauthorizedHttpException' => YII2_PATH . '/web/UnauthorizedHttpException.php', - 'yii\web\UnprocessableEntityHttpException' => YII2_PATH . '/web/UnprocessableEntityHttpException.php', - 'yii\web\UnsupportedMediaTypeHttpException' => YII2_PATH . '/web/UnsupportedMediaTypeHttpException.php', - 'yii\http\UploadedFile' => YII2_PATH . '/http/UploadedFile.php', - 'yii\web\UrlManager' => YII2_PATH . '/web/UrlManager.php', - 'yii\web\UrlNormalizer' => YII2_PATH . '/web/UrlNormalizer.php', - 'yii\web\UrlNormalizerRedirectException' => YII2_PATH . '/web/UrlNormalizerRedirectException.php', - 'yii\web\UrlRule' => YII2_PATH . '/web/UrlRule.php', - 'yii\web\UrlRuleInterface' => YII2_PATH . '/web/UrlRuleInterface.php', - 'yii\web\User' => YII2_PATH . '/web/User.php', - 'yii\web\UserEvent' => YII2_PATH . '/web/UserEvent.php', - 'yii\web\View' => YII2_PATH . '/web/View.php', - 'yii\web\ViewAction' => YII2_PATH . '/web/ViewAction.php', - 'yii\web\XmlResponseFormatter' => YII2_PATH . '/web/XmlResponseFormatter.php', - 'yii\web\YiiAsset' => YII2_PATH . '/web/YiiAsset.php', - 'yii\widgets\ActiveField' => YII2_PATH . '/widgets/ActiveField.php', - 'yii\widgets\ActiveForm' => YII2_PATH . '/widgets/ActiveForm.php', - 'yii\widgets\ActiveFormAsset' => YII2_PATH . '/widgets/ActiveFormAsset.php', - 'yii\widgets\BaseListView' => YII2_PATH . '/widgets/BaseListView.php', - 'yii\widgets\Block' => YII2_PATH . '/widgets/Block.php', - 'yii\widgets\Breadcrumbs' => YII2_PATH . '/widgets/Breadcrumbs.php', - 'yii\widgets\ContentDecorator' => YII2_PATH . '/widgets/ContentDecorator.php', - 'yii\widgets\DetailView' => YII2_PATH . '/widgets/DetailView.php', - 'yii\widgets\FragmentCache' => YII2_PATH . '/widgets/FragmentCache.php', - 'yii\widgets\InputWidget' => YII2_PATH . '/widgets/InputWidget.php', - 'yii\widgets\LinkPager' => YII2_PATH . '/widgets/LinkPager.php', - 'yii\widgets\LinkSorter' => YII2_PATH . '/widgets/LinkSorter.php', - 'yii\widgets\ListView' => YII2_PATH . '/widgets/ListView.php', - 'yii\widgets\MaskedInput' => YII2_PATH . '/widgets/MaskedInput.php', - 'yii\widgets\MaskedInputAsset' => YII2_PATH . '/widgets/MaskedInputAsset.php', - 'yii\widgets\Menu' => YII2_PATH . '/widgets/Menu.php', - 'yii\widgets\Pjax' => YII2_PATH . '/widgets/Pjax.php', - 'yii\widgets\PjaxAsset' => YII2_PATH . '/widgets/PjaxAsset.php', - 'yii\widgets\Spaceless' => YII2_PATH . '/widgets/Spaceless.php', -]; diff --git a/framework/composer.json b/framework/composer.json index 05bfb3d..e628c52 100644 --- a/framework/composer.json +++ b/framework/composer.json @@ -78,7 +78,10 @@ "bower-asset/yii2-pjax": "~2.0.1" }, "autoload": { - "psr-4": {"yii\\": ""} + "psr-4": {"yii\\": ""}, + "classmap": [ + "Yii.php" + ] }, "bin": [ "yii"