Browse Source

Fixes #14761: Removed Yii autoloader in favor of Composer's PSR-4 implementation

tags/3.0.0-alpha1
Alexander Makarov 7 years ago committed by GitHub
parent
commit
3c16faa5b0
  1. 3
      composer.json
  2. 121
      docs/guide/concept-autoloading.md
  3. 13
      docs/guide/helper-overview.md
  4. 1
      docs/guide/structure-applications.md
  5. 6
      docs/guide/structure-entry-scripts.md
  6. 1
      docs/guide/tutorial-console.md
  7. 67
      docs/guide/tutorial-yii-integration.md
  8. 53
      framework/BaseYii.php
  9. 1
      framework/CHANGELOG.md
  10. 5
      framework/UPGRADE.md
  11. 2
      framework/Yii.php
  12. 348
      framework/classes.php
  13. 5
      framework/composer.json

3
composer.json

@ -103,6 +103,9 @@
"yii\\cs\\": "cs/src/" "yii\\cs\\": "cs/src/"
} }
}, },
"autoload-dev": {
"psr-4": {"yiiunit\\": "tests/"}
},
"config": { "config": {
"platform": {"php": "7.1"} "platform": {"php": "7.1"}
}, },

121
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) 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). [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 > 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. mind that the content we are describing here applies to autoloading of interfaces and traits as well.
Using the Yii Autoloader <span id="using-yii-autoloader"></span> ## Configuring autoloader <span id="configuring-autoloader"></span>
------------------------
Since Yii uses Composer-generated autoloader, in order to configure it, `composer.json` should be used:
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`) ```json
* Each class must be saved in an individual file whose path is determined by the following algorithm: {
"name": "myorg/myapp",
```php "autoload": {
// $className is a fully qualified class name without the leading backslash "psr-4": {
$classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); "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 Note that test-specific requirements are in `autoload-dev` in order not to pollute autoloader in production where Composer
would be `@foo/bar/MyClass.php`. In order for this alias to be resolvable into a file path, is used with `--no-dev` flag.
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.
To add a custom namespace to the autoloader you need to define an alias for the base directory of the namespace using [[Yii::setAlias()]]. See [Composer documentation](https://getcomposer.org/doc/01-basic-usage.md#autoloading) for details.
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')`.
Class Map <span id="class-map"></span> 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. In order for your application to be aware of autoloader, require `vendor/autoload.php` in your entry script. For web
When the autoloader is loading a class, it will first check if the class is found in the map. If so, the corresponding application it is typically `index.php`, for console it's `yii`:
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:
```php ```php
Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; <?php
```
[Aliases](concept-aliases.md) can be used to specify class file paths. You should set the class map in the // comment out the following two lines when deployed to production
[bootstrapping](runtime-bootstrapping.md) process so that the map is ready before your classes are used. defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../vendor/autoload.php');
Using Other Autoloaders <span id="using-other-autoloaders"></span> $config = require(__DIR__ . '/../config/web.php');
-----------------------
Because Yii embraces Composer as a package dependency manager, it is recommended that you also install (new yii\web\Application($config))->run();
the Composer autoloader. If you are using 3rd-party libraries that have their own autoloaders, you should
also install those.
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 ## Using autoloader <span id="using-autoloader"></span>
of your class autoloading may be degraded, and you must follow the rules set by Composer in order for your classes
to be autoloadable.
> Info: If you do not want to use the Yii autoloader, you must create your own version of the `Yii.php` file To make use of the class autoloader, you should follow two simple rules when creating and naming your classes:
and include it in your [entry script](structure-entry-scripts.md).
* Each class must be under a [namespace](http://php.net/manual/en/language.namespaces.php) (e.g. `foo\bar\MyClass`)
Autoloading Extension Classes <span id="autoloading-extension-classes"></span> * 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.
The Yii autoloader is capable of autoloading [extension](structure-extensions.md) classes. The sole requirement > Note: In fact, you can break 2nd rule if you need to store a class in a directory that doesn't match the namespace.
is that an extension specifies the `autoload` section correctly in its `composer.json` file. Please refer to the > See [Composer documentation](https://getcomposer.org/doc/01-basic-usage.md#autoloading).
[Composer documentation](https://getcomposer.org/doc/04-schema.md#autoload) for more details about specifying `autoload`.
For example, if a class name and namespace is `foo\bar\MyClass` the file would be `bar/MyClass.php` and `foo` will be
In case you do not use the Yii autoloader, the Composer autoloader can still autoload extension classes for you. 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`.

13
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`. 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 Next, in your application's `composer.json`, add the class to the class map to load your custom
after including the `yii.php` file to tell the [Yii class autoloader](concept-autoloading.md) to load your custom
class instead of the original helper class from the framework: class instead of the original helper class from the framework:
```php ```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 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 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. helper for that.

1
docs/guide/structure-applications.md

@ -20,7 +20,6 @@ a [configuration](concept-configurations.md) and apply it to the application, as
```php ```php
require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
// load application configuration // load application configuration
$config = require __DIR__ . '/../config/web.php'; $config = require __DIR__ . '/../config/web.php';

6
docs/guide/structure-entry-scripts.md

@ -36,9 +36,6 @@ defined('YII_ENV') or define('YII_ENV', 'dev');
// register Composer autoloader // register Composer autoloader
require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/../vendor/autoload.php';
// include Yii class file
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
// load application configuration // load application configuration
$config = require __DIR__ . '/../config/web.php'; $config = require __DIR__ . '/../config/web.php';
@ -68,9 +65,6 @@ defined('YII_ENV') or define('YII_ENV', 'dev');
// register Composer autoloader // register Composer autoloader
require __DIR__ . '/vendor/autoload.php'; require __DIR__ . '/vendor/autoload.php';
// include Yii class file
require __DIR__ . '/vendor/yiisoft/yii2/Yii.php';
// load application configuration // load application configuration
$config = require __DIR__ . '/config/console.php'; $config = require __DIR__ . '/config/console.php';

1
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'); defined('YII_ENV') or define('YII_ENV', 'dev');
require __DIR__ . '/vendor/autoload.php'; require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/vendor/yiisoft/yii2/Yii.php';
$config = require __DIR__ . '/config/console.php'; $config = require __DIR__ . '/config/console.php';

67
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. 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. 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 classes in the installed Composer packages can be autoloaded using the Composer autoloader.
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';
```
### Using Downloaded Libraries <span id="using-downloaded-libs"></span> ### Using Downloaded Libraries <span id="using-downloaded-libs"></span>
@ -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, 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. 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) 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 the installation is done before you include the `Yii.php` file so that of your application. It is recommended to put `require` statements before Composer autoloader file so that
the Yii class autoloader can take precedence in autoloading classes. 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/), 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 you may use the Composer autoloader to autoload the classes. You need to declare each root namespace used in its classes
[root alias](concept-aliases.md#defining-aliases) for each root namespace used in its classes. For example, in `composer.json`. For example,
assume you have installed a library in the directory `vendor/foo/bar`, and the library classes are under 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 ```json
[ {
'aliases' => [ "name": "myorg/myapp",
'@xyz' => '@vendor/foo/bar', "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 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: to include the classes on demand:
* Identify which classes the library contains. * 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) * List the classes and the corresponding file paths in the application `composer.json`:
of the application. For example, ```json
```php "autoload": {
Yii::$classMap['Class1'] = 'path/to/Class1.php'; "psr-4": {
Yii::$classMap['Class2'] = 'path/to/Class2.php'; "app\\": ""
``` },
"classmap": [
"path/to/Class1.php",
"path/to/Class2.php",
"path/to/library/",
]
},
```
Using Yii in Third-Party Systems <span id="using-yii-in-others"></span> Using Yii in Third-Party Systems <span id="using-yii-in-others"></span>
@ -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: Next, you should modify the entry script of the 3rd-party system by including the following code at the beginning:
```php ```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'; $yiiConfig = require __DIR__ . '/../config/yii/web.php';
new yii\web\Application($yiiConfig); // Do NOT call run() here 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 // copy-paste the code from YiiBase (1.x) here
} }
Yii::$classMap = include($yii2path . '/classes.php'); // register Composer autoloader
// register Yii 2 autoloader via Yii 1 require(__DIR__ . '/../vendor/autoload.php');
Yii::registerAutoloader(['yii\BaseYii', 'autoload']);
// create the dependency injection container // create the dependency injection container
Yii::$container = new yii\di\Container; Yii::$container = new yii\di\Container;
``` ```

53
framework/BaseYii.php

@ -66,14 +66,6 @@ defined('YII_ENABLE_ERROR_HANDLER') or define('YII_ENABLE_ERROR_HANDLER', true);
class BaseYii 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 * @var \yii\console\Application|\yii\web\Application the application instance
*/ */
public static $app; 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. * Creates a new object using the given configuration.
* *
* You may view this method as an enhanced version of the `new` operator. * You may view this method as an enhanced version of the `new` operator.

1
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 #13885: Removed APC support in ApcCache. APCu works as before (samdark)
- Chg #14178: Removed HHVM-specific code (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) - 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 2.0.13 under development
------------------------ ------------------------

5
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` 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. component providing your own solution for cache dependency handling.
* Console command used to clear cache now calls related actions "clear" instead of "flush". * 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 Upgrade from Yii 2.0.12

2
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(); Yii::$container = new yii\di\Container();

348
framework/classes.php

@ -1,348 +0,0 @@
<?php
/**
* Yii core class map.
*
* This file is automatically generated by the "build classmap" command under the "build" folder.
* Do not modify it directly.
*
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
return [
'yii\base\Action' => 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',
];

5
framework/composer.json

@ -78,7 +78,10 @@
"bower-asset/yii2-pjax": "~2.0.1" "bower-asset/yii2-pjax": "~2.0.1"
}, },
"autoload": { "autoload": {
"psr-4": {"yii\\": ""} "psr-4": {"yii\\": ""},
"classmap": [
"Yii.php"
]
}, },
"bin": [ "bin": [
"yii" "yii"

Loading…
Cancel
Save