Repository: yiisoft/yii2 Branch: master Commit: f59774fd3b65 Files: 2161 Total size: 18.8 MB Directory structure: gitextract_0uomsu8b/ ├── .appveyor.yml ├── .codecov.yml ├── .dockerignore ├── .editorconfig ├── .git-blame-ignore-revs ├── .gitattributes ├── .github/ │ ├── CONTRIBUTING.md │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── SECURITY.md │ ├── actions/ │ │ ├── php-setup/ │ │ │ └── action.yml │ │ └── phpunit/ │ │ └── action.yml │ └── workflows/ │ ├── build.yml │ ├── ci-mariadb.yml │ ├── ci-mssql.yml │ ├── ci-mysql.yml │ ├── ci-node.yml │ ├── ci-oracle.yml │ ├── ci-pgsql.yml │ ├── ci-sqlite.yml │ ├── linter.yaml │ └── static.yml ├── .gitignore ├── .gitlab-ci.yml ├── .well-known/ │ └── funding-manifest-urls ├── Dockerfile ├── LICENSE.md ├── README.md ├── ROADMAP.md ├── build/ │ ├── .htaccess │ ├── build │ ├── build.bat │ ├── build.xml │ └── controllers/ │ ├── ClassmapController.php │ ├── DevController.php │ ├── MimeTypeController.php │ ├── PhpDocController.php │ ├── ReleaseController.php │ ├── TranslationController.php │ ├── Utf8Controller.php │ └── views/ │ └── translation/ │ └── report_html.php ├── code-of-conduct.md ├── composer.json ├── contrib/ │ └── completion/ │ ├── bash/ │ │ └── yii │ └── zsh/ │ └── _yii ├── docs/ │ ├── documentation_style_guide.md │ ├── guide/ │ │ ├── README.md │ │ ├── caching-data.md │ │ ├── caching-fragment.md │ │ ├── caching-http.md │ │ ├── caching-overview.md │ │ ├── caching-page.md │ │ ├── concept-aliases.md │ │ ├── concept-autoloading.md │ │ ├── concept-behaviors.md │ │ ├── concept-components.md │ │ ├── concept-configurations.md │ │ ├── concept-di-container.md │ │ ├── concept-events.md │ │ ├── concept-properties.md │ │ ├── concept-service-locator.md │ │ ├── db-active-record.md │ │ ├── db-dao.md │ │ ├── db-migrations.md │ │ ├── db-query-builder.md │ │ ├── glossary.md │ │ ├── helper-array.md │ │ ├── helper-html.md │ │ ├── helper-json.md │ │ ├── helper-overview.md │ │ ├── helper-url.md │ │ ├── images/ │ │ │ ├── application-lifecycle.graphml │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── input-file-upload.md │ │ ├── input-form-javascript.md │ │ ├── input-forms.md │ │ ├── input-multiple-models.md │ │ ├── input-tabular-input.md │ │ ├── input-validation.md │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── output-client-scripts.md │ │ ├── output-data-providers.md │ │ ├── output-data-widgets.md │ │ ├── output-formatting.md │ │ ├── output-pagination.md │ │ ├── output-sorting.md │ │ ├── output-theming.md │ │ ├── rest-authentication.md │ │ ├── rest-controllers.md │ │ ├── rest-error-handling.md │ │ ├── rest-filtering-collections.md │ │ ├── rest-quick-start.md │ │ ├── rest-rate-limiting.md │ │ ├── rest-resources.md │ │ ├── rest-response-formatting.md │ │ ├── rest-routing.md │ │ ├── rest-versioning.md │ │ ├── runtime-bootstrapping.md │ │ ├── runtime-handling-errors.md │ │ ├── runtime-logging.md │ │ ├── runtime-overview.md │ │ ├── runtime-requests.md │ │ ├── runtime-responses.md │ │ ├── runtime-routing.md │ │ ├── runtime-sessions-cookies.md │ │ ├── security-authentication.md │ │ ├── security-authorization.md │ │ ├── security-best-practices.md │ │ ├── security-cryptography.md │ │ ├── security-overview.md │ │ ├── security-passwords.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-prerequisites.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-applications.md │ │ ├── structure-assets.md │ │ ├── structure-controllers.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-extensions.md │ │ ├── structure-filters.md │ │ ├── structure-models.md │ │ ├── structure-modules.md │ │ ├── structure-overview.md │ │ ├── structure-views.md │ │ ├── structure-widgets.md │ │ ├── test-acceptance.md │ │ ├── test-environment-setup.md │ │ ├── test-fixtures.md │ │ ├── test-functional.md │ │ ├── test-overview.md │ │ ├── test-unit.md │ │ ├── tutorial-console.md │ │ ├── tutorial-core-validators.md │ │ ├── tutorial-docker.md │ │ ├── tutorial-i18n.md │ │ ├── tutorial-mailing.md │ │ ├── tutorial-performance-tuning.md │ │ ├── tutorial-shared-hosting.md │ │ ├── tutorial-start-from-scratch.md │ │ ├── tutorial-template-engines.md │ │ ├── tutorial-yii-as-micro-framework.md │ │ └── tutorial-yii-integration.md │ ├── guide-ar/ │ │ ├── README.md │ │ ├── intro-yii.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-prerequisites.md │ │ └── start-workflow.md │ ├── guide-de/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ └── translators.json │ ├── guide-es/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── caching-data.md │ │ ├── caching-fragment.md │ │ ├── caching-http.md │ │ ├── caching-overview.md │ │ ├── caching-page.md │ │ ├── concept-aliases.md │ │ ├── concept-autoloading.md │ │ ├── concept-behaviors.md │ │ ├── concept-components.md │ │ ├── concept-configurations.md │ │ ├── concept-di-container.md │ │ ├── concept-events.md │ │ ├── concept-properties.md │ │ ├── concept-service-locator.md │ │ ├── db-dao.md │ │ ├── db-migrations.md │ │ ├── db-query-builder.md │ │ ├── glossary.md │ │ ├── helper-array.md │ │ ├── helper-html.md │ │ ├── helper-overview.md │ │ ├── helper-url.md │ │ ├── images/ │ │ │ ├── application-lifecycle.graphml │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── input-file-upload.md │ │ ├── input-multiple-models.md │ │ ├── input-validation.md │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── output-client-scripts.md │ │ ├── output-data-providers.md │ │ ├── output-data-widgets.md │ │ ├── output-pagination.md │ │ ├── output-theming.md │ │ ├── rest-authentication.md │ │ ├── rest-controllers.md │ │ ├── rest-error-handling.md │ │ ├── rest-quick-start.md │ │ ├── rest-rate-limiting.md │ │ ├── rest-resources.md │ │ ├── rest-response-formatting.md │ │ ├── rest-routing.md │ │ ├── rest-versioning.md │ │ ├── runtime-bootstrapping.md │ │ ├── runtime-handling-errors.md │ │ ├── runtime-logging.md │ │ ├── runtime-overview.md │ │ ├── runtime-requests.md │ │ ├── runtime-responses.md │ │ ├── runtime-routing.md │ │ ├── runtime-sessions-cookies.md │ │ ├── security-authentication.md │ │ ├── security-authorization.md │ │ ├── security-passwords.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-prerequisites.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-applications.md │ │ ├── structure-assets.md │ │ ├── structure-controllers.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-extensions.md │ │ ├── structure-filters.md │ │ ├── structure-models.md │ │ ├── structure-modules.md │ │ ├── structure-overview.md │ │ ├── structure-views.md │ │ ├── structure-widgets.md │ │ ├── test-acceptance.md │ │ ├── test-environment-setup.md │ │ ├── test-fixtures.md │ │ ├── test-functional.md │ │ ├── test-overview.md │ │ ├── test-unit.md │ │ ├── translators.json │ │ ├── tutorial-core-validators.md │ │ ├── tutorial-mailing.md │ │ ├── tutorial-start-from-scratch.md │ │ ├── tutorial-template-engines.md │ │ └── tutorial-yii-integration.md │ ├── guide-fr/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── caching-data.md │ │ ├── caching-fragment.md │ │ ├── caching-http.md │ │ ├── caching-overview.md │ │ ├── caching-page.md │ │ ├── concept-aliases.md │ │ ├── concept-autoloading.md │ │ ├── concept-behaviors.md │ │ ├── concept-components.md │ │ ├── concept-configurations.md │ │ ├── concept-di-container.md │ │ ├── concept-events.md │ │ ├── concept-properties.md │ │ ├── concept-service-locator.md │ │ ├── db-active-record.md │ │ ├── db-dao.md │ │ ├── db-migrations.md │ │ ├── db-query-builder.md │ │ ├── helper-array.md │ │ ├── helper-html.md │ │ ├── helper-overview.md │ │ ├── helper-url.md │ │ ├── images/ │ │ │ ├── advanced-app-configs.graphml │ │ │ ├── application-lifecycle.graphml │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── input-file-upload.md │ │ ├── input-forms.md │ │ ├── input-multiple-models.md │ │ ├── input-tabular-input.md │ │ ├── input-validation.md │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── output-client-scripts.md │ │ ├── output-data-providers.md │ │ ├── output-data-widgets.md │ │ ├── output-formatting.md │ │ ├── output-pagination.md │ │ ├── output-sorting.md │ │ ├── runtime-bootstrapping.md │ │ ├── runtime-handling-errors.md │ │ ├── runtime-logging.md │ │ ├── runtime-overview.md │ │ ├── runtime-requests.md │ │ ├── runtime-responses.md │ │ ├── runtime-routing.md │ │ ├── runtime-sessions-cookies.md │ │ ├── security-authentication.md │ │ ├── security-authorization.md │ │ ├── security-best-practices.md │ │ ├── security-cryptography.md │ │ ├── security-overview.md │ │ ├── security-passwords.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-prerequisites.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-applications.md │ │ ├── structure-assets.md │ │ ├── structure-controllers.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-extensions.md │ │ ├── structure-filters.md │ │ ├── structure-models.md │ │ ├── structure-modules.md │ │ ├── structure-overview.md │ │ ├── structure-views.md │ │ ├── structure-widgets.md │ │ ├── translators.json │ │ └── tutorial-i18n.md │ ├── guide-id/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── images/ │ │ │ ├── application-lifecycle.graphml │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-prerequisites.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-applications.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-overview.md │ │ └── translators.json │ ├── guide-it/ │ │ ├── README.md │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ └── start-installation.md │ ├── guide-ja/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── caching-data.md │ │ ├── caching-fragment.md │ │ ├── caching-http.md │ │ ├── caching-overview.md │ │ ├── caching-page.md │ │ ├── concept-aliases.md │ │ ├── concept-autoloading.md │ │ ├── concept-behaviors.md │ │ ├── concept-components.md │ │ ├── concept-configurations.md │ │ ├── concept-di-container.md │ │ ├── concept-events.md │ │ ├── concept-properties.md │ │ ├── concept-service-locator.md │ │ ├── db-active-record.md │ │ ├── db-dao.md │ │ ├── db-migrations.md │ │ ├── db-query-builder.md │ │ ├── glossary.md │ │ ├── helper-array.md │ │ ├── helper-html.md │ │ ├── helper-json.md │ │ ├── helper-overview.md │ │ ├── helper-url.md │ │ ├── images/ │ │ │ ├── advanced-app-configs.graphml │ │ │ ├── application-lifecycle.graphml │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── input-file-upload.md │ │ ├── input-form-javascript.md │ │ ├── input-forms.md │ │ ├── input-multiple-models.md │ │ ├── input-tabular-input.md │ │ ├── input-validation.md │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── output-client-scripts.md │ │ ├── output-data-providers.md │ │ ├── output-data-widgets.md │ │ ├── output-formatting.md │ │ ├── output-pagination.md │ │ ├── output-sorting.md │ │ ├── output-theming.md │ │ ├── rest-authentication.md │ │ ├── rest-controllers.md │ │ ├── rest-error-handling.md │ │ ├── rest-filtering-collections.md │ │ ├── rest-quick-start.md │ │ ├── rest-rate-limiting.md │ │ ├── rest-resources.md │ │ ├── rest-response-formatting.md │ │ ├── rest-routing.md │ │ ├── rest-versioning.md │ │ ├── runtime-bootstrapping.md │ │ ├── runtime-handling-errors.md │ │ ├── runtime-logging.md │ │ ├── runtime-overview.md │ │ ├── runtime-requests.md │ │ ├── runtime-responses.md │ │ ├── runtime-routing.md │ │ ├── runtime-sessions-cookies.md │ │ ├── security-authentication.md │ │ ├── security-authorization.md │ │ ├── security-best-practices.md │ │ ├── security-cryptography.md │ │ ├── security-overview.md │ │ ├── security-passwords.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-prerequisites.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-applications.md │ │ ├── structure-assets.md │ │ ├── structure-controllers.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-extensions.md │ │ ├── structure-filters.md │ │ ├── structure-models.md │ │ ├── structure-modules.md │ │ ├── structure-overview.md │ │ ├── structure-views.md │ │ ├── structure-widgets.md │ │ ├── test-acceptance.md │ │ ├── test-environment-setup.md │ │ ├── test-fixtures.md │ │ ├── test-functional.md │ │ ├── test-overview.md │ │ ├── test-unit.md │ │ ├── translators.json │ │ ├── tutorial-console.md │ │ ├── tutorial-core-validators.md │ │ ├── tutorial-docker.md │ │ ├── tutorial-i18n.md │ │ ├── tutorial-mailing.md │ │ ├── tutorial-performance-tuning.md │ │ ├── tutorial-shared-hosting.md │ │ ├── tutorial-start-from-scratch.md │ │ ├── tutorial-template-engines.md │ │ ├── tutorial-yii-as-micro-framework.md │ │ └── tutorial-yii-integration.md │ ├── guide-pl/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── caching-fragment.md │ │ ├── caching-http.md │ │ ├── caching-overview.md │ │ ├── caching-page.md │ │ ├── concept-aliases.md │ │ ├── concept-autoloading.md │ │ ├── concept-behaviors.md │ │ ├── concept-components.md │ │ ├── db-active-record.md │ │ ├── db-migrations.md │ │ ├── glossary.md │ │ ├── helper-overview.md │ │ ├── images/ │ │ │ ├── application-lifecycle.graphml │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── input-file-upload.md │ │ ├── input-form-javascript.md │ │ ├── input-forms.md │ │ ├── input-multiple-models.md │ │ ├── input-tabular-input.md │ │ ├── input-validation.md │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── output-client-scripts.md │ │ ├── output-pagination.md │ │ ├── rest-error-handling.md │ │ ├── rest-rate-limiting.md │ │ ├── rest-routing.md │ │ ├── rest-versioning.md │ │ ├── runtime-bootstrapping.md │ │ ├── runtime-overview.md │ │ ├── security-overview.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-overview.md │ │ ├── test-acceptance.md │ │ ├── test-environment-setup.md │ │ ├── test-functional.md │ │ ├── test-overview.md │ │ ├── test-unit.md │ │ ├── translators.json │ │ ├── tutorial-mailing.md │ │ ├── tutorial-shared-hosting.md │ │ ├── tutorial-start-from-scratch.md │ │ ├── tutorial-template-engines.md │ │ └── tutorial-yii-as-micro-framework.md │ ├── guide-pt-BR/ │ │ ├── README.md │ │ ├── caching-data.md │ │ ├── caching-fragment.md │ │ ├── caching-http.md │ │ ├── caching-overview.md │ │ ├── caching-page.md │ │ ├── concept-aliases.md │ │ ├── concept-autoloading.md │ │ ├── concept-behaviors.md │ │ ├── concept-components.md │ │ ├── concept-configurations.md │ │ ├── concept-di-container.md │ │ ├── concept-events.md │ │ ├── concept-properties.md │ │ ├── concept-service-locator.md │ │ ├── db-active-record.md │ │ ├── db-migrations.md │ │ ├── db-query-builder.md │ │ ├── helper-overview.md │ │ ├── helper-url.md │ │ ├── images/ │ │ │ ├── advanced-app-configs.graphml │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── output-data-providers.md │ │ ├── output-pagination.md │ │ ├── output-sorting.md │ │ ├── output-theming.md │ │ ├── rest-authentication.md │ │ ├── rest-controllers.md │ │ ├── rest-error-handling.md │ │ ├── rest-quick-start.md │ │ ├── rest-rate-limiting.md │ │ ├── rest-resources.md │ │ ├── rest-response-formatting.md │ │ ├── rest-routing.md │ │ ├── rest-versioning.md │ │ ├── runtime-bootstrapping.md │ │ ├── runtime-handling-errors.md │ │ ├── runtime-logging.md │ │ ├── runtime-overview.md │ │ ├── runtime-requests.md │ │ ├── runtime-routing.md │ │ ├── runtime-sessions-cookies.md │ │ ├── security-authentication.md │ │ ├── security-authorization.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-prerequisites.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-applications.md │ │ ├── structure-assets.md │ │ ├── structure-controllers.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-extensions.md │ │ ├── structure-filters.md │ │ ├── structure-models.md │ │ ├── structure-modules.md │ │ ├── structure-overview.md │ │ ├── structure-views.md │ │ ├── structure-widgets.md │ │ ├── test-overview.md │ │ ├── translators.json │ │ ├── tutorial-core-validators.md │ │ ├── tutorial-docker.md │ │ ├── tutorial-shared-hosting.md │ │ └── tutorial-yii-integration.md │ ├── guide-ru/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── caching-data.md │ │ ├── caching-fragment.md │ │ ├── caching-http.md │ │ ├── caching-overview.md │ │ ├── caching-page.md │ │ ├── concept-aliases.md │ │ ├── concept-autoloading.md │ │ ├── concept-behaviors.md │ │ ├── concept-components.md │ │ ├── concept-configurations.md │ │ ├── concept-di-container.md │ │ ├── concept-events.md │ │ ├── concept-properties.md │ │ ├── concept-service-locator.md │ │ ├── db-active-record.md │ │ ├── db-dao.md │ │ ├── db-migrations.md │ │ ├── db-query-builder.md │ │ ├── glossary.md │ │ ├── helper-array.md │ │ ├── helper-html.md │ │ ├── helper-json.md │ │ ├── helper-overview.md │ │ ├── helper-url.md │ │ ├── images/ │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── input-file-upload.md │ │ ├── input-form-javascript.md │ │ ├── input-forms.md │ │ ├── input-multiple-models.md │ │ ├── input-tabular-input.md │ │ ├── input-validation.md │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── output-client-scripts.md │ │ ├── output-data-providers.md │ │ ├── output-data-widgets.md │ │ ├── output-formatting.md │ │ ├── output-pagination.md │ │ ├── output-sorting.md │ │ ├── output-theming.md │ │ ├── rest-authentication.md │ │ ├── rest-controllers.md │ │ ├── rest-error-handling.md │ │ ├── rest-filtering-collections.md │ │ ├── rest-quick-start.md │ │ ├── rest-rate-limiting.md │ │ ├── rest-resources.md │ │ ├── rest-response-formatting.md │ │ ├── rest-routing.md │ │ ├── rest-versioning.md │ │ ├── runtime-bootstrapping.md │ │ ├── runtime-handling-errors.md │ │ ├── runtime-logging.md │ │ ├── runtime-overview.md │ │ ├── runtime-requests.md │ │ ├── runtime-responses.md │ │ ├── runtime-routing.md │ │ ├── runtime-sessions-cookies.md │ │ ├── security-authentication.md │ │ ├── security-authorization.md │ │ ├── security-best-practices.md │ │ ├── security-cryptography.md │ │ ├── security-overview.md │ │ ├── security-passwords.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-prerequisites.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-applications.md │ │ ├── structure-assets.md │ │ ├── structure-controllers.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-extensions.md │ │ ├── structure-filters.md │ │ ├── structure-models.md │ │ ├── structure-modules.md │ │ ├── structure-overview.md │ │ ├── structure-views.md │ │ ├── structure-widgets.md │ │ ├── test-acceptance.md │ │ ├── test-environment-setup.md │ │ ├── test-fixtures.md │ │ ├── test-functional.md │ │ ├── test-overview.md │ │ ├── test-unit.md │ │ ├── translators.json │ │ ├── tutorial-console.md │ │ ├── tutorial-core-validators.md │ │ ├── tutorial-docker.md │ │ ├── tutorial-i18n.md │ │ ├── tutorial-mailing.md │ │ ├── tutorial-performance-tuning.md │ │ ├── tutorial-shared-hosting.md │ │ ├── tutorial-start-from-scratch.md │ │ ├── tutorial-template-engines.md │ │ ├── tutorial-yii-as-micro-framework.md │ │ └── tutorial-yii-integration.md │ ├── guide-tr/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── intro-yii.md │ │ ├── start-prerequisites.md │ │ └── translators.json │ ├── guide-uk/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── caching-fragment.md │ │ ├── concept-aliases.md │ │ ├── concept-autoloading.md │ │ ├── images/ │ │ │ ├── application-lifecycle.graphml │ │ │ ├── application-structure.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── rest-quick-start.md │ │ ├── rest-rate-limiting.md │ │ ├── runtime-sessions-cookies.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-applications.md │ │ ├── structure-controllers.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-models.md │ │ ├── structure-overview.md │ │ ├── structure-views.md │ │ ├── tutorial-console.md │ │ ├── tutorial-start-from-scratch.md │ │ ├── tutorial-template-engines.md │ │ └── tutorial-yii-integration.md │ ├── guide-uz/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── caching-page.md │ │ ├── images/ │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-workflow.md │ │ └── structure-controllers.md │ ├── guide-vi/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── images/ │ │ │ ├── advanced-app-configs.graphml │ │ │ ├── application-lifecycle.graphml │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-prerequisites.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-applications.md │ │ ├── structure-controllers.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-models.md │ │ ├── structure-modules.md │ │ ├── structure-overview.md │ │ └── structure-views.md │ ├── guide-zh-CN/ │ │ ├── README.md │ │ ├── blocktypes.json │ │ ├── caching-data.md │ │ ├── caching-fragment.md │ │ ├── caching-http.md │ │ ├── caching-overview.md │ │ ├── caching-page.md │ │ ├── concept-aliases.md │ │ ├── concept-autoloading.md │ │ ├── concept-behaviors.md │ │ ├── concept-components.md │ │ ├── concept-configurations.md │ │ ├── concept-di-container.md │ │ ├── concept-events.md │ │ ├── concept-properties.md │ │ ├── concept-service-locator.md │ │ ├── db-active-record.md │ │ ├── db-dao.md │ │ ├── db-migrations.md │ │ ├── db-query-builder.md │ │ ├── documentation_style_guide.md │ │ ├── glossary.md │ │ ├── helper-array.md │ │ ├── helper-html.md │ │ ├── helper-overview.md │ │ ├── helper-url.md │ │ ├── images/ │ │ │ ├── advanced-app-configs.graphml │ │ │ ├── application-lifecycle.graphml │ │ │ ├── application-structure.graphml │ │ │ ├── rbac-access-check-1.graphml │ │ │ ├── rbac-access-check-2.graphml │ │ │ ├── rbac-access-check-3.graphml │ │ │ ├── rbac-hierarchy-1.graphml │ │ │ ├── rbac-hierarchy-2.graphml │ │ │ └── request-lifecycle.graphml │ │ ├── input-file-upload.md │ │ ├── input-form-javascript.md │ │ ├── input-forms.md │ │ ├── input-multiple-models.md │ │ ├── input-tabular-input.md │ │ ├── input-validation.md │ │ ├── intro-upgrade-from-v1.md │ │ ├── intro-yii.md │ │ ├── output-client-scripts.md │ │ ├── output-data-providers.md │ │ ├── output-data-widgets.md │ │ ├── output-formatting.md │ │ ├── output-pagination.md │ │ ├── output-sorting.md │ │ ├── output-theming.md │ │ ├── rest-authentication.md │ │ ├── rest-controllers.md │ │ ├── rest-error-handling.md │ │ ├── rest-quick-start.md │ │ ├── rest-rate-limiting.md │ │ ├── rest-resources.md │ │ ├── rest-response-formatting.md │ │ ├── rest-routing.md │ │ ├── rest-versioning.md │ │ ├── runtime-bootstrapping.md │ │ ├── runtime-handling-errors.md │ │ ├── runtime-logging.md │ │ ├── runtime-overview.md │ │ ├── runtime-requests.md │ │ ├── runtime-responses.md │ │ ├── runtime-routing.md │ │ ├── runtime-sessions-cookies.md │ │ ├── security-authentication.md │ │ ├── security-authorization.md │ │ ├── security-best-practices.md │ │ ├── security-cryptography.md │ │ ├── security-overview.md │ │ ├── security-passwords.md │ │ ├── start-databases.md │ │ ├── start-forms.md │ │ ├── start-gii.md │ │ ├── start-hello.md │ │ ├── start-installation.md │ │ ├── start-looking-ahead.md │ │ ├── start-prerequisites.md │ │ ├── start-workflow.md │ │ ├── structure-application-components.md │ │ ├── structure-applications.md │ │ ├── structure-assets.md │ │ ├── structure-controllers.md │ │ ├── structure-entry-scripts.md │ │ ├── structure-extensions.md │ │ ├── structure-filters.md │ │ ├── structure-models.md │ │ ├── structure-modules.md │ │ ├── structure-overview.md │ │ ├── structure-views.md │ │ ├── structure-widgets.md │ │ ├── test-acceptance.md │ │ ├── test-environment-setup.md │ │ ├── test-fixtures.md │ │ ├── test-functional.md │ │ ├── test-overview.md │ │ ├── test-unit.md │ │ ├── translators.json │ │ ├── tutorial-console.md │ │ ├── tutorial-core-validators.md │ │ ├── tutorial-docker.md │ │ ├── tutorial-i18n.md │ │ ├── tutorial-mailing.md │ │ ├── tutorial-performance-tuning.md │ │ ├── tutorial-shared-hosting.md │ │ ├── tutorial-start-from-scratch.md │ │ ├── tutorial-template-engines.md │ │ ├── tutorial-yii-as-micro-framework.md │ │ └── tutorial-yii-integration.md │ ├── internals/ │ │ ├── README.md │ │ ├── automation.md │ │ ├── bc.md │ │ ├── core-code-style.md │ │ ├── design-decisions.md │ │ ├── exception_hierarchy.vsd │ │ ├── getting-started.md │ │ ├── git-workflow.md │ │ ├── project-organization.md │ │ ├── pull-request-qa.md │ │ ├── release.md │ │ ├── report-an-issue.md │ │ ├── schema-builder-patterns.xlsx │ │ ├── translation-status.md │ │ ├── translation-teams.md │ │ ├── translation-workflow.md │ │ ├── versions.md │ │ └── view-code-style.md │ ├── internals-es/ │ │ └── translation-workflow.md │ ├── internals-fa/ │ │ └── core-code-style.md │ ├── internals-ja/ │ │ ├── README.md │ │ ├── automation.md │ │ ├── bc.md │ │ ├── core-code-style.md │ │ ├── design-decisions.md │ │ ├── exception_hierarchy.vsd │ │ ├── getting-started.md │ │ ├── git-workflow.md │ │ ├── project-organization.md │ │ ├── pull-request-qa.md │ │ ├── release.md │ │ ├── report-an-issue.md │ │ ├── schema-builder-patterns.xlsx │ │ ├── translation-status.md │ │ ├── translation-teams.md │ │ ├── translation-workflow.md │ │ ├── versions.md │ │ └── view-code-style.md │ ├── internals-pl/ │ │ ├── README.md │ │ ├── automation.md │ │ ├── bc.md │ │ ├── core-code-style.md │ │ ├── design-decisions.md │ │ ├── exception_hierarchy.vsd │ │ ├── getting-started.md │ │ ├── git-workflow.md │ │ ├── project-organization.md │ │ ├── pull-request-qa.md │ │ ├── release.md │ │ ├── report-an-issue.md │ │ ├── schema-builder-patterns.xlsx │ │ ├── translation-status.md │ │ ├── translation-teams.md │ │ ├── translation-workflow.md │ │ ├── versions.md │ │ └── view-code-style.md │ ├── internals-pt-BR/ │ │ └── translation-workflow.md │ ├── internals-ru/ │ │ ├── README.md │ │ ├── automation.md │ │ ├── bc.md │ │ ├── blocktypes.json │ │ ├── core-code-style.md │ │ ├── design-decisions.md │ │ ├── getting-started.md │ │ ├── git-workflow.md │ │ ├── project-organization.md │ │ ├── pull-request-qa.md │ │ ├── release.md │ │ ├── report-an-issue.md │ │ ├── translation-status.md │ │ ├── translation-teams.md │ │ ├── translation-workflow.md │ │ ├── versions.md │ │ └── view-code-style.md │ ├── internals-sr-Latn/ │ │ ├── automation.md │ │ ├── getting-started.md │ │ ├── git-workflow.md │ │ ├── report-an-issue.md │ │ └── translation-workflow.md │ ├── internals-uk/ │ │ ├── automation.md │ │ ├── core-code-style.md │ │ ├── design-decisions.md │ │ ├── getting-started.md │ │ ├── git-workflow.md │ │ ├── report-an-issue.md │ │ ├── translation-workflow.md │ │ ├── versions.md │ │ └── view-code-style.md │ └── internals-uz/ │ └── translation-workflow.md ├── eslint.config.js ├── framework/ │ ├── .github/ │ │ ├── CONTRIBUTING.md │ │ ├── FUNDING.yml │ │ ├── PULL_REQUEST_TEMPLATE.md │ │ └── SECURITY.md │ ├── .gitignore │ ├── .htaccess │ ├── .meta-storm/ │ │ ├── active-record.meta-storm.xml │ │ ├── array.meta-storm.xml │ │ ├── controller.meta-storm.xml │ │ ├── db.meta-storm.xml │ │ ├── html.meta-storm.xml │ │ ├── model.meta-storm.xml │ │ ├── view.meta-storm.xml │ │ └── widgets.meta-storm.xml │ ├── .phpstorm.meta.php │ ├── BaseYii.php │ ├── CHANGELOG.md │ ├── LICENSE.md │ ├── README.md │ ├── UPGRADE.md │ ├── Yii.php │ ├── assets/ │ │ ├── yii.activeForm.js │ │ ├── yii.captcha.js │ │ ├── yii.gridView.js │ │ ├── yii.js │ │ └── yii.validation.js │ ├── base/ │ │ ├── Action.php │ │ ├── ActionEvent.php │ │ ├── ActionFilter.php │ │ ├── Application.php │ │ ├── ArrayAccessTrait.php │ │ ├── Arrayable.php │ │ ├── ArrayableTrait.php │ │ ├── BaseObject.php │ │ ├── Behavior.php │ │ ├── BootstrapInterface.php │ │ ├── Component.php │ │ ├── Configurable.php │ │ ├── Controller.php │ │ ├── DynamicContentAwareInterface.php │ │ ├── DynamicContentAwareTrait.php │ │ ├── DynamicModel.php │ │ ├── ErrorException.php │ │ ├── ErrorHandler.php │ │ ├── Event.php │ │ ├── Exception.php │ │ ├── ExitException.php │ │ ├── InlineAction.php │ │ ├── InvalidArgumentException.php │ │ ├── InvalidCallException.php │ │ ├── InvalidConfigException.php │ │ ├── InvalidParamException.php │ │ ├── InvalidRouteException.php │ │ ├── InvalidValueException.php │ │ ├── Model.php │ │ ├── ModelEvent.php │ │ ├── Module.php │ │ ├── NotSupportedException.php │ │ ├── Request.php │ │ ├── Response.php │ │ ├── Security.php │ │ ├── StaticInstanceInterface.php │ │ ├── StaticInstanceTrait.php │ │ ├── Theme.php │ │ ├── UnknownClassException.php │ │ ├── UnknownMethodException.php │ │ ├── UnknownPropertyException.php │ │ ├── UserException.php │ │ ├── View.php │ │ ├── ViewContextInterface.php │ │ ├── ViewEvent.php │ │ ├── ViewNotFoundException.php │ │ ├── ViewRenderer.php │ │ ├── Widget.php │ │ ├── WidgetEvent.php │ │ └── package.json │ ├── behaviors/ │ │ ├── AttributeBehavior.php │ │ ├── AttributeTypecastBehavior.php │ │ ├── AttributesBehavior.php │ │ ├── BlameableBehavior.php │ │ ├── CacheableWidgetBehavior.php │ │ ├── OptimisticLockBehavior.php │ │ ├── SluggableBehavior.php │ │ └── TimestampBehavior.php │ ├── caching/ │ │ ├── ApcCache.php │ │ ├── ArrayCache.php │ │ ├── Cache.php │ │ ├── CacheInterface.php │ │ ├── CallbackDependency.php │ │ ├── ChainedDependency.php │ │ ├── DbCache.php │ │ ├── DbDependency.php │ │ ├── DbQueryDependency.php │ │ ├── Dependency.php │ │ ├── DummyCache.php │ │ ├── ExpressionDependency.php │ │ ├── FileCache.php │ │ ├── FileDependency.php │ │ ├── MemCache.php │ │ ├── MemCacheServer.php │ │ ├── TagDependency.php │ │ ├── WinCache.php │ │ └── migrations/ │ │ ├── m150909_153426_cache_init.php │ │ ├── schema-mssql.sql │ │ ├── schema-mysql.sql │ │ ├── schema-oci.sql │ │ ├── schema-pgsql.sql │ │ └── schema-sqlite.sql │ ├── captcha/ │ │ ├── Captcha.php │ │ ├── CaptchaAction.php │ │ ├── CaptchaAsset.php │ │ ├── CaptchaValidator.php │ │ └── SpicyRice.md │ ├── classes.php │ ├── composer.json │ ├── console/ │ │ ├── Application.php │ │ ├── Controller.php │ │ ├── ErrorHandler.php │ │ ├── Exception.php │ │ ├── ExitCode.php │ │ ├── Markdown.php │ │ ├── Request.php │ │ ├── Response.php │ │ ├── UnknownCommandException.php │ │ ├── controllers/ │ │ │ ├── AssetController.php │ │ │ ├── BaseMigrateController.php │ │ │ ├── CacheController.php │ │ │ ├── FixtureController.php │ │ │ ├── HelpController.php │ │ │ ├── MessageController.php │ │ │ ├── MigrateController.php │ │ │ └── ServeController.php │ │ ├── runtime/ │ │ │ └── .gitignore │ │ └── widgets/ │ │ └── Table.php │ ├── data/ │ │ ├── ActiveDataFilter.php │ │ ├── ActiveDataProvider.php │ │ ├── ArrayDataProvider.php │ │ ├── BaseDataProvider.php │ │ ├── DataFilter.php │ │ ├── DataProviderInterface.php │ │ ├── Pagination.php │ │ ├── Sort.php │ │ └── SqlDataProvider.php │ ├── db/ │ │ ├── ActiveQuery.php │ │ ├── ActiveQueryInterface.php │ │ ├── ActiveQueryTrait.php │ │ ├── ActiveRecord.php │ │ ├── ActiveRecordInterface.php │ │ ├── ActiveRelationTrait.php │ │ ├── AfterSaveEvent.php │ │ ├── ArrayExpression.php │ │ ├── BaseActiveRecord.php │ │ ├── BatchQueryResult.php │ │ ├── CheckConstraint.php │ │ ├── ColumnSchema.php │ │ ├── ColumnSchemaBuilder.php │ │ ├── Command.php │ │ ├── Connection.php │ │ ├── Constraint.php │ │ ├── ConstraintFinderInterface.php │ │ ├── ConstraintFinderTrait.php │ │ ├── DataReader.php │ │ ├── DefaultValueConstraint.php │ │ ├── Exception.php │ │ ├── Expression.php │ │ ├── ExpressionBuilder.php │ │ ├── ExpressionBuilderInterface.php │ │ ├── ExpressionBuilderTrait.php │ │ ├── ExpressionInterface.php │ │ ├── ForeignKeyConstraint.php │ │ ├── IndexConstraint.php │ │ ├── IntegrityException.php │ │ ├── JsonExpression.php │ │ ├── Migration.php │ │ ├── MigrationInterface.php │ │ ├── PdoValue.php │ │ ├── PdoValueBuilder.php │ │ ├── Query.php │ │ ├── QueryBuilder.php │ │ ├── QueryExpressionBuilder.php │ │ ├── QueryInterface.php │ │ ├── QueryTrait.php │ │ ├── Schema.php │ │ ├── SchemaBuilderTrait.php │ │ ├── SqlToken.php │ │ ├── SqlTokenizer.php │ │ ├── StaleObjectException.php │ │ ├── TableSchema.php │ │ ├── Transaction.php │ │ ├── ViewFinderTrait.php │ │ ├── conditions/ │ │ │ ├── AndCondition.php │ │ │ ├── BetweenColumnsCondition.php │ │ │ ├── BetweenColumnsConditionBuilder.php │ │ │ ├── BetweenCondition.php │ │ │ ├── BetweenConditionBuilder.php │ │ │ ├── ConditionInterface.php │ │ │ ├── ConjunctionCondition.php │ │ │ ├── ConjunctionConditionBuilder.php │ │ │ ├── ExistsCondition.php │ │ │ ├── ExistsConditionBuilder.php │ │ │ ├── HashCondition.php │ │ │ ├── HashConditionBuilder.php │ │ │ ├── InCondition.php │ │ │ ├── InConditionBuilder.php │ │ │ ├── LikeCondition.php │ │ │ ├── LikeConditionBuilder.php │ │ │ ├── NotCondition.php │ │ │ ├── NotConditionBuilder.php │ │ │ ├── OrCondition.php │ │ │ ├── SimpleCondition.php │ │ │ └── SimpleConditionBuilder.php │ │ ├── cubrid/ │ │ │ ├── ColumnSchemaBuilder.php │ │ │ ├── QueryBuilder.php │ │ │ ├── Schema.php │ │ │ └── conditions/ │ │ │ └── LikeConditionBuilder.php │ │ ├── mssql/ │ │ │ ├── ColumnSchema.php │ │ │ ├── ColumnSchemaBuilder.php │ │ │ ├── DBLibPDO.php │ │ │ ├── PDO.php │ │ │ ├── QueryBuilder.php │ │ │ ├── Schema.php │ │ │ ├── SqlsrvPDO.php │ │ │ ├── TableSchema.php │ │ │ └── conditions/ │ │ │ ├── InConditionBuilder.php │ │ │ └── LikeConditionBuilder.php │ │ ├── mysql/ │ │ │ ├── ColumnSchema.php │ │ │ ├── ColumnSchemaBuilder.php │ │ │ ├── JsonExpressionBuilder.php │ │ │ ├── QueryBuilder.php │ │ │ └── Schema.php │ │ ├── oci/ │ │ │ ├── ColumnSchemaBuilder.php │ │ │ ├── Command.php │ │ │ ├── QueryBuilder.php │ │ │ ├── Schema.php │ │ │ └── conditions/ │ │ │ ├── InConditionBuilder.php │ │ │ └── LikeConditionBuilder.php │ │ ├── pgsql/ │ │ │ ├── ArrayExpressionBuilder.php │ │ │ ├── ArrayParser.php │ │ │ ├── ColumnSchema.php │ │ │ ├── JsonExpressionBuilder.php │ │ │ ├── QueryBuilder.php │ │ │ └── Schema.php │ │ └── sqlite/ │ │ ├── ColumnSchemaBuilder.php │ │ ├── Command.php │ │ ├── QueryBuilder.php │ │ ├── Schema.php │ │ ├── SqlTokenizer.php │ │ └── conditions/ │ │ ├── InConditionBuilder.php │ │ └── LikeConditionBuilder.php │ ├── di/ │ │ ├── Container.php │ │ ├── Instance.php │ │ ├── NotInstantiableException.php │ │ └── ServiceLocator.php │ ├── filters/ │ │ ├── AccessControl.php │ │ ├── AccessRule.php │ │ ├── AjaxFilter.php │ │ ├── ContentNegotiator.php │ │ ├── Cors.php │ │ ├── HostControl.php │ │ ├── HttpCache.php │ │ ├── PageCache.php │ │ ├── RateLimitInterface.php │ │ ├── RateLimiter.php │ │ ├── VerbFilter.php │ │ └── auth/ │ │ ├── AuthInterface.php │ │ ├── AuthMethod.php │ │ ├── CompositeAuth.php │ │ ├── HttpBasicAuth.php │ │ ├── HttpBearerAuth.php │ │ ├── HttpHeaderAuth.php │ │ └── QueryParamAuth.php │ ├── grid/ │ │ ├── ActionColumn.php │ │ ├── CheckboxColumn.php │ │ ├── Column.php │ │ ├── DataColumn.php │ │ ├── GridView.php │ │ ├── GridViewAsset.php │ │ ├── RadioButtonColumn.php │ │ └── SerialColumn.php │ ├── helpers/ │ │ ├── ArrayHelper.php │ │ ├── BaseArrayHelper.php │ │ ├── BaseConsole.php │ │ ├── BaseFileHelper.php │ │ ├── BaseFormatConverter.php │ │ ├── BaseHtml.php │ │ ├── BaseHtmlPurifier.php │ │ ├── BaseInflector.php │ │ ├── BaseIpHelper.php │ │ ├── BaseJson.php │ │ ├── BaseMarkdown.php │ │ ├── BaseStringHelper.php │ │ ├── BaseUrl.php │ │ ├── BaseVarDumper.php │ │ ├── Console.php │ │ ├── FileHelper.php │ │ ├── FormatConverter.php │ │ ├── Html.php │ │ ├── HtmlPurifier.php │ │ ├── Inflector.php │ │ ├── IpHelper.php │ │ ├── Json.php │ │ ├── Markdown.php │ │ ├── ReplaceArrayValue.php │ │ ├── StringHelper.php │ │ ├── UnsetArrayValue.php │ │ ├── Url.php │ │ ├── VarDumper.php │ │ ├── mimeAliases.php │ │ ├── mimeExtensions.php │ │ └── mimeTypes.php │ ├── i18n/ │ │ ├── DbMessageSource.php │ │ ├── Formatter.php │ │ ├── GettextFile.php │ │ ├── GettextMessageSource.php │ │ ├── GettextMoFile.php │ │ ├── GettextPoFile.php │ │ ├── I18N.php │ │ ├── Locale.php │ │ ├── MessageFormatter.php │ │ ├── MessageSource.php │ │ ├── MissingTranslationEvent.php │ │ ├── PhpMessageSource.php │ │ └── migrations/ │ │ ├── m150207_210500_i18n_init.php │ │ ├── schema-mssql.sql │ │ ├── schema-mysql.sql │ │ ├── schema-oci.sql │ │ ├── schema-pgsql.sql │ │ └── schema-sqlite.sql │ ├── log/ │ │ ├── DbTarget.php │ │ ├── Dispatcher.php │ │ ├── EmailTarget.php │ │ ├── FileTarget.php │ │ ├── LogRuntimeException.php │ │ ├── Logger.php │ │ ├── SyslogTarget.php │ │ ├── Target.php │ │ └── migrations/ │ │ ├── m141106_185632_log_init.php │ │ ├── schema-mssql.sql │ │ ├── schema-mysql.sql │ │ ├── schema-oci.sql │ │ ├── schema-pgsql.sql │ │ └── schema-sqlite.sql │ ├── mail/ │ │ ├── BaseMailer.php │ │ ├── BaseMessage.php │ │ ├── MailEvent.php │ │ ├── MailerInterface.php │ │ └── MessageInterface.php │ ├── messages/ │ │ ├── af/ │ │ │ └── yii.php │ │ ├── ar/ │ │ │ └── yii.php │ │ ├── az/ │ │ │ └── yii.php │ │ ├── be/ │ │ │ └── yii.php │ │ ├── bg/ │ │ │ └── yii.php │ │ ├── bs/ │ │ │ └── yii.php │ │ ├── ca/ │ │ │ └── yii.php │ │ ├── config.php │ │ ├── cs/ │ │ │ └── yii.php │ │ ├── da/ │ │ │ └── yii.php │ │ ├── de/ │ │ │ └── yii.php │ │ ├── el/ │ │ │ └── yii.php │ │ ├── es/ │ │ │ └── yii.php │ │ ├── et/ │ │ │ └── yii.php │ │ ├── fa/ │ │ │ └── yii.php │ │ ├── fi/ │ │ │ └── yii.php │ │ ├── fr/ │ │ │ └── yii.php │ │ ├── ga/ │ │ │ └── yii.php │ │ ├── he/ │ │ │ └── yii.php │ │ ├── hi/ │ │ │ └── yii.php │ │ ├── hr/ │ │ │ └── yii.php │ │ ├── hu/ │ │ │ └── yii.php │ │ ├── hy/ │ │ │ └── yii.php │ │ ├── id/ │ │ │ └── yii.php │ │ ├── it/ │ │ │ └── yii.php │ │ ├── ja/ │ │ │ └── yii.php │ │ ├── ka/ │ │ │ └── yii.php │ │ ├── kk/ │ │ │ └── yii.php │ │ ├── ko/ │ │ │ └── yii.php │ │ ├── kz/ │ │ │ └── yii.php │ │ ├── lt/ │ │ │ └── yii.php │ │ ├── lv/ │ │ │ └── yii.php │ │ ├── ms/ │ │ │ └── yii.php │ │ ├── mt/ │ │ │ └── yii.php │ │ ├── nb-NO/ │ │ │ └── yii.php │ │ ├── nl/ │ │ │ └── yii.php │ │ ├── pl/ │ │ │ └── yii.php │ │ ├── pt/ │ │ │ └── yii.php │ │ ├── pt-BR/ │ │ │ └── yii.php │ │ ├── ro/ │ │ │ └── yii.php │ │ ├── ru/ │ │ │ └── yii.php │ │ ├── sk/ │ │ │ └── yii.php │ │ ├── sl/ │ │ │ └── yii.php │ │ ├── sr/ │ │ │ └── yii.php │ │ ├── sr-Latn/ │ │ │ └── yii.php │ │ ├── sv/ │ │ │ └── yii.php │ │ ├── tg/ │ │ │ └── yii.php │ │ ├── th/ │ │ │ └── yii.php │ │ ├── tr/ │ │ │ └── yii.php │ │ ├── uk/ │ │ │ └── yii.php │ │ ├── uz/ │ │ │ └── yii.php │ │ ├── uz-Cy/ │ │ │ └── yii.php │ │ ├── vi/ │ │ │ └── yii.php │ │ ├── zh/ │ │ │ └── yii.php │ │ └── zh-TW/ │ │ └── yii.php │ ├── mutex/ │ │ ├── DbMutex.php │ │ ├── FileMutex.php │ │ ├── Mutex.php │ │ ├── MysqlMutex.php │ │ ├── OracleMutex.php │ │ ├── PgsqlMutex.php │ │ └── RetryAcquireTrait.php │ ├── rbac/ │ │ ├── Assignment.php │ │ ├── BaseManager.php │ │ ├── CheckAccessInterface.php │ │ ├── DbManager.php │ │ ├── Item.php │ │ ├── ManagerInterface.php │ │ ├── Permission.php │ │ ├── PhpManager.php │ │ ├── Role.php │ │ ├── Rule.php │ │ └── migrations/ │ │ ├── m140506_102106_rbac_init.php │ │ ├── m170907_052038_rbac_add_index_on_auth_assignment_user_id.php │ │ ├── m180523_151638_rbac_updates_indexes_without_prefix.php │ │ ├── m200409_110543_rbac_update_mssql_trigger.php │ │ ├── schema-mssql.sql │ │ ├── schema-mysql.sql │ │ ├── schema-oci.sql │ │ ├── schema-pgsql.sql │ │ └── schema-sqlite.sql │ ├── requirements/ │ │ ├── YiiRequirementChecker.php │ │ ├── requirements.php │ │ └── views/ │ │ ├── console/ │ │ │ └── index.php │ │ └── web/ │ │ ├── css.php │ │ └── index.php │ ├── rest/ │ │ ├── Action.php │ │ ├── ActiveController.php │ │ ├── Controller.php │ │ ├── CreateAction.php │ │ ├── DeleteAction.php │ │ ├── IndexAction.php │ │ ├── OptionsAction.php │ │ ├── Serializer.php │ │ ├── UpdateAction.php │ │ ├── UrlRule.php │ │ └── ViewAction.php │ ├── test/ │ │ ├── ActiveFixture.php │ │ ├── ArrayFixture.php │ │ ├── BaseActiveFixture.php │ │ ├── DbFixture.php │ │ ├── FileFixtureTrait.php │ │ ├── Fixture.php │ │ ├── FixtureTrait.php │ │ └── InitDbFixture.php │ ├── validators/ │ │ ├── BooleanValidator.php │ │ ├── CompareValidator.php │ │ ├── DateValidator.php │ │ ├── DefaultValueValidator.php │ │ ├── EachValidator.php │ │ ├── EmailValidator.php │ │ ├── ExistValidator.php │ │ ├── FileValidator.php │ │ ├── FilterValidator.php │ │ ├── ImageValidator.php │ │ ├── InlineValidator.php │ │ ├── IpValidator.php │ │ ├── NumberValidator.php │ │ ├── PunycodeAsset.php │ │ ├── RangeValidator.php │ │ ├── RegularExpressionValidator.php │ │ ├── RequiredValidator.php │ │ ├── SafeValidator.php │ │ ├── StringValidator.php │ │ ├── TrimValidator.php │ │ ├── UniqueValidator.php │ │ ├── UrlValidator.php │ │ ├── ValidationAsset.php │ │ └── Validator.php │ ├── views/ │ │ ├── _addColumns.php │ │ ├── _addComments.php │ │ ├── _addForeignKeys.php │ │ ├── _createTable.php │ │ ├── _dropColumns.php │ │ ├── _dropForeignKeys.php │ │ ├── _dropTable.php │ │ ├── _foreignTables.php │ │ ├── addColumnMigration.php │ │ ├── createJunctionMigration.php │ │ ├── createTableMigration.php │ │ ├── dropColumnMigration.php │ │ ├── dropTableMigration.php │ │ ├── errorHandler/ │ │ │ ├── callStackItem.php │ │ │ ├── error.php │ │ │ ├── exception.php │ │ │ └── previousException.php │ │ ├── messageConfig.php │ │ └── migration.php │ ├── web/ │ │ ├── Application.php │ │ ├── AssetBundle.php │ │ ├── AssetConverter.php │ │ ├── AssetConverterInterface.php │ │ ├── AssetManager.php │ │ ├── BadRequestHttpException.php │ │ ├── CacheSession.php │ │ ├── CompositeUrlRule.php │ │ ├── ConflictHttpException.php │ │ ├── Controller.php │ │ ├── Cookie.php │ │ ├── CookieCollection.php │ │ ├── DbSession.php │ │ ├── ErrorAction.php │ │ ├── ErrorHandler.php │ │ ├── ForbiddenHttpException.php │ │ ├── GoneHttpException.php │ │ ├── GroupUrlRule.php │ │ ├── HeaderCollection.php │ │ ├── HeadersAlreadySentException.php │ │ ├── HtmlResponseFormatter.php │ │ ├── HttpException.php │ │ ├── IdentityInterface.php │ │ ├── JqueryAsset.php │ │ ├── JsExpression.php │ │ ├── JsonParser.php │ │ ├── JsonResponseFormatter.php │ │ ├── Link.php │ │ ├── Linkable.php │ │ ├── MethodNotAllowedHttpException.php │ │ ├── MultiFieldSession.php │ │ ├── MultipartFormDataParser.php │ │ ├── NotAcceptableHttpException.php │ │ ├── NotFoundHttpException.php │ │ ├── RangeNotSatisfiableHttpException.php │ │ ├── Request.php │ │ ├── RequestParserInterface.php │ │ ├── Response.php │ │ ├── ResponseFormatterInterface.php │ │ ├── ServerErrorHttpException.php │ │ ├── Session.php │ │ ├── SessionHandler.php │ │ ├── SessionIterator.php │ │ ├── TooManyRequestsHttpException.php │ │ ├── UnauthorizedHttpException.php │ │ ├── UnprocessableEntityHttpException.php │ │ ├── UnsupportedMediaTypeHttpException.php │ │ ├── UploadedFile.php │ │ ├── UrlManager.php │ │ ├── UrlNormalizer.php │ │ ├── UrlNormalizerRedirectException.php │ │ ├── UrlRule.php │ │ ├── UrlRuleInterface.php │ │ ├── User.php │ │ ├── UserEvent.php │ │ ├── View.php │ │ ├── ViewAction.php │ │ ├── XmlResponseFormatter.php │ │ ├── YiiAsset.php │ │ └── migrations/ │ │ ├── m160313_153426_session_init.php │ │ ├── schema-mssql.sql │ │ ├── schema-mysql.sql │ │ ├── schema-oci.sql │ │ ├── schema-pgsql.sql │ │ └── schema-sqlite.sql │ ├── widgets/ │ │ ├── ActiveField.php │ │ ├── ActiveForm.php │ │ ├── ActiveFormAsset.php │ │ ├── BaseListView.php │ │ ├── Block.php │ │ ├── Breadcrumbs.php │ │ ├── ContentDecorator.php │ │ ├── DetailView.php │ │ ├── FragmentCache.php │ │ ├── InputWidget.php │ │ ├── LinkPager.php │ │ ├── LinkSorter.php │ │ ├── ListView.php │ │ ├── MaskedInput.php │ │ ├── MaskedInputAsset.php │ │ ├── Menu.php │ │ ├── Pjax.php │ │ ├── PjaxAsset.php │ │ └── Spaceless.php │ ├── yii │ └── yii.bat ├── package.json ├── phpcs.xml.dist ├── phpstan-7x.dist.neon ├── phpstan-baseline-7x.neon ├── phpstan-baseline.neon ├── phpstan.dist.neon ├── phpunit.xml.dist └── tests/ ├── .env-dist ├── .gitignore ├── .hhconfig ├── Dockerfile.caching ├── Dockerfile.mssql ├── IsOneOfAssert.php ├── README.md ├── ResultPrinter.php ├── TestCase.php ├── assets/ │ └── .gitignore ├── bootstrap.php ├── data/ │ ├── ar/ │ │ ├── ActiveRecord.php │ │ ├── Alpha.php │ │ ├── Animal.php │ │ ├── Beta.php │ │ ├── BitValues.php │ │ ├── Cat.php │ │ ├── Category.php │ │ ├── CroppedType.php │ │ ├── Customer.php │ │ ├── CustomerQuery.php │ │ ├── CustomerWithAlias.php │ │ ├── CustomerWithConstructor.php │ │ ├── DefaultMultiplePk.php │ │ ├── DefaultPk.php │ │ ├── Department.php │ │ ├── Document.php │ │ ├── Dog.php │ │ ├── Dossier.php │ │ ├── Employee.php │ │ ├── EnumTypeInCustomSchema.php │ │ ├── Item.php │ │ ├── NoAutoLabels.php │ │ ├── NullValues.php │ │ ├── Order.php │ │ ├── OrderItem.php │ │ ├── OrderItemWithConstructor.php │ │ ├── OrderItemWithNullFK.php │ │ ├── OrderWithConstructor.php │ │ ├── OrderWithNullFK.php │ │ ├── Profile.php │ │ ├── ProfileWithConstructor.php │ │ ├── Storage.php │ │ ├── TestTrigger.php │ │ ├── TestTriggerAlert.php │ │ └── Type.php │ ├── base/ │ │ ├── ArrayAccessObject.php │ │ ├── CallableClass.php │ │ ├── InvalidRulesModel.php │ │ ├── RulesModel.php │ │ ├── Singer.php │ │ ├── Speaker.php │ │ └── TraversableObject.php │ ├── cache/ │ │ └── MockDependency.php │ ├── codeclimate/ │ │ └── phpmd_ruleset.xml │ ├── config-docker.php │ ├── config.php │ ├── console/ │ │ ├── controllers/ │ │ │ ├── FakeController.php │ │ │ ├── FakeEmptyController.php │ │ │ ├── FakeNoDefaultController.php │ │ │ └── fixtures/ │ │ │ ├── DependentActiveFixture.php │ │ │ ├── FirstFixture.php │ │ │ ├── FirstIndependentActiveFixture.php │ │ │ ├── FixtureStorage.php │ │ │ ├── GlobalFixture.php │ │ │ ├── SecondFixture.php │ │ │ ├── SecondIndependentActiveFixture.php │ │ │ └── subdir/ │ │ │ ├── FirstFixture.php │ │ │ └── SecondFixture.php │ │ └── migrate_create/ │ │ ├── add_columns_fk.php │ │ ├── add_columns_prefix.php │ │ ├── add_columns_test.php │ │ ├── add_two_columns_test.php │ │ ├── create_field_with_colon_default_values.php │ │ ├── create_fields.php │ │ ├── create_fields_with_col_method_after_default_value.php │ │ ├── create_foreign_key.php │ │ ├── create_id_field_not_as_pk.php │ │ ├── create_id_pk.php │ │ ├── create_prefix.php │ │ ├── create_products_from_store_table.php │ │ ├── create_test.php │ │ ├── create_title_pk.php │ │ ├── create_title_with_comma_default_values.php │ │ ├── create_unsigned_big_pk.php │ │ ├── create_unsigned_pk.php │ │ ├── default.php │ │ ├── drop_columns_test.php │ │ ├── drop_fields.php │ │ ├── drop_products_from_store_table.php │ │ ├── drop_test.php │ │ └── junction_test.php │ ├── controllers/ │ │ └── TestController.php │ ├── cubrid.sql │ ├── helpers/ │ │ └── CustomDebugInfo.php │ ├── i18n/ │ │ ├── messages/ │ │ │ ├── de/ │ │ │ │ └── test.php │ │ │ ├── de-DE/ │ │ │ │ └── test.php │ │ │ ├── en-150/ │ │ │ │ └── test.php │ │ │ ├── en-US/ │ │ │ │ └── test.php │ │ │ └── ru/ │ │ │ └── test.php │ │ ├── test.mo │ │ └── test.po │ ├── modules/ │ │ └── magic/ │ │ ├── Module.php │ │ └── controllers/ │ │ ├── ETagController.php │ │ └── subFolder/ │ │ └── SubController.php │ ├── mssql.sql │ ├── mysql.sql │ ├── oci/ │ │ └── optimize_for_tests.sql │ ├── oci.sql │ ├── postgres.sql │ ├── postgres10.sql │ ├── postgres12.sql │ ├── rbac/ │ │ └── UserID.php │ ├── sqlite.sql │ ├── validators/ │ │ ├── TestValidator.php │ │ └── models/ │ │ ├── FakedValidationModel.php │ │ ├── FakedValidationTypedModel.php │ │ ├── ValidatorTestEachAndInlineMethodModel.php │ │ ├── ValidatorTestFunctionModel.php │ │ ├── ValidatorTestMainModel.php │ │ ├── ValidatorTestRefModel.php │ │ └── ValidatorTestTypedPropModel.php │ ├── views/ │ │ ├── error.php │ │ ├── errorHandler.php │ │ ├── errorHandlerForAssetFiles.php │ │ ├── layout.php │ │ ├── pageCacheLayout.php │ │ ├── rawlayout.php │ │ ├── simple.php │ │ └── widgets/ │ │ ├── GridView/ │ │ │ └── gridview.php │ │ └── ListView/ │ │ └── item.php │ └── web/ │ ├── assetSources/ │ │ ├── css/ │ │ │ └── stub.css │ │ └── js/ │ │ └── jquery.js │ ├── assets/ │ │ └── .gitignore │ └── data.txt ├── docker-compose.caching.yml ├── docker-compose.mssql.yml ├── docker-compose.mysql.yml ├── docker-compose.oracle.yml ├── docker-compose.pgsql.yml ├── docker-compose.yml ├── framework/ │ ├── BaseYiiTest.php │ ├── ChangeLogTest.php │ ├── ar/ │ │ └── ActiveRecordTestTrait.php │ ├── base/ │ │ ├── ActionFilterTest.php │ │ ├── ApplicationTest.php │ │ ├── ArrayableTraitTest.php │ │ ├── BaseObjectTest.php │ │ ├── BehaviorTest.php │ │ ├── ComponentTest.php │ │ ├── ControllerTest.php │ │ ├── DynamicModelTest.php │ │ ├── ErrorExceptionTest.php │ │ ├── EventTest.php │ │ ├── ExposedSecurity.php │ │ ├── ModelTest.php │ │ ├── ModuleTest.php │ │ ├── SecurityTest.php │ │ ├── StaticInstanceTraitTest.php │ │ ├── ThemeTest.php │ │ ├── ViewTest.php │ │ ├── WidgetTest.php │ │ ├── fixtures/ │ │ │ └── themes/ │ │ │ ├── basic/ │ │ │ │ └── views/ │ │ │ │ └── site/ │ │ │ │ └── index.php │ │ │ └── christmas/ │ │ │ └── views/ │ │ │ └── site/ │ │ │ ├── index.php │ │ │ └── main.php │ │ └── stub/ │ │ ├── AnonymousComponentClass.php │ │ └── AnonymousModelClass.php │ ├── behaviors/ │ │ ├── AttributeBehaviorTest.php │ │ ├── AttributeTypecastBehaviorTest.php │ │ ├── AttributesBehaviorTest.php │ │ ├── BlameableBehaviorConsoleTest.php │ │ ├── BlameableBehaviorTest.php │ │ ├── CacheableWidgetBehaviorTest.php │ │ ├── OptimisticLockBehaviorTest.php │ │ ├── SluggableBehaviorTest.php │ │ └── TimestampBehaviorTest.php │ ├── caching/ │ │ ├── ApcCacheTest.php │ │ ├── ArrayCacheTest.php │ │ ├── CacheTestCase.php │ │ ├── CallbackDependencyTest.php │ │ ├── DbCacheTest.php │ │ ├── DbDependencyTest.php │ │ ├── DbQueryDependencyTest.php │ │ ├── DependencyTest.php │ │ ├── FileCacheTest.php │ │ ├── MemCacheTest.php │ │ ├── MemCachedTest.php │ │ ├── MssqlCacheTest.php │ │ ├── PgSQLCacheTest.php │ │ ├── TagDependencyTest.php │ │ └── WinCacheTest.php │ ├── console/ │ │ ├── ControllerTest.php │ │ ├── FakeController.php │ │ ├── FakeHelpController.php │ │ ├── FakeHelpControllerWithoutOutput.php │ │ ├── FakePhp71Controller.php │ │ ├── RequestTest.php │ │ ├── UnknownCommandExceptionTest.php │ │ ├── controllers/ │ │ │ ├── AssetControllerTest.php │ │ │ ├── BaseMessageControllerTest.php │ │ │ ├── CacheControllerTest.php │ │ │ ├── DbMessageControllerTest.php │ │ │ ├── EchoMigrateController.php │ │ │ ├── FixtureControllerTest.php │ │ │ ├── HelpControllerTest.php │ │ │ ├── MigrateControllerTest.php │ │ │ ├── MigrateControllerTestTrait.php │ │ │ ├── PHPMessageControllerTest.php │ │ │ ├── POMessageControllerTest.php │ │ │ ├── ServeControllerTest.php │ │ │ ├── SilencedCacheController.php │ │ │ ├── StdOutBufferControllerTrait.php │ │ │ └── stub/ │ │ │ └── index.php │ │ ├── stubs/ │ │ │ └── DummyService.php │ │ └── widgets/ │ │ └── TableTest.php │ ├── data/ │ │ ├── ActiveDataFilterTest.php │ │ ├── ActiveDataProviderCloningTest.php │ │ ├── ActiveDataProviderTest.php │ │ ├── ArrayDataProviderTest.php │ │ ├── BaseDataProviderTest.php │ │ ├── DataFilterTest.php │ │ ├── PaginationTest.php │ │ ├── SortTest.php │ │ └── SqlDataProviderTest.php │ ├── db/ │ │ ├── ActiveQueryModelConnectionTest.php │ │ ├── ActiveQueryTest.php │ │ ├── ActiveRecordTest.php │ │ ├── AnyCaseValue.php │ │ ├── AnyValue.php │ │ ├── BaseActiveRecordTest.php │ │ ├── BatchQueryResultTest.php │ │ ├── ColumnSchemaBackedEnumTest.php │ │ ├── ColumnSchemaBuilderTest.php │ │ ├── ColumnSchemaTest.php │ │ ├── CommandTest.php │ │ ├── CompareValue.php │ │ ├── ConnectionTest.php │ │ ├── DatabaseTestCase.php │ │ ├── GetTablesAliasTestTrait.php │ │ ├── QueryBuilderTest.php │ │ ├── QueryTest.php │ │ ├── SchemaBuilderTraitTest.php │ │ ├── SchemaTest.php │ │ ├── SqlTokenTest.php │ │ ├── UnqueryableQueryMock.php │ │ ├── cubrid/ │ │ │ ├── ActiveDataProviderTest.php │ │ │ ├── ActiveFixtureTest.php │ │ │ ├── ActiveQueryTest.php │ │ │ ├── ActiveRecordTest.php │ │ │ ├── BatchQueryResultTest.php │ │ │ ├── ColumnSchemaBuilderTest.php │ │ │ ├── CommandTest.php │ │ │ ├── ConnectionTest.php │ │ │ ├── ExistValidatorTest.php │ │ │ ├── QueryBuilderTest.php │ │ │ ├── QueryTest.php │ │ │ ├── SchemaTest.php │ │ │ └── UniqueValidatorTest.php │ │ ├── enums/ │ │ │ ├── Status.php │ │ │ ├── StatusTypeInt.php │ │ │ └── StatusTypeString.php │ │ ├── mssql/ │ │ │ ├── ActiveDataProviderTest.php │ │ │ ├── ActiveFixtureTest.php │ │ │ ├── ActiveQueryTest.php │ │ │ ├── ActiveRecordTest.php │ │ │ ├── BatchQueryResultTest.php │ │ │ ├── ColumnSchemaBuilderTest.php │ │ │ ├── CommandTest.php │ │ │ ├── ConnectionTest.php │ │ │ ├── DbMessageSourceTest.php │ │ │ ├── ExistValidatorTest.php │ │ │ ├── QueryBuilderTest.php │ │ │ ├── QueryCacheTest.php │ │ │ ├── QueryTest.php │ │ │ ├── SchemaTest.php │ │ │ ├── UniqueValidatorTest.php │ │ │ └── type/ │ │ │ ├── BooleanTest.php │ │ │ └── VarbinaryTest.php │ │ ├── mysql/ │ │ │ ├── ActiveDataProviderTest.php │ │ │ ├── ActiveFixtureTest.php │ │ │ ├── ActiveQueryTest.php │ │ │ ├── ActiveRecordTest.php │ │ │ ├── BaseActiveRecordTest.php │ │ │ ├── BatchQueryResultTest.php │ │ │ ├── ColumnSchemaBuilderTest.php │ │ │ ├── CommandTest.php │ │ │ ├── ConnectionTest.php │ │ │ ├── ExistValidatorTest.php │ │ │ ├── QueryBuilderTest.php │ │ │ ├── QueryTest.php │ │ │ ├── SchemaTest.php │ │ │ ├── UniqueValidatorTest.php │ │ │ ├── connection/ │ │ │ │ └── DeadLockTest.php │ │ │ └── type/ │ │ │ └── JsonTest.php │ │ ├── oci/ │ │ │ ├── ActiveDataProviderTest.php │ │ │ ├── ActiveFixtureTest.php │ │ │ ├── ActiveQueryTest.php │ │ │ ├── ActiveRecordTest.php │ │ │ ├── BatchQueryResultTest.php │ │ │ ├── ColumnSchemaBuilderTest.php │ │ │ ├── CommandTest.php │ │ │ ├── ConnectionTest.php │ │ │ ├── ExistValidatorTest.php │ │ │ ├── QueryBuilderTest.php │ │ │ ├── QueryTest.php │ │ │ ├── SchemaTest.php │ │ │ └── UniqueValidatorTest.php │ │ ├── pgsql/ │ │ │ ├── ActiveDataProviderTest.php │ │ │ ├── ActiveFixtureTest.php │ │ │ ├── ActiveQueryTest.php │ │ │ ├── ActiveRecordTest.php │ │ │ ├── ArrayParserTest.php │ │ │ ├── BaseActiveRecordTest.php │ │ │ ├── BatchQueryResultTest.php │ │ │ ├── ColumnSchemaBuilderTest.php │ │ │ ├── CommandTest.php │ │ │ ├── ConnectionTest.php │ │ │ ├── ExistValidatorTest.php │ │ │ ├── QueryBuilderTest.php │ │ │ ├── QueryTest.php │ │ │ ├── SchemaTest.php │ │ │ ├── UniqueValidatorTest.php │ │ │ └── type/ │ │ │ └── BooleanTest.php │ │ ├── sqlite/ │ │ │ ├── ActiveDataProviderTest.php │ │ │ ├── ActiveFixtureTest.php │ │ │ ├── ActiveQueryTest.php │ │ │ ├── ActiveRecordTest.php │ │ │ ├── BatchQueryResultTest.php │ │ │ ├── ColumnSchemaBuilderTest.php │ │ │ ├── CommandTest.php │ │ │ ├── ConnectionTest.php │ │ │ ├── ExistValidatorTest.php │ │ │ ├── QueryBuilderTest.php │ │ │ ├── QueryTest.php │ │ │ ├── SchemaTest.php │ │ │ ├── SqlTokenizerTest.php │ │ │ ├── UniqueValidatorTest.php │ │ │ ├── conditions/ │ │ │ │ └── InconditionBuilderTest.php │ │ │ └── type/ │ │ │ └── BooleanTest.php │ │ ├── stubs/ │ │ │ └── BackedEnumStubs.php │ │ └── testBatchInsertWithYield.php │ ├── di/ │ │ ├── ContainerTest.php │ │ ├── InstanceTest.php │ │ ├── ServiceLocatorTest.php │ │ ├── stubs/ │ │ │ ├── AbstractColor.php │ │ │ ├── Alpha.php │ │ │ ├── Bar.php │ │ │ ├── BarSetter.php │ │ │ ├── Beta.php │ │ │ ├── Car.php │ │ │ ├── Color.php │ │ │ ├── Corge.php │ │ │ ├── Foo.php │ │ │ ├── FooBaz.php │ │ │ ├── FooProperty.php │ │ │ ├── Kappa.php │ │ │ ├── Qux.php │ │ │ ├── QuxAnother.php │ │ │ ├── QuxFactory.php │ │ │ ├── QuxInterface.php │ │ │ ├── StaticMethodsWithIntersectionTypes.php │ │ │ ├── StaticMethodsWithUnionTypes.php │ │ │ ├── UnionTypeNotNull.php │ │ │ ├── UnionTypeNull.php │ │ │ ├── UnionTypeWithClass.php │ │ │ ├── Variadic.php │ │ │ └── Zeta.php │ │ └── testContainerWithVariadicCallable.php │ ├── filters/ │ │ ├── AccessRuleTest.php │ │ ├── AjaxFilterTest.php │ │ ├── ContentNegotiatorTest.php │ │ ├── CorsTest.php │ │ ├── HostControlTest.php │ │ ├── HttpCacheTest.php │ │ ├── PageCacheTest.php │ │ ├── RateLimiterTest.php │ │ ├── auth/ │ │ │ ├── AuthMethodTest.php │ │ │ ├── AuthTest.php │ │ │ ├── BasicAuthTest.php │ │ │ └── CompositeAuthTest.php │ │ └── stubs/ │ │ ├── ExposedLogger.php │ │ ├── MockAuthManager.php │ │ ├── RateLimit.php │ │ └── UserIdentity.php │ ├── grid/ │ │ ├── ActionColumnTest.php │ │ ├── CheckboxColumnTest.php │ │ ├── DataColumnTest.php │ │ ├── GridViewTest.php │ │ ├── RadiobuttonColumnTest.php │ │ └── SerialColumnTest.php │ ├── helpers/ │ │ ├── ArrayHelperTest.php │ │ ├── BaseConsoleTest.php │ │ ├── BaseUrlTest.php │ │ ├── ConsoleStub.php │ │ ├── ConsoleTest.php │ │ ├── FallbackInflector.php │ │ ├── FileHelperTest.php │ │ ├── FormatConverterTest.php │ │ ├── HtmlTest.php │ │ ├── InflectorTest.php │ │ ├── IpHelperTest.php │ │ ├── JsonTest.php │ │ ├── MarkdownTest.php │ │ ├── ReplaceArrayValueTest.php │ │ ├── StringHelperTest.php │ │ ├── UnsetArrayValueTest.php │ │ ├── UrlTest.php │ │ └── VarDumperTest.php │ ├── i18n/ │ │ ├── DbMessageSourceTest.php │ │ ├── FallbackMessageFormatterTest.php │ │ ├── FormatterDateTest.php │ │ ├── FormatterNumberTest.php │ │ ├── FormatterTest.php │ │ ├── GettextMessageSourceTest.php │ │ ├── GettextMoFileTest.php │ │ ├── GettextPoFileTest.php │ │ ├── I18NTest.php │ │ ├── IntlTestHelper.php │ │ ├── LocaleTest.php │ │ └── MessageFormatterTest.php │ ├── log/ │ │ ├── ArrayTarget.php │ │ ├── DbTargetTest.php │ │ ├── DispatcherTest.php │ │ ├── EmailTargetTest.php │ │ ├── FileTargetTest.php │ │ ├── LoggerTest.php │ │ ├── MySQLTargetTest.php │ │ ├── PgSQLTargetTest.php │ │ ├── SqliteTargetTest.php │ │ ├── SyslogTargetTest.php │ │ ├── TargetTest.php │ │ └── mocks/ │ │ ├── CustomLogger.php │ │ ├── TargetMock.php │ │ └── typed_error.php │ ├── mail/ │ │ ├── BaseMailerTest.php │ │ └── BaseMessageTest.php │ ├── models/ │ │ └── JsonModel.php │ ├── mutex/ │ │ ├── FileMutexTest.php │ │ ├── MutexTestTrait.php │ │ ├── MysqlMutexTest.php │ │ ├── PgsqlMutexTest.php │ │ ├── RetryAcquireTraitTest.php │ │ └── mocks/ │ │ └── DumbMutex.php │ ├── rbac/ │ │ ├── ActionRule.php │ │ ├── AuthorRule.php │ │ ├── DbManagerTestCase.php │ │ ├── ExposedPhpManager.php │ │ ├── ManagerTestCase.php │ │ ├── MySQLManagerCacheTest.php │ │ ├── MySQLManagerTest.php │ │ ├── PgSQLManagerCacheTest.php │ │ ├── PgSQLManagerTest.php │ │ ├── PhpManagerTest.php │ │ └── SqliteManagerTest.php │ ├── requirements/ │ │ └── YiiRequirementCheckerTest.php │ ├── rest/ │ │ ├── IndexActionTest.php │ │ ├── SerializerTest.php │ │ └── UrlRuleTest.php │ ├── test/ │ │ ├── ActiveFixtureTest.php │ │ ├── ArrayFixtureTest.php │ │ ├── FixtureTest.php │ │ ├── custom/ │ │ │ └── customer.php │ │ └── data/ │ │ ├── array_fixture.php │ │ ├── customer.php │ │ └── profile.php │ ├── validators/ │ │ ├── BooleanValidatorTest.php │ │ ├── CompareValidatorTest.php │ │ ├── DateValidatorTest.php │ │ ├── DefaultValueValidatorTest.php │ │ ├── EachValidatorTest.php │ │ ├── EmailValidatorTest.php │ │ ├── ExistValidatorTest.php │ │ ├── FileValidatorTest.php │ │ ├── FilterValidatorTest.php │ │ ├── IpValidatorTest.php │ │ ├── NumberValidatorTest.php │ │ ├── RangeValidatorTest.php │ │ ├── RegularExpressionValidatorTest.php │ │ ├── RequiredValidatorTest.php │ │ ├── SafeValidatorTest.php │ │ ├── StringValidatorTest.php │ │ ├── TrimValidatorTest.php │ │ ├── UniqueValidatorTest.php │ │ ├── UrlValidatorTest.php │ │ ├── ValidatorTest.php │ │ └── data/ │ │ └── mimeType/ │ │ ├── test.odt │ │ ├── test.tar.xz │ │ ├── test.txt │ │ └── test.xml │ ├── web/ │ │ ├── AssetBundleTest.php │ │ ├── AssetConverterTest.php │ │ ├── ControllerTest.php │ │ ├── CookieCollectionTest.php │ │ ├── ErrorActionTest.php │ │ ├── ErrorHandlerTest.php │ │ ├── FakeController.php │ │ ├── FakePhp71Controller.php │ │ ├── FakePhp7Controller.php │ │ ├── FakePhp80Controller.php │ │ ├── FormatterTest.php │ │ ├── GroupUrlRuleTest.php │ │ ├── HeaderCollectionTest.php │ │ ├── JsonResponseFormatterTest.php │ │ ├── LinkTest.php │ │ ├── MultipartFormDataParserTest.php │ │ ├── Post.php │ │ ├── RequestTest.php │ │ ├── ResponseTest.php │ │ ├── UploadedFileTest.php │ │ ├── UrlManagerCreateUrlTest.php │ │ ├── UrlManagerParseUrlTest.php │ │ ├── UrlManagerTest.php │ │ ├── UrlNormalizerTest.php │ │ ├── UrlRuleTest.php │ │ ├── UserIdentity.php │ │ ├── UserTest.php │ │ ├── ViewTest.php │ │ ├── XmlResponseFormatterTest.php │ │ ├── mocks/ │ │ │ └── TestRequestComponent.php │ │ ├── session/ │ │ │ ├── AbstractDbSessionTest.php │ │ │ ├── CacheSessionTest.php │ │ │ ├── SessionTest.php │ │ │ ├── SessionTestTrait.php │ │ │ ├── mssql/ │ │ │ │ └── DbSessionTest.php │ │ │ ├── mysql/ │ │ │ │ └── DbSessionTest.php │ │ │ ├── pgsql/ │ │ │ │ └── DbSessionTest.php │ │ │ └── sqlite/ │ │ │ └── DbSessionTest.php │ │ └── stubs/ │ │ ├── CachedUrlRule.php │ │ ├── ModelBindingStub.php │ │ ├── ModelStub.php │ │ └── VendorImage.php │ └── widgets/ │ ├── ActiveFieldTest.php │ ├── ActiveFormTest.php │ ├── BlockTest.php │ ├── BreadcrumbsTest.php │ ├── ContentDecoratorTest.php │ ├── DetailViewTest.php │ ├── FragmentCacheTest.php │ ├── LinkPagerTest.php │ ├── LinkSorterTest.php │ ├── ListViewTest.php │ ├── MenuTest.php │ ├── PjaxTest.php │ └── SpacelessTest.php ├── js/ │ ├── data/ │ │ ├── yii.activeForm.html │ │ ├── yii.gridView.html │ │ └── yii.html │ └── tests/ │ ├── yii.activeForm.test.js │ ├── yii.captcha.test.js │ ├── yii.gridView.test.js │ ├── yii.test.js │ └── yii.validation.test.js ├── runtime/ │ └── .gitignore └── test-local.sh ================================================ FILE CONTENTS ================================================ ================================================ FILE: .appveyor.yml ================================================ build: false version: dev-{build} clone_folder: C:\projects\yii2 environment: matrix: - php_ver: 7.4.0 cache: - '%APPDATA%\Composer' - '%LOCALAPPDATA%\Composer' - C:\tools\php -> .appveyor.yml - C:\tools\composer.phar -> .appveyor.yml init: - SET PATH=C:\tools\php;%PATH% install: - ps: Set-Service wuauserv -StartupType Manual - IF NOT EXIST C:\tools\php (choco install --yes --allow-empty-checksums php --version %php_ver% --params '/InstallDir:C:\tools\php') - cd C:\tools\php - copy php.ini-production php.ini - echo date.timezone="UTC" >> php.ini - echo memory_limit=512M >> php.ini - echo extension_dir=ext >> php.ini - echo extension=php_curl.dll >> php.ini - echo extension=php_fileinfo.dll >> php.ini - echo extension=php_gd2.dll >> php.ini - echo extension=php_intl.dll >> php.ini - echo extension=php_mbstring.dll >> php.ini - echo extension=php_openssl.dll >> php.ini - echo extension=php_pdo_sqlite.dll >> php.ini - IF NOT EXIST C:\tools\composer.phar (cd C:\tools && appveyor DownloadFile https://getcomposer.org/download/2.6.3/composer.phar) before_test: - cd C:\projects\yii2 - php C:\tools\composer.phar update --no-interaction --no-progress --prefer-stable --no-ansi test_script: - cd C:\projects\yii2 - vendor\bin\phpunit --exclude-group mssql,mysql,pgsql,sqlite,db,oci,wincache,cubrid ================================================ FILE: .codecov.yml ================================================ ignore: - "framework/classes.php" - "framework/views/messageConfig.php" ================================================ FILE: .dockerignore ================================================ .git vendor docs ================================================ FILE: .editorconfig ================================================ # editorconfig.org root = true [*] charset = utf-8 end_of_line = lf insert_final_newline = true indent_style = space indent_size = 4 trim_trailing_whitespace = true [*.md] trim_trailing_whitespace = false [*.yml] indent_size = 2 ================================================ FILE: .git-blame-ignore-revs ================================================ # Reformat code to be PSR-2 compatible b5f8a4dc22d5f8188405a2099d85fc154226c9b2 # Added php-cs-fixer coding standards validation to Travis CI ba0ab403b52124c941dbeb46fbd9efdc12252a5d # Coding style fixes 9d327baa8b2c80b53d4d405678f03e6b89ff6e38 # Add visibility for all class elements c82da8dc829d557e82b12edbed9e37003dfcc9a3 # Fix codestyle in build and tests 909396074eef92d62dd34b4709bb7351e722bec3 # Add void return to method in tests d71f7309aeec1ac0fef223840cb65bbbf96f1f99 # Use `::class` instead of `::className()` in tests c960f93dfeefe760eb44bcdfa4463dcc7b29cc43 # Replace deprecated PHPUnit mock builder `setMethods()` usage with `createPartialMock()`, `onlyMethods()` and `addMethods()` methods 80545100b3f40423118b5cd413fcdb9c7dd7fa5e # Make test data providers static and declare array return types da20adc82aef3eb5ae0bad3889fe6695e6424f06 # Fix codestyle in `tests` 2f8e62d6b64324099b44cbac69395fef0e53b13e # Short array syntax 1f6a8230732d829cdf2f3ca6755e4ac32f2c6f4f # CS fixes. 7a7d2a9c06c099de8064729ca3fc95fb24241b75 # Fixed error PHPCS latest version in `PHP 8.5` f66d5c8864712aef233b8131c2f99721101f61d0 ================================================ FILE: .gitattributes ================================================ # Autodetect text files * text=auto eol=lf # ...Unless the name matches the following overriding patterns # Definitively text files *.php text *.css text *.js text *.txt text *.md text *.xml text *.json text *.bat text *.sql text *.yml text # Ensure those won't be messed up with *.png binary *.jpg binary *.gif binary *.ttf binary # Ignore some meta files when creating an archive of this repository # We do not ignore any content, because this repo represents the # `yiisoft/yii2-dev` package, which is expected to ship all tests and docs. /.appveyor.yml export-ignore /.github export-ignore /.editorconfig export-ignore /.git-blame-ignore-revs export-ignore /.gitattributes export-ignore /.gitignore export-ignore # Avoid merge conflicts in CHANGELOG # https://about.gitlab.com/2015/02/10/gitlab-reduced-merge-conflicts-by-90-percent-with-changelog-placeholders/ /framework/CHANGELOG.md merge=union ================================================ FILE: .github/CONTRIBUTING.md ================================================ Contributing to Yii 2 ===================== - [Report an issue](../docs/internals/report-an-issue.md) - [Translate documentation or messages](../docs/internals/translation-workflow.md) - [Give us feedback or start a design discussion](https://www.yiiframework.com/forum/index.php/forum/42-general-discussions-for-yii-20/) - [Contribute to the core code or fix bugs](../docs/internals/git-workflow.md) ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms open_collective: yiisoft github: [yiisoft] tidelift: "packagist/yiisoft/yii2" ================================================ FILE: .github/ISSUE_TEMPLATE.md ================================================ ### What steps will reproduce the problem? ### What is the expected result? ### What do you get instead? ### Additional info | Q | A | ---------------- | --- | Yii version | 2.0.? | PHP version | | Operating system | ================================================ FILE: .github/PULL_REQUEST_TEMPLATE.md ================================================ | Q | A | ------------- | --- | Is bugfix? | ✔️/❌ | New feature? | ✔️/❌ | Breaks BC? | ✔️/❌ | Fixed issues | ================================================ FILE: .github/SECURITY.md ================================================ # Security Policy Please use the [security issue form](https://www.yiiframework.com/security) to report to us any security issue you find in Yii. DO NOT use the issue tracker or discuss it in the public forum as it will cause more damage than help. Please note that as a non-commercial OpenSource project we are not able to pay bounties at the moment. ================================================ FILE: .github/actions/php-setup/action.yml ================================================ --- name: PHP setup with composer. description: Setup PHP environment with composer and install dependencies. inputs: composer-command: description: Composer command (install or update) to run. default: update required: false type: string composer-flags: description: Additional composer flags default: >- --prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi required: false type: string composer-version: description: Composer version to use. default: required: false type: string coverage-driver: description: Code coverage driver to use (pcov, xdebug). default: none required: false type: string extensions: description: List of extensions to PHP. default: required: false type: string ignore-platform-reqs: description: Whether to add --ignore-platform-reqs to composer command. default: false required: false type: boolean ini-values: description: Initial values for PHP configuration. default: date.timezone='UTC' required: false type: string php-version: description: PHP versions as a JSON array string '["8.4"]'. default: '["7.4","8.0","8.1","8.2","8.3","8.4"]' required: false type: string tools: description: Tools to test, separated by comma. default: pie required: false type: string runs: using: composite steps: - name: Install PHP uses: shivammathur/setup-php@v2 with: coverage: ${{ inputs.coverage-driver }} extensions: ${{ inputs.extensions }} ini-values: ${{ inputs.ini-values }} php-version: ${{ inputs.php-version }} tools: ${{ inputs.tools }} - name: Update composer. shell: bash run: composer self-update ${{ inputs.composer-version }} - name: Install dependencies with composer. shell: bash run: >- composer ${{ inputs.composer-command }} ${{ inputs.composer-flags }} ${{ inputs.ignore-platform-reqs == 'true' && '--ignore-platform-reqs' || '' }} ================================================ FILE: .github/actions/phpunit/action.yml ================================================ --- name: PHPUnit Test Runner. description: Run PHPUnit tests with coverage and configurable options. inputs: additional-args: description: Additional PHPUnit arguments. default: "--log-junit junit.xml --verbose" required: false type: string configuration: description: PHPUnit configuration file. default: "" required: false type: string coverage-driver: description: Code coverage driver to use (pcov, xdebug, none). default: none required: false type: string coverage-file: description: Coverage output file name. default: coverage.xml required: false type: string coverage-format: description: Coverage report format (clover, html, xml). default: clover required: false type: string coverage-token: description: Codecov token for uploading coverage. default: "" required: false type: string debug: description: Display warnings in phpunit. default: "" required: false type: string exclude-group: description: Exclude group from phpunit. default: "" required: false type: string group: description: Include specific group in phpunit. default: "" required: false type: string path: description: Path to PHPUnit executable. default: vendor/bin/phpunit required: false type: string test-suite: description: Specific test suite to run. default: "" required: false type: string runs: using: composite steps: - name: Build PHPUnit command. id: build-cmd shell: bash run: | PATH_INPUT="${{ inputs.path }}" CONFIG_INPUT="${{ inputs.configuration }}" SUITE_INPUT="${{ inputs.test-suite }}" GROUP_INPUT="${{ inputs.group }}" EXCLUDE_GROUP_INPUT="${{ inputs.exclude-group }}" DEBUG_INPUT="${{ inputs.debug }}" ADDITIONAL_ARGS="${{ inputs.additional-args }}" COVERAGE_DRIVER="${{ inputs.coverage-driver }}" COVERAGE_FORMAT="${{ inputs.coverage-format }}" COVERAGE_FILE="${{ inputs.coverage-file }}" PHPUNIT_CMD="$PATH_INPUT --colors=always" add_param() { if [ -n "$2" ]; then PHPUNIT_CMD="$PHPUNIT_CMD $1 $2" fi } if [ -n "$COVERAGE_DRIVER" ] && [ "$COVERAGE_DRIVER" != "none" ]; then PHPUNIT_CMD="$PHPUNIT_CMD --coverage-$COVERAGE_FORMAT=$COVERAGE_FILE" fi add_param "--configuration" "$CONFIG_INPUT" add_param "--testsuite" "$SUITE_INPUT" add_param "--group" "$GROUP_INPUT" add_param "--exclude-group" "$EXCLUDE_GROUP_INPUT" if [ -n "$DEBUG_INPUT" ]; then PHPUNIT_CMD="$PHPUNIT_CMD $DEBUG_INPUT" fi if [ -n "$ADDITIONAL_ARGS" ]; then PHPUNIT_CMD="$PHPUNIT_CMD $ADDITIONAL_ARGS" fi echo "command=$PHPUNIT_CMD" >> $GITHUB_OUTPUT echo "PHPUnit command: $PHPUNIT_CMD" - name: Run PHPUnit tests on Linux. shell: bash if: runner.os != 'Windows' run: ${{ steps.build-cmd.outputs.command }} - name: Run PHPUnit tests on Windows. shell: pwsh if: runner.os == 'Windows' run: Invoke-Expression "${{ steps.build-cmd.outputs.command }}" - name: Upload test results to Codecov. if: ${{ !cancelled() && inputs.coverage-driver != 'none' }} uses: codecov/test-results-action@v1 with: token: ${{ inputs.coverage-token }} - name: Upload coverage to Codecov. if: ${{ !cancelled() && inputs.coverage-driver != 'none' }} uses: codecov/codecov-action@v5 with: files: ./${{ inputs.coverage-file }} token: ${{ inputs.coverage-token }} ================================================ FILE: .github/workflows/build.yml ================================================ --- name: build permissions: contents: read pull-requests: write on: pull_request: &ignore-paths paths-ignore: - ".appveyor.yml" - ".dockerignore" - ".editorconfig" - ".git-blame-ignore-revs" - ".gitattributes" - ".github/CONTRIBUTING.md" - ".github/FUNDING.yml" - ".github/ISSUE_TEMPLATE.md" - ".github/PULL_REQUEST_TEMPLATE.md" - ".github/SECURITY.md" - ".gitignore" - ".gitlab-ci.yml" - "code-of-conduct.md" - "docs/**" - "framework/.gitignore" - "framework/.phpstorm.meta.php" - "framework/CHANGELOG.md" - "framework/LICENSE.md" - "framework/README.md" - "framework/UPGRADE.md" - "eslint.config.js" - "LICENSE.md" - "README.md" - "ROADMAP.md" push: *ignore-paths concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: PHP_EXTENSIONS: curl, dom, imagick, intl, mbstring, mcrypt, memcached PHP_INI_VALUES: apc.enabled=1,apc.shm_size=32M,apc.enable_cli=1, date.timezone='UTC' PHPUNIT_EXCLUDE_GROUP: db,wincache XDEBUG_MODE: coverage jobs: phpunit: name: PHP ${{ matrix.php }} env: COVERAGE_DRIVER: ${{ matrix.php < 8.1 && 'xdebug' || 'pcov' }} IGNORE_PLATFORM_REQS: false runs-on: ubuntu-22.04 services: &memcached-service memcached: image: memcached:latest ports: - 11211:11211 options: >- --health-cmd "timeout 5 bash -c 'cat < /dev/null > /dev/tcp/127.0.0.1/11211'" --health-interval 10s --health-retries 5 --health-timeout 5s strategy: fail-fast: false matrix: php: [7.4, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5] steps: &build-steps - name: Checkout. uses: actions/checkout@v5 - name: Generate french locale. run: sudo locale-gen fr_FR.UTF-8 - name: Setup PHP with Composer. uses: ./.github/actions/php-setup with: coverage-driver: ${{ env.COVERAGE_DRIVER }} extensions: ${{ matrix.php < 8.0 && 'apc' || 'apcu' }}, ${{ env.PHP_EXTENSIONS }} ignore-platform-reqs: ${{ env.IGNORE_PLATFORM_REQS }} ini-values: ${{ env.PHP_INI_VALUES }}, session.save_path="${{ runner.temp }}" php-version: ${{ matrix.php }} - name: Run PHPUnit tests. uses: ./.github/actions/phpunit with: coverage-driver: ${{ env.COVERAGE_DRIVER }} coverage-token: ${{ secrets.CODECOV_TOKEN }} exclude-group: ${{ env.PHPUNIT_EXCLUDE_GROUP }} phpunit-dev: name: PHP ${{ matrix.php }} env: COVERAGE_DRIVER: none IGNORE_PLATFORM_REQS: true runs-on: ubuntu-22.04 services: *memcached-service strategy: fail-fast: false matrix: php: [8.6] steps: *build-steps ================================================ FILE: .github/workflows/ci-mariadb.yml ================================================ name: ci-mariadb permissions: contents: read pull-requests: write on: pull_request: &ignore-paths paths-ignore: - ".appveyor.yml" - ".dockerignore" - ".editorconfig" - ".git-blame-ignore-revs" - ".gitattributes" - ".github/CONTRIBUTING.md" - ".github/FUNDING.yml" - ".github/ISSUE_TEMPLATE.md" - ".github/PULL_REQUEST_TEMPLATE.md" - ".github/SECURITY.md" - ".gitignore" - ".gitlab-ci.yml" - "code-of-conduct.md" - "docs/**" - "framework/.gitignore" - "framework/.phpstorm.meta.php" - "framework/CHANGELOG.md" - "framework/LICENSE.md" - "framework/README.md" - "framework/UPGRADE.md" - "eslint.config.js" - "LICENSE.md" - "README.md" - "ROADMAP.md" push: *ignore-paths jobs: tests: name: MariaDB tests with coverage uses: yiisoft/yii2-actions/.github/workflows/database.yml@master with: concurrency-group: mariadb-${{ github.ref }} coverage-driver: xdebug database-env: '{"MARIADB_ROOT_PASSWORD":"root","MARIADB_DATABASE":"yiitest"}' database-health-cmd: mariadb-admin ping database-image: mariadb database-port: "3306" database-type: mysql database-versions: '["10.4","latest"]' extensions: curl, intl, pdo, pdo_mysql os: '["ubuntu-22.04"]' php-version: '["7.4","8.5"]' phpunit-group: mysql secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} tests-dev: name: MariaDB tests uses: yiisoft/yii2-actions/.github/workflows/database.yml@master with: concurrency-group: mariadb-dev-${{ github.ref }} coverage-driver: none database-env: '{"MARIADB_ROOT_PASSWORD":"root","MARIADB_DATABASE":"yiitest"}' database-health-cmd: mariadb-admin ping database-image: mariadb database-port: "3306" database-type: mysql database-versions: '["latest"]' extensions: curl, intl, pdo, pdo_mysql os: '["ubuntu-22.04"]' php-version: '["8.0","8.1","8.2","8.3","8.4"]' phpunit-group: mysql ================================================ FILE: .github/workflows/ci-mssql.yml ================================================ name: ci-mssql permissions: contents: read pull-requests: write on: pull_request: &ignore-paths paths-ignore: - ".appveyor.yml" - ".dockerignore" - ".editorconfig" - ".git-blame-ignore-revs" - ".gitattributes" - ".github/CONTRIBUTING.md" - ".github/FUNDING.yml" - ".github/ISSUE_TEMPLATE.md" - ".github/PULL_REQUEST_TEMPLATE.md" - ".github/SECURITY.md" - ".gitignore" - ".gitlab-ci.yml" - "code-of-conduct.md" - "docs/**" - "framework/.gitignore" - "framework/.phpstorm.meta.php" - "framework/CHANGELOG.md" - "framework/LICENSE.md" - "framework/README.md" - "framework/UPGRADE.md" - "eslint.config.js" - "LICENSE.md" - "README.md" - "ROADMAP.md" push: *ignore-paths jobs: tests: name: MSSQL tests with coverage uses: yiisoft/yii2-actions/.github/workflows/database.yml@master with: concurrency-group: mssql-${{ github.ref }} coverage-driver: xdebug database-env: '{"SA_PASSWORD":"YourStrong!Passw0rd","ACCEPT_EULA":"Y","MSSQL_PID":"Developer"}' database-health-cmd: /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U SA -P 'YourStrong!Passw0rd' -Q 'SELECT 1' database-image: mcr.microsoft.com/mssql/server database-port: "1433" database-type: mssql database-versions: '["2019-latest","2022-latest"]' extensions: curl, intl, pdo, pdo_sqlsrv hook: | sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 docker exec -i database /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U SA -P 'YourStrong!Passw0rd' -Q "IF DB_ID(N'yiitest') IS NULL CREATE DATABASE yiitest;" os: '["ubuntu-22.04"]' php-version: '["7.4","8.5"]' phpunit-group: mssql secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} tests-dev: name: MSSQL tests uses: yiisoft/yii2-actions/.github/workflows/database.yml@master with: concurrency-group: mssql-dev-${{ github.ref }} coverage-driver: none database-env: '{"SA_PASSWORD":"YourStrong!Passw0rd","ACCEPT_EULA":"Y","MSSQL_PID":"Developer"}' database-health-cmd: /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U SA -P 'YourStrong!Passw0rd' -Q 'SELECT 1' database-image: mcr.microsoft.com/mssql/server database-port: "1433" database-type: mssql database-versions: '["2022-latest"]' extensions: curl, intl, pdo, pdo_sqlsrv hook: | sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 docker exec -i database /opt/mssql-tools18/bin/sqlcmd -C -S localhost -U SA -P 'YourStrong!Passw0rd' -Q "IF DB_ID(N'yiitest') IS NULL CREATE DATABASE yiitest;" os: '["ubuntu-22.04"]' php-version: '["8.0","8.1","8.2","8.3","8.4"]' phpunit-group: mssql ================================================ FILE: .github/workflows/ci-mysql.yml ================================================ name: ci-mysql permissions: contents: read pull-requests: write on: pull_request: &ignore-paths paths-ignore: - ".appveyor.yml" - ".dockerignore" - ".editorconfig" - ".git-blame-ignore-revs" - ".gitattributes" - ".github/CONTRIBUTING.md" - ".github/FUNDING.yml" - ".github/ISSUE_TEMPLATE.md" - ".github/PULL_REQUEST_TEMPLATE.md" - ".github/SECURITY.md" - ".gitignore" - ".gitlab-ci.yml" - "code-of-conduct.md" - "docs/**" - "framework/.gitignore" - "framework/.phpstorm.meta.php" - "framework/CHANGELOG.md" - "framework/LICENSE.md" - "framework/README.md" - "framework/UPGRADE.md" - "eslint.config.js" - "LICENSE.md" - "README.md" - "ROADMAP.md" push: *ignore-paths jobs: tests: name: MySQL tests with coverage uses: yiisoft/yii2-actions/.github/workflows/database.yml@master with: concurrency-group: mysql-${{ github.ref }} coverage-driver: xdebug database-env: '{"MYSQL_ROOT_PASSWORD":"root","MYSQL_DATABASE":"yiitest"}' database-health-cmd: mysqladmin ping database-image: mysql database-port: "3306" database-type: mysql database-versions: '["5.7","latest"]' extensions: curl, intl, pdo, pdo_mysql os: '["ubuntu-22.04"]' php-version: '["7.4","8.5"]' phpunit-group: mysql secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} tests-dev: name: MySQL tests uses: yiisoft/yii2-actions/.github/workflows/database.yml@master with: concurrency-group: mysql-dev-${{ github.ref }} coverage-driver: none database-env: '{"MYSQL_ROOT_PASSWORD":"root","MYSQL_DATABASE":"yiitest"}' database-health-cmd: mysqladmin ping database-image: mysql database-port: "3306" database-type: mysql database-versions: '["latest"]' extensions: curl, intl, pdo, pdo_mysql os: '["ubuntu-22.04"]' php-version: '["8.0","8.1","8.2","8.3","8.4"]' phpunit-group: mysql ================================================ FILE: .github/workflows/ci-node.yml ================================================ name: build-node on: pull_request: &ignore-paths paths-ignore: - ".appveyor.yml" - ".dockerignore" - ".editorconfig" - ".git-blame-ignore-revs" - ".gitattributes" - ".github/CONTRIBUTING.md" - ".github/FUNDING.yml" - ".github/ISSUE_TEMPLATE.md" - ".github/PULL_REQUEST_TEMPLATE.md" - ".github/SECURITY.md" - ".gitignore" - ".gitlab-ci.yml" - "code-of-conduct.md" - "docs/**" - "framework/.gitignore" - "framework/.phpstorm.meta.php" - "framework/CHANGELOG.md" - "framework/LICENSE.md" - "framework/README.md" - "framework/UPGRADE.md" - "LICENSE.md" - "README.md" - "ROADMAP.md" push: *ignore-paths env: DEFAULT_COMPOSER_FLAGS: "--prefer-dist --no-interaction --no-progress --optimize-autoloader --ansi" concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: name: NPM 10 on ubuntu-22.04 runs-on: ubuntu-22.04 steps: - name: Monitor action permissions. if: runner.os != 'Windows' uses: GitHubSecurityLab/actions-permissions/monitor@v1 - name: Checkout. uses: actions/checkout@v5 - name: Install dependencies. run: composer update $DEFAULT_COMPOSER_FLAGS - name: Install JQuery `3.6.*@stable` for tests. run: composer require "bower-asset/jquery:3.6.*@stable" - name: Install node.js. uses: actions/setup-node@v4 with: node-version: 20 - name: Tests. run: | npm install npm run lint npm test ================================================ FILE: .github/workflows/ci-oracle.yml ================================================ name: ci-oracle permissions: contents: read pull-requests: write on: pull_request: &ignore-paths paths-ignore: - ".appveyor.yml" - ".dockerignore" - ".editorconfig" - ".git-blame-ignore-revs" - ".gitattributes" - ".github/CONTRIBUTING.md" - ".github/FUNDING.yml" - ".github/ISSUE_TEMPLATE.md" - ".github/PULL_REQUEST_TEMPLATE.md" - ".github/SECURITY.md" - ".gitignore" - ".gitlab-ci.yml" - "code-of-conduct.md" - "docs/**" - "framework/.gitignore" - "framework/.phpstorm.meta.php" - "framework/CHANGELOG.md" - "framework/LICENSE.md" - "framework/README.md" - "framework/UPGRADE.md" - "eslint.config.js" - "LICENSE.md" - "README.md" - "ROADMAP.md" push: *ignore-paths jobs: tests: name: Oracle tests with coverage uses: yiisoft/yii2-actions/.github/workflows/database.yml@master with: concurrency-group: oracle-${{ github.ref }} coverage-driver: xdebug database-env: '{"ORACLE_PASSWORD":"oracle"}' database-health-cmd: "healthcheck.sh" database-health-retries: 10 database-image: gvenzl/oracle-free database-port: "1521" database-type: oracle database-versions: '["slim-faststart"]' extensions: curl, intl, oci8, pdo, pdo_oci hook: docker exec -i database sqlplus -s system/oracle@//localhost/FREE < tests/data/oci/optimize_for_tests.sql os: '["ubuntu-22.04"]' php-version: '["7.4","8.5"]' phpunit-group: oci secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} ================================================ FILE: .github/workflows/ci-pgsql.yml ================================================ name: ci-pgsql permissions: contents: read pull-requests: write on: pull_request: &ignore-paths paths-ignore: - ".appveyor.yml" - ".dockerignore" - ".editorconfig" - ".git-blame-ignore-revs" - ".gitattributes" - ".github/CONTRIBUTING.md" - ".github/FUNDING.yml" - ".github/ISSUE_TEMPLATE.md" - ".github/PULL_REQUEST_TEMPLATE.md" - ".github/SECURITY.md" - ".gitignore" - ".gitlab-ci.yml" - "code-of-conduct.md" - "docs/**" - "framework/.gitignore" - "framework/.phpstorm.meta.php" - "framework/CHANGELOG.md" - "framework/LICENSE.md" - "framework/README.md" - "framework/UPGRADE.md" - "eslint.config.js" - "LICENSE.md" - "README.md" - "ROADMAP.md" push: *ignore-paths jobs: tests: name: PostgreSQL tests with coverage uses: yiisoft/yii2-actions/.github/workflows/database.yml@master with: concurrency-group: pgsql-${{ github.ref }} coverage-driver: xdebug database-env: '{"POSTGRES_USER":"postgres","POSTGRES_PASSWORD":"postgres","POSTGRES_DB":"yiitest"}' database-health-cmd: pg_isready database-image: postgres database-port: "5432" database-type: pgsql database-versions: '["10","11","12","13","14","15","16","17","latest"]' extensions: curl, intl, pdo, pdo_pgsql os: '["ubuntu-22.04"]' php-version: '["7.4","8.5"]' phpunit-group: pgsql secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} tests-dev: name: PostgreSQL tests uses: yiisoft/yii2-actions/.github/workflows/database.yml@master with: concurrency-group: pgsql-dev-${{ github.ref }} coverage-driver: none database-env: '{"POSTGRES_USER":"postgres","POSTGRES_PASSWORD":"postgres","POSTGRES_DB":"yiitest"}' database-health-cmd: pg_isready database-image: postgres database-port: "5432" database-type: pgsql database-versions: '["latest"]' extensions: curl, intl, pdo, pdo_pgsql os: '["ubuntu-22.04"]' php-version: '["8.0","8.1","8.2","8.3","8.4"]' phpunit-group: pgsql ================================================ FILE: .github/workflows/ci-sqlite.yml ================================================ name: ci-sqlite permissions: contents: read pull-requests: write on: pull_request: &ignore-paths paths-ignore: - ".appveyor.yml" - ".dockerignore" - ".editorconfig" - ".git-blame-ignore-revs" - ".gitattributes" - ".github/CONTRIBUTING.md" - ".github/FUNDING.yml" - ".github/ISSUE_TEMPLATE.md" - ".github/PULL_REQUEST_TEMPLATE.md" - ".github/SECURITY.md" - ".gitignore" - ".gitlab-ci.yml" - "code-of-conduct.md" - "docs/**" - "framework/.gitignore" - "framework/.phpstorm.meta.php" - "framework/CHANGELOG.md" - "framework/LICENSE.md" - "framework/README.md" - "framework/UPGRADE.md" - "eslint.config.js" - "LICENSE.md" - "README.md" - "ROADMAP.md" push: *ignore-paths jobs: tests: name: SQLite tests with coverage uses: yiisoft/yii2-actions/.github/workflows/phpunit.yml@master with: concurrency-group: sqlite-${{ github.ref }} coverage-driver: xdebug enable-concurrency: true extensions: curl, intl, pdo, pdo_sqlite os: '["ubuntu-22.04","windows-latest"]' php-version: '["7.4","8.5"]' phpunit-group: sqlite secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} tests-dev: name: SQLite tests uses: yiisoft/yii2-actions/.github/workflows/phpunit.yml@master with: concurrency-group: sqlite-dev-${{ github.ref }} coverage-driver: none enable-concurrency: true extensions: curl, intl, pdo, pdo_sqlite os: '["ubuntu-22.04"]' php-version: '["8.0","8.1","8.2","8.3","8.4"]' phpunit-group: sqlite ================================================ FILE: .github/workflows/linter.yaml ================================================ name: linter permissions: contents: read pull-requests: write on: pull_request: &ignore-paths paths-ignore: - ".appveyor.yml" - ".dockerignore" - ".editorconfig" - ".git-blame-ignore-revs" - ".gitattributes" - ".github/CONTRIBUTING.md" - ".github/FUNDING.yml" - ".github/ISSUE_TEMPLATE.md" - ".github/PULL_REQUEST_TEMPLATE.md" - ".github/SECURITY.md" - ".gitignore" - ".gitlab-ci.yml" - "code-of-conduct.md" - "docs/**" - "framework/.gitignore" - "framework/.phpstorm.meta.php" - "framework/CHANGELOG.md" - "framework/LICENSE.md" - "framework/README.md" - "framework/UPGRADE.md" - "eslint.config.js" - "LICENSE.md" - "README.md" - "ROADMAP.md" push: *ignore-paths jobs: phpcs: uses: yiisoft/yii2-actions/.github/workflows/linter.yml@master with: php-version: '["7.4", "8.5"]' ================================================ FILE: .github/workflows/static.yml ================================================ name: static analysis permissions: contents: read pull-requests: write on: pull_request: &ignore-paths paths-ignore: - ".appveyor.yml" - ".dockerignore" - ".editorconfig" - ".git-blame-ignore-revs" - ".gitattributes" - ".github/CONTRIBUTING.md" - ".github/FUNDING.yml" - ".github/ISSUE_TEMPLATE.md" - ".github/PULL_REQUEST_TEMPLATE.md" - ".github/SECURITY.md" - ".gitignore" - ".gitlab-ci.yml" - "code-of-conduct.md" - "docs/**" - "framework/.gitignore" - "framework/.phpstorm.meta.php" - "framework/CHANGELOG.md" - "framework/LICENSE.md" - "framework/README.md" - "framework/UPGRADE.md" - "eslint.config.js" - "LICENSE.md" - "README.md" - "ROADMAP.md" push: *ignore-paths jobs: phpstan: uses: yiisoft/yii2-actions/.github/workflows/phpstan.yml@master with: configuration: phpstan.dist.neon concurrency-group: phpstan-${{ github.ref }} extensions: apcu, curl, dom, imagick, intl, mbstring, mcrypt, memcached php-version: '["8.5"]' phpstan-7x: uses: yiisoft/yii2-actions/.github/workflows/phpstan.yml@master with: configuration: phpstan-7x.dist.neon concurrency-group: phpstan7x-${{ github.ref }} extensions: apc, curl, dom, imagick, intl, mbstring, mcrypt, memcached php-version: '["7.4"]' ================================================ FILE: .gitignore ================================================ # phpstorm project files .idea *.iml # netbeans project files nbproject # zend studio for eclipse project files .buildpath .project .settings # sublime text project / workspace files *.sublime-project *.sublime-workspace # visual studio code project files .vscode # windows thumbnail cache Thumbs.db # composer vendor dir /vendor # cubrid install dir /cubrid # composer itself is not needed composer.phar # composer.lock in applications is ignored since it's automatically created by composer when application is installed /apps/*/composer.lock # Mac DS_Store Files .DS_Store # phpunit itself is not needed phpunit.phar # local phpunit config /phpunit.xml .phpunit.result.cache # ignore dev installed apps and extensions /apps /extensions /packages # NPM packages /node_modules .env package-lock.json # local phpstan config phpstan.neon ================================================ FILE: .gitlab-ci.yml ================================================ image: docker:latest services: - docker:dind variables: DOCKER_YII2_PHP_IMAGE: yiisoftware/yii2-php:7.4-apache DOCKER_MYSQL_IMAGE: percona:5.7 DOCKER_POSTGRES_IMAGE: postgres:9.3 before_script: - apk add --no-cache git curl docker-compose - docker info - cd tests stages: - travis - test - cleanup test: stage: test script: - docker-compose up --build -d - docker-compose run --rm php vendor/bin/phpunit -v --exclude caching,db,data --log-junit tests/_junit/test.xml caching: stage: test only: - tests/caching - tests/full script: - export COMPOSE_FILE=docker-compose.yml:docker-compose.${CI_BUILD_NAME}.yml - docker-compose up --build -d - docker-compose run --rm php vendor/bin/phpunit -v --group caching --exclude db db: stage: test only: - tests/mysql - tests/full script: - docker-compose up --build -d - docker-compose run --rm php vendor/bin/phpunit -v --group db --exclude caching,mysql,pgsql,mssql,cubrid,oci mysql: stage: test only: - tests/mysql - tests/full script: - export COMPOSE_FILE=docker-compose.yml:docker-compose.${CI_BUILD_NAME}.yml - docker-compose up --build -d # wait for db (retry X times) - docker-compose run --rm php bash -c "while ! curl mysql:3306; do ((c++)) && ((c==30)) && break; sleep 2; done" - docker-compose run --rm php vendor/bin/phpunit -v --group mysql pgsql: stage: test only: - tests/pgsql - tests/full script: - export COMPOSE_FILE=docker-compose.yml:docker-compose.${CI_BUILD_NAME}.yml - docker-compose up --build -d # wait for db (retry X times) - docker-compose run --rm php bash -c 'while [ true ]; do curl postgres:5432; if [ $? == 52 ]; then break; fi; ((c++)) && ((c==25)) && break; sleep 2; done' - docker-compose run --rm php vendor/bin/phpunit -v --group pgsql cubrid: stage: test only: - tests/cubrid - tests/extra script: - cd cubrid - docker-compose up --build -d # wait for db (retry X times) - docker-compose run --rm php bash -c 'while [ true ]; do curl cubrid:1523; if [ $? == 56 ]; then break; fi; ((c++)) && ((c==20)) && break; sleep 3; done' - sleep 5 - docker-compose run --rm php /project/vendor/bin/phpunit -v --group cubrid mssql: stage: test only: - tests/mssql - tests/extra script: - cd mssql - docker-compose up --build -d # wait for db (retry X times) - docker-compose run --rm php bash -c 'while [ true ]; do curl mssql:1433; if [ $? == 52 ]; then break; fi; ((c++)) && ((c==15)) && break; sleep 5; done' - sleep 3 # Note: Password has to be the last parameter - docker-compose run --rm sqlcmd sh -c 'sqlcmd -S mssql -U sa -Q "CREATE DATABASE yii2test" -P Microsoft-12345' - docker-compose run --rm php vendor/bin/phpunit -v --group mssql travis: stage: travis only: - travis script: - export COMPOSE_FILE=docker-compose.yml:docker-compose.mysql.yml:docker-compose.pgsql.yml - docker-compose up --build -d # wait for dbs ... - sleep 10 - docker-compose run --rm php vendor/bin/phpunit -v --exclude mssql,cubrid,oci,wincache,cubrid ================================================ FILE: .well-known/funding-manifest-urls ================================================ https://www.yiiframework.com/funding.json ================================================ FILE: Dockerfile ================================================ ARG DOCKER_YII2_PHP_IMAGE FROM ${DOCKER_YII2_PHP_IMAGE} # Project source-code WORKDIR /project ADD composer.* /project/ # Install packages RUN /usr/local/bin/composer install --prefer-dist ADD ./ /project ENV PATH /project/vendor/bin:${PATH} ================================================ FILE: LICENSE.md ================================================ Copyright © 2008 by Yii Software (https://www.yiiframework.com/) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Yii Software nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: README.md ================================================
Yii 2 is a modern framework designed to be a solid foundation for your PHP application. It is fast, secure and efficient and works right out of the box pre-configured with reasonable defaults. The framework is easy to adjust to meet your needs, because Yii has been designed to be flexible. [](https://packagist.org/packages/yiisoft/yii2) [](https://packagist.org/packages/yiisoft/yii2) [](https://github.com/yiisoft/yii2/actions/workflows/build.yml) [](https://github.com/yiisoft/yii2/actions/workflows/static.yml) [](https://codecov.io/gh/yiisoft/yii2) Installation ------------ > [!IMPORTANT] > - The minimum required [PHP](https://www.php.net/) version of Yii is PHP `7.4`. > - It works best with PHP `8`. - [Follow the Definitive Guide](https://www.yiiframework.com/doc-2.0/guide-start-installation.html) in order to get step by step instructions. Documentation ------------- - A [Definitive Guide](https://www.yiiframework.com/doc/guide/2.0) and a [Class Reference](https://www.yiiframework.com/doc/api/2.0) cover every detail of the framework. - There is a [PDF version](https://www.yiiframework.com/doc/download/yii-guide-2.0-en.pdf) of the Definitive Guide and a [Definitive Guide Mirror](http://stuff.cebe.cc/yii2docs/) which is updated every 15 minutes. - For Yii 1.1 users, there is [Upgrading from Yii 1.1](https://www.yiiframework.com/doc/guide/2.0/en/intro-upgrade-from-v1) to get an idea of what has changed in 2.0. Versions & PHP compatibility ---------------------------- > [!NOTE] > See ["Release Cycle" at the website](https://www.yiiframework.com/release-cycle) for detailed information about supported versions. Community --------- - Participate in [discussions at forums](https://www.yiiframework.com/forum/). - [Community Slack](https://join.slack.com/t/yii/shared_invite/MjIxMjMxMTk5MTU1LTE1MDE3MDAwMzMtM2VkMTMyMjY1Ng) and [Chat in IRC](https://www.yiiframework.com/chat/). - Follow us on [Facebook](https://www.facebook.com/groups/yiitalk/), [Twitter](https://twitter.com/yiiframework) and [GitHub](https://github.com/yiisoft/yii2). - Check [other communities](https://github.com/yiisoft/yii2/wiki/communities). Contributing ------------ The framework is [Open Source](LICENSE.md) powered by [an excellent community](https://github.com/yiisoft/yii2/graphs/contributors). You may join us and: - [Report an issue](docs/internals/report-an-issue.md) - [Translate documentation or messages](docs/internals/translation-workflow.md) - [Give us feedback or start a design discussion](https://www.yiiframework.com/forum/index.php/forum/42-general-discussions-for-yii-20/) - [Contribute to the core code or fix bugs](docs/internals/git-workflow.md) - [Become a sponsor](#sponsoring) ### Reporting Security issues > [!WARNING] > Please do not report security vulnerabilities through public GitHub issues. Please refer to a [special page at the website](https://www.yiiframework.com/security/) describing proper workflow for security issue reports. ### Directory Structure ``` build/ internally used build tools docs/ documentation framework/ core framework code tests/ tests of the core framework code ``` ### Spreading the Word Acknowledging or citing Yii 2 is as important as direct contributions. **In presentations** If you are giving a presentation or talk featuring work that makes use of Yii 2 and would like to acknowledge it, we suggest using [our logo](https://www.yiiframework.com/logo/) on your title slide. **In projects** If you are using Yii 2 as part of an OpenSource project, a way to acknowledge it is to [use a special badge](https://img.shields.io/badge/Powered_by-Yii_Framework-green.svg?style=for-the-badge&logo=yii) in your README: [](https://www.yiiframework.com/) If your code is hosted at GitHub, you can place the following in your README.md file to get the badge: ``` [](https://www.yiiframework.com/) ``` ### Sponsoring Support this project by becoming a sponsor or a backer. [](https://opencollective.com/yiisoft) [](https://opencollective.com/yiisoft) ================================================ FILE: ROADMAP.md ================================================ > Roadmap for Yii 3.0 and further was moved to [yiisoft/docs](https://github.com/yiisoft/docs/blob/master/003-roadmap.md). - Enhancements are not accepted for framework version 2.0. - Enhancements are accepted for 2.0 extensions. - Bug and security fixes are expected. - Pull requests and maintainers are very welcome. Above would stand as it is [for two years after Yii 3.0 release](https://www.yiiframework.com/release-cycle). ## Additional releases While we focus on 3.0, we tag 2.0 releases and extension releases [about once in a week](https://www.yiiframework.com/release-cycle). ## 2.0.16+ (since 2019 till 3.0 release + 2 years) - Bugfixes. ## 2.0.15 (2nd quarter of 2018) - Since this release main focus is bug fixing. - No full-branch merges into 3.0. - No enhancements are accepted. ## 2.0.14 (1st quarter of 2018) Will be last release with features and enhancements the last one that will be merged into 3.0 directly. ================================================ FILE: build/.htaccess ================================================ deny from all ================================================ FILE: build/build ================================================ #!/usr/bin/env php 'yii-build', 'basePath' => __DIR__, 'controllerNamespace' => 'yii\build\controllers', 'enableCoreCommands' => false, ]); $application->run(); ================================================ FILE: build/build.bat ================================================ @echo off rem ------------------------------------------------------------- rem build script for Windows. rem rem This is the bootstrap script for running build on Windows. rem rem @author Qiang Xue