Updating Yii 2 to the latest version based on Composer, upgrading Yii Framework from version 2.0.35 to 2.0.41.1
1. Composer has been installed before, to ensure the latest version is used. You can update Composer to version 2.0.12 by running composer self-update, as shown in Figure 1
PS E:\> composer self-update Updating to version 2.0.12 (stable channel). downloading (100%) use composer self-update --rollback to return to version 1.10.6
2. Updating Yii 2 to the latest version by running Composer Update, the Yii Framework has been upgraded from version 2.0.35 to 2.0.41.1, as shown in Figure 2
PS E:\wwwroot\github-shuijingwan-yii2-app-advanced> composer update
The "FXP/Compose-Asset-Plugin" plugin (Installed globally) was skipped because it requires it require a plugin API version ("^1.0") that doesn't match your composer update with the "--no-plugins" option.
Loading composer repositories with package information
Updating dependencies
lock file operations: 1 install, 68 updates, 1 remove
- Removing FZANINOTTO/Faker (v1.9.1)
- Upgrading Behat/Gherkin (v4.6.2 => v4.8.0)
- Upgrading bower-asset/jQuery (3.4.1 => 3.5.1)
- Upgrading codeception/codeception (4.1.5 => 4.1.20)
- Upgrading codeception/lib-asserts (1.12.0 => 1.13.2)
- Upgrading codeception/lib-innerBrowser (1.3.1 => 1.4.2)
- Upgrading codeception/module-asserts (1.2.1 => 1.3.1)
- Upgrading codeception/module-filesystem (1.0.2 => 1.0.3)
- upgrade codeception/module-yii2 (1.1.0 => 1.1.2)
- Upgrading codeception/phpunit-wrapper (8.1.2 => 8.1.4)
- Upgrading codeception/stub (3.6.1 => 3.7.0)
- Upgrading doctrine/instantiator (1.3.1 => 1.4.0)
- Upgrading egulias/email-validator (2.1.17 => 3.1.1)
- Upgrading eZyang/HTMLPurifier (v4.12.0 => v4.13.0)
- Locking FakerPHP/Faker (v1.14.1)
- Upgrading guzzlehttp/psr7 (1.6.1 => 1.8.1)
- Upgrading myclabs/deep-copy (1.9.5 => 1.10.2)
- upgrade opis/closure (3.5.3 => 3.6.2)
- Upgrading paragonie/random_compat (v2.0.18 => v2.0.19)
- Upgrading Phar-io/Manifest (1.0.3 => 2.0.1)
- Upgrading Phar-io/Version (2.0.1 => 3.1.0)
- Upgrading phpDocumentor/reflection-common (2.1.0 => 2.2.0)
- Upgrading phpDocumentor/reflection-docblock (5.1.0 => 5.2.2)
- Upgrading phpDocumentor/type-resolver (1.1.0 => 1.4.0)
- Upgrading PHPSPEC/php-diff (v1.1.0 => v1.1.3)
- Upgrading PHPSPEC/prophecy (v1.10.3 => 1.13.0)
- Upgrading phpunit/php-code-coverage (7.0.10 => 7.0.14)
- Upgrading phpunit/php-file-iterator (2.0.2 => 2.0.3)
- Upgrading phpunit/php-timer (2.1.2 => 2.1.3)
- Upgrading phpunit/php-token-stream (3.1.1 => 4.0.4)
- Upgrading phpunit/phpunit (8.5.5 => 8.5.15)
- Upgrading PSR/Container (1.0.0 => 1.1.1)
- Upgrading sebastian/code-unit-reverse-lookup (1.0.1 => 1.0.2)
- Upgrading Sebastian/Comparator (3.0.2 => 3.0.3)
- Upgrading sebastian/diff (3.0.2 => 3.0.3)
- Upgrading sebastian/environment (4.2.3 => 4.2.4)
- Upgrading sebastian/exporter (3.1.2 => 3.1.3)
- Upgrading sebastian/global-state (3.0.0 => 3.0.1)
- Upgrading sebastian/object-enumerator (3.0.3 => 3.0.4)
- Upgrading sebastian/object-reflector (1.1.1 => 1.1.2)
- Upgrading sebastian/recursion-context (3.0.0 => 3.0.1)
- Upgrading sebastian/resource-operations (2.0.1 => 2.0.2)
- Upgrading sebastian/type (1.1.3 => 1.1.4)
- Upgrading SwiftMailer/SwiftMailer (v6.2.3 => v6.2.7)
- Upgrading symfony/console (v5.1.0 => v5.2.6)
- Upgrading symfony/CSS-selector (v5.1.0 => v5.2.4)
- Upgrading symfony/deprecation-contracts (v2.1.2 => v2.2.0)
- Upgrading symfony/dom-crawler (v4.4.9 => v4.4.20)
- Upgrading symfony/event-dispatcher (v5.1.0 => v5.2.4)
- Upgrading symfony/event-dispatcher-contracts (v2.1.2 => v2.2.0)
- Upgrading symfony/finder (v5.1.0 => v5.2.4)
- Upgrading symfony/polyfill-ctype (v1.17.0 => v1.22.1)
- Upgrading symfony/polyfill-iconv (v1.17.0 => v1.22.1)
- Upgrading symfony/polyfill-intl-graphe (v1.17.0 => v1.22.1)
- Upgrading symfony/polyfill-intl-idn (v1.17.0 => v1.22.1)
- Upgrading symfony/polyfill-intl-normalizer (v1.17.0 => v1.22.1)
- Upgrading symfony/polyfill-mbstring (v1.17.0 => v1.22.1)
- Upgrading symfony/polyfill-php72 (v1.17.0 => v1.22.1)
- Upgrading symfony/polyfill-php73 (v1.17.0 => v1.22.1)
- Upgrading symfony/polyfill-php80 (v1.17.0 => v1.22.1)
- Upgrading symfony/service-contracts (v2.1.2 => v2.2.0)
- Upgrading symfony/string (v5.1.0 => v5.2.6)
- Upgrading symfony/YAML (v5.1.0 => v5.2.5)
- Upgrading theseer/tokenizer (1.1.3 => 1.2.0)
- Upgrading WebMozart/Assert (1.8.0 => 1.10.0)
- upgrade yiisoft/yii2 (2.0.35 => 2.0.41.1)
- Upgrading yiisoft/yii2-composer (2.0.9 => 2.0.10)
- Upgrading yiisoft/yii2-debug (2.1.13 => 2.1.16)
- Upgrading yiisoft/yii2-faker (2.0.4 => 2.0.5)
- Upgrading yiisoft/yii2-httpClient (2.0.12 => 2.0.13)
Writing lock file
Installing dependencies from lock file (inclusion require-dev)
Package operations: 1 install, 68 updates, 1 remove
- downloading yiisoft/yii2-composer (2.0.10)
- downloading behat/gherkin (v4.8.0)
- downloading bower-asset/jquery (3.5.1)
- downloading sebastian/diff (3.0.3)
- downloading sebastian/recursion-context (3.0.1)
- downloading sebastian/exporter (3.1.3)
- Downloading Sebastian/Comparator (3.0.3)
- downloading sebastian/type (1.1.4)
- downloading sebastian/resource-operations (2.0.2)
- downloading sebastian/object-reflector (1.1.2)
- downloading sebastian/object-enumerator (3.0.4)
- downloading sebastian/global-state (3.0.1)
- downloading sebastian/environment (4.2.4)
- downloading phpunit/php-timer (2.1.3)
- downloading phpunit/php-file-iterator (2.0.3)
- downloading theseer/tokenizer (1.2.0)
- downloading phpunit/php-token-stream (4.0.4)
- downloading phpunit/php-code-coverage (7.0.14)
- downloading phpspec/prophecy (1.13.0)
- downloading phar-io/version (3.1.0)
- downloading phar-io/manifest (2.0.1)
- downloading phpunit/phpunit (8.5.15)
- downloading codeception/phpunit-wrapper (8.1.4)
- downloading codeception/lib-asserts (1.13.2)
- downloading symfony/deprecation-contracts (v2.2.0)
- downloading symfony/yaml (v5.2.5)
- downloading symfony/finder (v5.2.4)
- downloading symfony/event-dispatcher-contracts (v2.2.0)
- downloading symfony/event-dispatcher (v5.2.4)
- downloading symfony/css-selector (v5.2.4)
- downloading symfony/string (v5.2.6)
- downloading symfony/console (v5.2.6)
- downloading guzzlehttp/psr7 (1.8.1)
- downloading codeception/stub (3.7.0)
- downloading codeception/codeception (4.1.20)
- downloading codeception/module-asserts (1.3.1)
- downloading codeception/module-filesystem (1.0.3)
- downloading symfony/dom-crawler (v4.4.20)
- downloading codeception/lib-innerBrowser (1.4.2)
- downloading codeception/module-yii2 (1.1.2)
- downloading symfony/polyfill-php72 (v1.22.1)
- downloading symfony/polyfill-intl-idn (v1.22.1)
- downloading egulias/email-validator (3.1.1)
- Downloading eZyang/HTMLPurifier (v4.13.0)
- downloading yiisoft/yii2 (2.0.41.1)
- downloading yiisoft/yii2-httpclient (2.0.13)
- downloading paragonie/random_compat (v2.0.19)
- downloading symfony/polyfill-iconv (v1.22.1)
- downloading opis/closure (3.6.2)
- downloading yiisoft/yii2-debug (2.1.16)
- downloading fakerphp/faker (v1.14.1)
- downloading yiisoft/yii2-faker (2.0.5)
- downloading phpspec/php-diff (v1.1.3)
- Downloading SwiftMailer/SwiftMailer (v6.2.7)
- Removing FZANINOTTO/Faker (v1.9.1)
- Upgrading yiisoft/yii2-composer (2.0.9 => 2.0.10): Extracting Archive
- Upgrading Behat/Gherkin (v4.6.2 => v4.8.0): Extracting Archive
- Upgrading bower-asset/jquery (3.4.1 => 3.5.1): Extracting Archive
- Upgrading sebastian/diff (3.0.2 => 3.0.3): Extracting Archive
- Upgrading sebastian/recursion-context (3.0.0 => 3.0.1): Extracting Archive
- Upgrading Sebastian/Exporter (3.1.2 => 3.1.3): Extracting Archive
- Upgrading Sebastian/Comparator (3.0.2 => 3.0.3): Extracting Archive
- Upgrading Sebastian/Type (1.1.3 => 1.1.4): Extracting Archive
- Upgrading sebastian/resource-operations (2.0.1 => 2.0.2): Extracting Archive
- Upgrading sebastian/object-reflector (1.1.1 => 1.1.2): Extracting Archive
- Upgrading sebastian/object-enumerator (3.0.3 => 3.0.4): Extracting Archive
- Upgrading sebastian/global-state (3.0.0 => 3.0.1): Extracting Archive
- Upgrading Sebastian/Environment (4.2.3 => 4.2.4): Extracting Archive
- Upgrading phpunit/php-timer (2.1.2 => 2.1.3): Extracting Archive
- Upgrading phpunit/php-file-iterator (2.0.2 => 2.0.3): Extracting Archive
- Upgrading theseer/tokenizer (1.1.3 => 1.2.0): extracting archive
- Upgrading sebastian/code-unit-reverse-lookup (1.0.1 => 1.0.2): Extracting Archive
- Upgrading phpunit/php-token-stream (3.1.1 => 4.0.4): Extracting Archive
- Upgrading phpunit/php-code-coverage (7.0.10 => 7.0.14): Extracting Archive
- Upgrading symfony/polyfill-ctype (v1.17.0 => v1.22.1): Extracting Archive
- Upgrading WebMozart/Assert (1.8.0 => 1.10.0): Extracting Archive
- Upgrading phpDocumentor/reflection-common (2.1.0 => 2.2.0): Extracting Archive
- Upgrading phpDocumentor/type-resolver (1.1.0 => 1.4.0): Extracting Archive
- Upgrading phpDocumentor/reflection-docblock (5.1.0 => 5.2.2): Extracting Archive
- Upgrading DocTrine/Instantiator (1.3.1 => 1.4.0): Extracting Archive
- Upgrading phpsspec/prophecy (v1.10.3 => 1.13.0): Extracting Archive
- Upgrading Phar-io/Version (2.0.1 => 3.1.0): Extracting Archive
- Upgrading Phar-io/Manifest (1.0.3 => 2.0.1): Extracting Archive
- Upgrading mylabs/deep-copy (1.9.5 => 1.10.2): Extracting Archive
- Upgrading phpunit/phpunit (8.5.5 => 8.5.15): Extracting Archive
- Upgrading codeception/phpunit-wrapper (8.1.2 => 8.1.4): Extracting Archive
- Upgrading codeception/lib-asserts (1.12.0 => 1.13.2): Extracting Archive
- Upgrading symfony/deprecation-contracts (v2.1.2 => v2.2.0): Extracting Archive
- Upgrading Symfony/Yaml (v5.1.0 => v5.2.5): Extracting Archive
- Upgrading symfony/finder (v5.1.0 => v5.2.4): Extracting Archive
- Upgrading symfony/polyfill-php80 (v1.17.0 => v1.22.1): Extracting Archive
- Upgrading Symfony/Event-Dispatcher-Contracts (v2.1.2 => v2.2.0): Extracting Archive
- Upgrading symfony/event-dispatcher (v5.1.0 => v5.2.4): Extracting Archive
- Upgrading symfony/CSS-selector (v5.1.0 => v5.2.4): Extracting Archive
- Upgrading symfony/polyfill-mbstring (v1.17.0 => v1.22.1): Extracting Archive
- Upgrading symfony/polyfill-intl-normalizer (v1.17.0 => v1.22.1): Extracting Archive
- Upgrading symfony/polyfill-intl-graphme (v1.17.0 => v1.22.1): Extracting Archive
- Upgrading symfony/string (v5.1.0 => v5.2.6): Extracting Archive
- Upgrading PSR/Container (1.0.0 => 1.1.1): Extracting Archive
- Upgrading symfony/service-contracts (v2.1.2 => v2.2.0): Extracting Archive
- Upgrading symfony/polyfill-php73 (v1.17.0 => v1.22.1): Extracting Archive
- Upgrading symfony/console (v5.1.0 => v5.2.6): Extracting Archive
- Upgrading GuzzleHttp/PSR7 (1.6.1 => 1.8.1): Extracting Archive
- Upgrading codeception/stub (3.6.1 => 3.7.0): Extracting Archive
- Upgrading codeception/codeception (4.1.5 => 4.1.20): Extracting Archive
- Upgrading Codeception/Module-Asserts (1.2.1 => 1.3.1): Extracting Archive
- Upgrading codeception/module-filesystem (1.0.2 => 1.0.3): Extracting Archive
- Upgrading symfony/dom-crawler (v4.4.9 => v4.4.20): Extracting Archive
- Upgrading codeception/lib-innerBrowser (1.3.1 => 1.4.2): Extracting Archive
- Upgrading codeception/module-yii2 (1.1.0 => 1.1.2): Extracting Archive
- Upgrading symfony/polyfill-php72 (v1.17.0 => v1.22.1): Extracting Archive
- Upgrading symfony/polyfill-intl-idn (v1.17.0 => v1.22.1): Extracting Archive
- Upgrading egulias/email-validator (2.1.17 => 3.1.1): Extracting Archive
- Upgrading EZYang/HTMLPurifier (v4.12.0 => v4.13.0): Extracting Archive
- upgrade yiisoft/yii2 (2.0.35 => 2.0.41.1): Extracting Archive
- upgrade yiisoft/yii2-httpclient (2.0.12 => 2.0.13): Extracting Archive
- Upgrading paragonie/random_compat (v2.0.18 => v2.0.19): Extracting Archive
- Upgrading symfony/polyfill-iconv (v1.17.0 => v1.22.1): Extracting Archive
- Upgrading OPIS/Closure (3.5.3 => 3.6.2): Extracting Archive
- upgrade yiisoft/yii2-debug (2.1.13 => 2.1.16): Extracting Archive
- Installing FakerPHP/Faker (v1.14.1): Extracting Archive
- Upgrading yiisoft/yii2-faker (2.0.4 => 2.0.5): Extracting Archive
- Upgrading PHPSPEC/php-diff (v1.1.0 => v1.1.3): Extracting Archive
- Upgrading SwiftMailer/SwiftMailer (v6.2.3 => v6.2.7): Extracting Archive
Package flow/jsonpath is abandoned, you should avoid using it.
Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested.
GENERATING AUTOLOAD FILES
47 packages you are using are looking for funding.
Use the `Composer Fund` command to find out more!
Seems you have upgraded yii framework from version 2.0.35 to 2.0.41.1.
Please check the upgrade notes for possible incompatible changes
and adjust your application code accordingly.
Upgrade from Yii 2.0.40
----------------------
* the methods `GetAuthKey()` and `ValidateAuthKey()` of `yii\Web\IdentityInterface` are now also used to validate active
sessions (previously these methods are only used for cookie-based login).
Implement these methods yet (an example can be found in the guide under
`Security` -> `Authentication`). Alternatively, you can simply return `null` in the getAuthKey()` method to keep
The old behavior (that is, no validation of active sessions).
An authenticated identity, should now call `yii\web\user::switchIdentity()`, `yii\web\user::login()`
or `yii\web\user::logout()` to recreate the active session with the new `authkey`.
Upgrade from Yii 2.0.39.3
-----------------------
* priority of processing `yii\base\arrayable`, and `jsonserializable` data has been reversed
first now) in `yii\base\model`, and `yii\rest\serializer`. If your application relies on the previous priority you need
To fix it manually based on the complexity of desired (de) serialization result.
Upgrade from Yii 2.0.38
----------------------
* The storage structure of the file cache has been changed when you use `\yii\Caching\FileCache::$KeyPrefix`.
It is worth warming up the cache again if there is a logical dependency when working with the file cache.
* `Yii\Web\Session` now respects thesession.use_strict_modeini directive.
In case you use a custom `Session` class and have overwriteten the `Session::openSession()` and/or
`Session::WriteSession()` function changes might be required:
* when in strict mode the `opensession()` function should check if the requested session id exists
(And mark it for forced regeneration if not).
For example, the `dbSession` does this at the beginning of the function as follows:
```php
if ($this->GetUsestrictMode()) {
$id = $this->getId();
if (!$this->getReadQuery($id)->exists()) {
//This session id does not exist, mark it for forced regeneration
$this->_forceReGenerateId = $id;
}
}
// ... normal function continues ...
```
* When in strict mode the `WriteSession()` function should ignore writing the session under the old id.
For example, the `dbSession` does this at the beginning of the function as follows:
```php
if ($this->GetUsicalTmode() && $id === $this->_ForceReGenerateId) {
//ignore write when forceRegenerate is active for this id
return true;
}
// ... normal function continues ...
```
> note: the sample code above is specific for the `yii\web\dbsesssion` class.
Make sure you use the correct implementation based on your parent class,
E.G.
> note: in case your custom functions call their
Code if those parents implement the `UseStrictMode` checks.
> warning: in case `openSession()` and/or `writeSession()` functions do not implementation the
The session could be stored under a malicious id without warning even if `usestrictmode` is enabled.
Upgrade from Yii 2.0.37
----------------------
* Resolving di references inside of arrays in dependencies was made optional and turned off by default.
to turn it on, set `resolvearrays` of container instance to `true`.
Upgrade from Yii 2.0.36
----------------------
* `yii\db\exception::getcode()` now return full pdo code that is sqlstate string. code
with an integer value, adjust your code.
Upgrade from Yii 2.0.35
----------------------
* Inline validator signature has been updated with 4th parameter `current`:
```php
/**
* @param mixed $current the currently validated value of attribute
*/
function ($attribute, $params, $validator, $current)
```
* Behavior of inline validator used as a rule of `eachvalidator` has been changed - `$attribute` now refers to original
modelS attribute and not its temporary counterpart:
```php
public $array_attribute =['first', 'second'];
public function rules()
{
return[
[array_attribute,each,Rule=> [CustomValidatingMethod]#atfp_close_translate_span#],
];
}
public function CustomValidatingMethod($attribute, $params, $validator, $current)
{
// $attribute ===array_attribute(as before)
// now: $this->$attribute ===['first', 'second'](on every iteration)
// previous:
// $this->$attribute ===first(on first iteration)
// $this->$attribute ===second(on second iteration)
// use now $current instead
// $current ===first(on first iteration)
// $current ===second(on second iteration)
}
```
* `$this` in an inline validator defined as closure now referred to model instance. If you need to access the object registering
The validator, pass its instance through use statement:
```php
$registrar = $this;
$validator = function($attribute, $params, $validator, $current) use ($registrar) {
// ...
}
```
* Validator close callbacks should not be declared as static.
* If you have any controllers that override the `init()` method, make sure they are calling `parent::init()` at
The beginning, as demonstrated in the[component guide](https://www.yiiframework.com/doc/guide/2.0/en/concept-components).
You can find the upgrade notes for all versions online at:
https://github.com/yiisoft/yii2/blob/2.0.41.1/framework/upgrade.md
PS e:\wwwroot\github-shuijingwan-yii2-app-advanced>
3. First solve the prompt information related to “fxp/composer-asset-plugin”. as shown in Figure 3
The "FXP/Compose-Asset-Plugin" plugin (Installed globally) was skipped because it requires it require a plugin API version ("^1.0") that doesn't match your composer update with the "--no-plugins" option.
4. Reference URL: https://www.yiiframework.com/doc/guide/2.0/zh-cn/structure-assets . Note: Starting with 2.0.13, both basic and advanced application templates are configured using Asset-Packagist by default. Determines “fxp/composer-asset-plugin” globally. as shown in Figure 4
PS e:\wwwroot\github-shuijingwan-yii2-app-advanced> composer global remove fxp/composer-asset-plugin
Changed current directory to C:/users/administrator/appdata/roaming/composer
The "FXP/Compose-Asset-Plugin" plugin was skipped because it requires it require a plugin API version ("^1.0") that does not match your composer installation ("2.0.0"). You may need to run composer update with the "--no-plugins" option.
FXP/Composer-Asset-Plugin is not required in your composer.json and has not been removed
./composer.json has been updated
The "FXP/Compose-Asset-Plugin" plugin was skipped because it requires it require a plugin API version ("^1.0") that does not match your composer installation ("2.0.0"). You may need to run composer update with the "--no-plugins" option.
running composer update fxp/composer-asset-plugin
Loading composer repositories with package information
Updating dependencies
lock file operations: 0 installs, 0 updates, 1 removal
- Removing FXP/Composer-Asset-Plugin (v1.4.4)
Writing lock file
Installing dependencies from lock file (inclusion require-dev)
Package operations: 0 installs, 0 updates, 1 remove
- Removing FXP/Composer-Asset-Plugin (v1.4.4)
GENERATING AUTOLOAD FILES
PS e:\wwwroot\github-shuijingwan-yii2-app-advanced>
5. Run the Composer Update to update Yii 2 to the latest version again, and there is no error message related to “fxp/composer-asset-plugin”. However, there are still other prompts. as shown in Figure 5
PS E:\wwwroot\github-shuijingwan-yii2-app-advanced> composer update Loading composer repositories with package information Updating dependencies Nothing to modify in lock file Installing dependencies from lock file (inclusion require-dev) Package operations: 0 installs, 0 updates, 0 removes Package flow/jsonpath is abandoned, you should avoid using it. Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested. GENERATING AUTOLOAD FILES 47 packages you are using are looking for funding. Use the `Composer Fund` command to find out more!
6. The package flow/jsonpath is abandoned, you should avoid it. Please use SoftCreatr/JsonPath instead. Decided to uninstall flow/jsonpath , install SoftCreatr/JsonPath. as shown in Figure 6
PS e:\wwwroot\github-shuijingwan-yii2-app-advanced> composer remove flow/jsonpath ./composer.json has been updated running composer update flow/jsonpath Loading composer repositories with package information Updating dependencies lock file operations: 0 installs, 0 updates, 1 removal - Removing flow/jsonpath (0.5.0) Writing lock file Installing dependencies from lock file (inclusion require-dev) Package operations: 0 installs, 0 updates, 1 remove - Removing flow/jsonpath (0.5.0) Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested. GENERATING AUTOLOAD FILES 47 packages you are using are looking for funding. Use the `Composer Fund` command to find out more! PS e:\wwwroot\github-shuijingwan-yii2-app-advanced> composer require --prefer-dist softcreatr/jsonpath Using version ^0.7.3 for softcreatr/jsonpath ./composer.json has been updated Running composer update softcreatr/jsonpath Loading composer repositories with package information Updating dependencies lock file operations: 1 install, 0 updates, 0 removals - Locking SoftCreatr/JsonPath (0.7.3) Writing lock file Installing dependencies from lock file (inclusion require-dev) Package operations: 1 install, 0 updates, 0 removes - Downloading SoftCreatr/JsonPath (0.7.3) - Installing SoftCreatr/JsonPath (0.7.3): Extracting Archive Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested. GENERATING AUTOLOAD FILES 48 packages you are using are looking for funding. Use the `Composer Fund` command to find out more! PS e:\wwwroot\github-shuijingwan-yii2-app-advanced>
7. The package phpunit/php-token-stream is abandoned, you should avoid it. No replacement is recommended. Use Depends Depends command to find out whether a package that is already installed in your project is being depended on by other packages, and list them. Conclusion: phpunit/php-code-coverage depends on phpunit/php-token-stream, codeception/phpunit-wrapper, phpunit/phpunit depends on phpunit/php-coverage, codeception/codeception, codeception/lib-asserts, codeception/verify depends on codeception/phpunit-wrapper, layer-by-layer dependencies. Decided to keep this prompt, there is no solution for the time being. as shown in Figure 7
PS e:\wwwroot\github-shuijingwan-yii2-app-advanced> composer depends phpunit/php-token-stream phpunit/php-code-coverage 7.0.14 requires phpunit/php-token-stream (^3.1.1 || ^4.0) PS e:\wwwroot\github-shuijingwan-yii2-app-advanced> composer depends phpunit/php-code-coverage codeception/phpunit-wrapper 8.1.4 requires phpunit/php-code-coverage (^7.0) phpunit/phpunit 8.5.15 requires phpunit/php-code-coverage (^7.0.12) PS e:\wwwroot\github-shuijingwan-yii2-app-advanced> composer depends codeception/phpunit-wrapper Codeception/Codeception 4.1.20 requires Codeception/phpunit-wrapper (>6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0) codeception/lib-asserts 1.13.2 requires codeception/phpunit-wrapper (>6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0) Codeception/Verify 1.1.0 requires codeception/phpunit-wrapper (>6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.4) PS e:\wwwroot\github-shuijingwan-yii2-app-advanced> composer depends codeception/codeception shuijingwan/yii2-app-advanced dev-master requires (for development) codeception/codeception (^4.0) codeception/lib-innerBrowser 1.4.2 requires codeception/codeception (*@dev) codeception/module-asserts 1.3.1 requires codeception/codeception (*@dev) codeception/module-filesystem 1.0.3 requires codeception/codeception (^4.0) codeception/module-yii2 1.1.2 requires codeception/codeception (^4.0) PS e:\wwwroot\github-shuijingwan-yii2-app-advanced> composer depends phpunit/phpunit codeception/phpunit-wrapper 8.1.4 requires phpunit/phpunit (^8.0) codeception/stub 3.7.0 requires phpunit/phpunit (^8.4 | ^9.0) Codeception/Verify 1.1.0 requires phpunit/phpunit (> 6.0)
8. View Yii Framework 2.0 online Upgrade instructions: https://github.com/yiisoft/yii2/blob/2.0.41.1/framework/upgrade.md , understand the changes that may not be compatible, for example, extend some classes, and the properties and methods of these classes are adjusted in the new version.






