From 7c41ac994dee6b17c3ccbd898e9b89171d21edb7 Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Wed, 10 Jul 2013 17:23:11 -0400 Subject: [PATCH 01/16] Fixed locale command. --- build/controllers/LocaleController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/controllers/LocaleController.php b/build/controllers/LocaleController.php index e93a9b2..7dbdec1 100644 --- a/build/controllers/LocaleController.php +++ b/build/controllers/LocaleController.php @@ -7,8 +7,8 @@ namespace app\controllers; +use yii\console\Exception; use yii\console\Controller; -use yii\helpers\FileHelper; /** * http://www.unicode.org/cldr/charts/supplemental/language_plural_rules.html From d56739689c45fab41d20f26b5f15611f777b9a80 Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Thu, 11 Jul 2013 08:20:31 -0400 Subject: [PATCH 02/16] Enhanced file options for FileHelper. --- framework/yii/helpers/base/FileHelper.php | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/framework/yii/helpers/base/FileHelper.php b/framework/yii/helpers/base/FileHelper.php index 499d3ce..3d93113 100644 --- a/framework/yii/helpers/base/FileHelper.php +++ b/framework/yii/helpers/base/FileHelper.php @@ -10,6 +10,7 @@ namespace yii\helpers\base; use Yii; +use yii\helpers\StringHelper as StringHelper2; /** * Filesystem helper @@ -137,10 +138,11 @@ class FileHelper * If the callback returns false, then the sub-directory or file will not be copied. * The signature of the callback should be: `function ($path)`, where `$path` refers the full path to be copied. * - only: array, list of patterns that the files or directories should match if they want to be copied. - * A path matches a pattern if it contains the pattern string at its end. For example, - * '/a/b' will match all files and directories ending with '/a/b'; and the '.svn' will match all files and - * directories whose name ends with '.svn'. Note, the '/' characters in a pattern matches both '/' and '\'. - * If a file/directory matches a pattern in both "only" and "except", it will NOT be copied. + * A path matches a pattern if it contains the pattern string at its end. + * Patterns ending with '/' apply to directory paths only, and patterns not ending with '/' + * apply to file paths only. For example, '/a/b' matches all file paths ending with '/a/b'; + * and '.svn/' matches directory paths ending with '.svn'. Note, the '/' characters in a pattern matches + * both '/' and '\' in the paths. If a file/directory matches a pattern in both in "only" and "except", it will NOT be returned. * - except: array, list of patterns that the files or directories should NOT match if they want to be copied. * For more details on how to specify the patterns, please refer to the "only" option. * - recursive: boolean, whether the files under the subdirectories should also be copied. Defaults to true. @@ -211,10 +213,11 @@ class FileHelper * If the callback returns false, then the sub-directory or file will be excluded from the returning result. * The signature of the callback should be: `function ($path)`, where `$path` refers the full path to be filtered. * - only: array, list of patterns that the files or directories should match if they want to be returned. - * A path matches a pattern if it contains the pattern string at its end. For example, - * '/a/b' will match all files and directories ending with '/a/b'; and the '.svn' will match all files and - * directories whose name ends with '.svn'. Note, the '/' characters in a pattern matches both '/' and '\'. - * If a file/directory matches a pattern in both in "only" and "except", it will NOT be returned. + * A path matches a pattern if it contains the pattern string at its end. + * Patterns ending with '/' apply to directory paths only, and patterns not ending with '/' + * apply to file paths only. For example, '/a/b' matches all file paths ending with '/a/b'; + * and '.svn/' matches directory paths ending with '.svn'. Note, the '/' characters in a pattern matches + * both '/' and '\' in the paths. If a file/directory matches a pattern in both in "only" and "except", it will NOT be returned. * - except: array, list of patterns that the files or directories should NOT match if they want to be returned. * For more details on how to specify the patterns, please refer to the "only" option. * - recursive: boolean, whether the files under the subdirectories should also be looked for. Defaults to true. @@ -254,17 +257,20 @@ class FileHelper return false; } $path = str_replace('\\', '/', $path); - $n = \yii\helpers\StringHelper::strlen($path); + if (is_dir($path)) { + $path .= '/'; + } + $n = StringHelper2::strlen($path); if (!empty($options['except'])) { foreach ($options['except'] as $name) { - if (\yii\helpers\StringHelper::substr($path, -\yii\helpers\StringHelper::strlen($name), $n) === $name) { + if (StringHelper2::substr($path, -StringHelper2::strlen($name), $n) === $name) { return false; } } } if (!empty($options['only'])) { foreach ($options['only'] as $name) { - if (\yii\helpers\StringHelper::substr($path, -\yii\helpers\StringHelper::strlen($name), $n) !== $name) { + if (StringHelper2::substr($path, -StringHelper2::strlen($name), $n) !== $name) { return false; } } From 227a831b8fb887c69af02b87e835df6f178f78b0 Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Thu, 11 Jul 2013 08:35:53 -0400 Subject: [PATCH 03/16] Improved FileHelper::filterPath() --- framework/yii/helpers/base/FileHelper.php | 32 ++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/framework/yii/helpers/base/FileHelper.php b/framework/yii/helpers/base/FileHelper.php index 3d93113..283ef22 100644 --- a/framework/yii/helpers/base/FileHelper.php +++ b/framework/yii/helpers/base/FileHelper.php @@ -134,9 +134,14 @@ class FileHelper * * - dirMode: integer, the permission to be set for newly copied directories. Defaults to 0777. * - fileMode: integer, the permission to be set for newly copied files. Defaults to the current environment setting. - * - filter: callback, a PHP callback that is called for each sub-directory or file. - * If the callback returns false, then the sub-directory or file will not be copied. - * The signature of the callback should be: `function ($path)`, where `$path` refers the full path to be copied. + * - filter: callback, a PHP callback that is called for each directory or file. + * The signature of the callback should be: `function ($path)`, where `$path` refers the full path to be filtered. + * The callback can return one of the following values: + * + * * true: the directory or file will be copied (the "only" and "except" options will be ignored) + * * false: the directory or file will NOT be copied (the "only" and "except" options will be ignored) + * * null: the "only" and "except" options will determine whether the directory or file should be copied + * * - only: array, list of patterns that the files or directories should match if they want to be copied. * A path matches a pattern if it contains the pattern string at its end. * Patterns ending with '/' apply to directory paths only, and patterns not ending with '/' @@ -209,9 +214,14 @@ class FileHelper * @param string $dir the directory under which the files will be looked for. * @param array $options options for file searching. Valid options are: * - * - filter: callback, a PHP callback that is called for each sub-directory or file. - * If the callback returns false, then the sub-directory or file will be excluded from the returning result. + * - filter: callback, a PHP callback that is called for each directory or file. * The signature of the callback should be: `function ($path)`, where `$path` refers the full path to be filtered. + * The callback can return one of the following values: + * + * * true: the directory or file will be returned (the "only" and "except" options will be ignored) + * * false: the directory or file will NOT be returned (the "only" and "except" options will be ignored) + * * null: the "only" and "except" options will determine whether the directory or file should be returned + * * - only: array, list of patterns that the files or directories should match if they want to be returned. * A path matches a pattern if it contains the pattern string at its end. * Patterns ending with '/' apply to directory paths only, and patterns not ending with '/' @@ -253,8 +263,11 @@ class FileHelper */ public static function filterPath($path, $options) { - if (isset($options['filter']) && !call_user_func($options['filter'], $path)) { - return false; + if (isset($options['filter'])) { + $result = call_user_func($options['filter'], $path); + if (is_bool($result)) { + return $result; + } } $path = str_replace('\\', '/', $path); if (is_dir($path)) { @@ -270,10 +283,11 @@ class FileHelper } if (!empty($options['only'])) { foreach ($options['only'] as $name) { - if (StringHelper2::substr($path, -StringHelper2::strlen($name), $n) !== $name) { - return false; + if (StringHelper2::substr($path, -StringHelper2::strlen($name), $n) === $name) { + return true; } } + return false; } return true; } From 0cbb05d7a259e4d48b2502ba45eb1568458f961a Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Thu, 11 Jul 2013 10:04:54 -0400 Subject: [PATCH 04/16] Added Query::indexBy --- framework/yii/db/Query.php | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/framework/yii/db/Query.php b/framework/yii/db/Query.php index 74633f7..f1eb7a3 100644 --- a/framework/yii/db/Query.php +++ b/framework/yii/db/Query.php @@ -130,6 +130,13 @@ class Query extends Component * For example, `array(':name' => 'Dan', ':age' => 31)`. */ public $params; + /** + * @var string|callable $column the name of the column by which the query results should be indexed by. + * This can also be a callable (e.g. anonymous function) that returns the index value based on the given + * row data. For more details, see [[indexBy()]]. This property is only used by [[all()]]. + */ + public $indexBy; + /** * Creates a DB command that can be used to execute this query. @@ -147,6 +154,27 @@ class Query extends Component } /** + * Sets the [[indexBy]] property. + * @param string|callable $column the name of the column by which the query results should be indexed by. + * This can also be a callable (e.g. anonymous function) that returns the index value based on the given + * row data. The signature of the callable should be: + * + * ~~~ + * function ($row) + * { + * // return the index value corresponding to $row + * } + * ~~~ + * + * @return Query the query object itself + */ + public function indexBy($column) + { + $this->indexBy = $column; + return $this; + } + + /** * Executes the query and returns all results as an array. * @param Connection $db the database connection used to generate the SQL statement. * If this parameter is not given, the `db` application component will be used. @@ -154,7 +182,20 @@ class Query extends Component */ public function all($db = null) { - return $this->createCommand($db)->queryAll(); + $rows = $this->createCommand($db)->queryAll(); + if ($this->indexBy === null) { + return $rows; + } + $result = array(); + foreach ($rows as $row) { + if (is_string($this->indexBy)) { + $key = $row[$this->indexBy]; + } else { + $key = call_user_func($this->indexBy, $row); + } + $result[$key] = $row; + } + return $result; } /** From e11ce60023b1da918eac8359fe674beca5c7127e Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Thu, 11 Jul 2013 10:54:56 -0400 Subject: [PATCH 05/16] fixed the "only" option for FileHelper::findFiles() --- framework/yii/helpers/base/FileHelper.php | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/framework/yii/helpers/base/FileHelper.php b/framework/yii/helpers/base/FileHelper.php index 283ef22..72aa8bf 100644 --- a/framework/yii/helpers/base/FileHelper.php +++ b/framework/yii/helpers/base/FileHelper.php @@ -142,14 +142,17 @@ class FileHelper * * false: the directory or file will NOT be copied (the "only" and "except" options will be ignored) * * null: the "only" and "except" options will determine whether the directory or file should be copied * - * - only: array, list of patterns that the files or directories should match if they want to be copied. + * - only: array, list of patterns that the file paths should match if they want to be copied. + * A path matches a pattern if it contains the pattern string at its end. + * For example, '.php' matches all file paths ending with '.php'. + * Note, the '/' characters in a pattern matches both '/' and '\' in the paths. + * If a file path matches a pattern in both "only" and "except", it will NOT be copied. + * - except: array, list of patterns that the files or directories should match if they want to be excluded from being copied. * A path matches a pattern if it contains the pattern string at its end. * Patterns ending with '/' apply to directory paths only, and patterns not ending with '/' * apply to file paths only. For example, '/a/b' matches all file paths ending with '/a/b'; * and '.svn/' matches directory paths ending with '.svn'. Note, the '/' characters in a pattern matches - * both '/' and '\' in the paths. If a file/directory matches a pattern in both in "only" and "except", it will NOT be returned. - * - except: array, list of patterns that the files or directories should NOT match if they want to be copied. - * For more details on how to specify the patterns, please refer to the "only" option. + * both '/' and '\' in the paths. * - recursive: boolean, whether the files under the subdirectories should also be copied. Defaults to true. * - afterCopy: callback, a PHP callback that is called after each sub-directory or file is successfully copied. * The signature of the callback should be: `function ($from, $to)`, where `$from` is the sub-directory or @@ -222,14 +225,17 @@ class FileHelper * * false: the directory or file will NOT be returned (the "only" and "except" options will be ignored) * * null: the "only" and "except" options will determine whether the directory or file should be returned * - * - only: array, list of patterns that the files or directories should match if they want to be returned. + * - only: array, list of patterns that the file paths should match if they want to be returned. + * A path matches a pattern if it contains the pattern string at its end. + * For example, '.php' matches all file paths ending with '.php'. + * Note, the '/' characters in a pattern matches both '/' and '\' in the paths. + * If a file path matches a pattern in both "only" and "except", it will NOT be returned. + * - except: array, list of patterns that the file paths or directory paths should match if they want to be excluded from the result. * A path matches a pattern if it contains the pattern string at its end. * Patterns ending with '/' apply to directory paths only, and patterns not ending with '/' * apply to file paths only. For example, '/a/b' matches all file paths ending with '/a/b'; * and '.svn/' matches directory paths ending with '.svn'. Note, the '/' characters in a pattern matches - * both '/' and '\' in the paths. If a file/directory matches a pattern in both in "only" and "except", it will NOT be returned. - * - except: array, list of patterns that the files or directories should NOT match if they want to be returned. - * For more details on how to specify the patterns, please refer to the "only" option. + * both '/' and '\' in the paths. * - recursive: boolean, whether the files under the subdirectories should also be looked for. Defaults to true. * @return array files found under the directory. The file list is sorted. */ @@ -270,10 +276,11 @@ class FileHelper } } $path = str_replace('\\', '/', $path); - if (is_dir($path)) { + if ($isDir = is_dir($path)) { $path .= '/'; } $n = StringHelper2::strlen($path); + if (!empty($options['except'])) { foreach ($options['except'] as $name) { if (StringHelper2::substr($path, -StringHelper2::strlen($name), $n) === $name) { @@ -281,7 +288,8 @@ class FileHelper } } } - if (!empty($options['only'])) { + + if (!$isDir && !empty($options['only'])) { foreach ($options['only'] as $name) { if (StringHelper2::substr($path, -StringHelper2::strlen($name), $n) === $name) { return true; From 4f97fced0fa93b2d95da3f890ea457b3095637e2 Mon Sep 17 00:00:00 2001 From: Suralc Date: Thu, 11 Jul 2013 16:33:47 +0200 Subject: [PATCH 06/16] Added readme and license files to extensions. --- extensions/composer/LICENSE.md | 32 +++++++++++++++++++++ extensions/composer/README.md | 45 +++++++++++++++++++++++++++++ extensions/jui/LICENSE.md | 32 +++++++++++++++++++++ extensions/jui/README.md | 55 +++++++++++++++++++++++++++++++++++ extensions/mutex/LICENSE.md | 32 +++++++++++++++++++++ extensions/mutex/README.md | 44 ++++++++++++++++++++++++++++ extensions/smarty/LICENSE.md | 32 +++++++++++++++++++++ extensions/smarty/README.md | 65 ++++++++++++++++++++++++++++++++++++++++++ extensions/twig/LICENSE.md | 32 +++++++++++++++++++++ extensions/twig/README.md | 64 +++++++++++++++++++++++++++++++++++++++++ 10 files changed, 433 insertions(+) create mode 100644 extensions/composer/LICENSE.md create mode 100644 extensions/composer/README.md create mode 100644 extensions/jui/LICENSE.md create mode 100644 extensions/jui/README.md create mode 100644 extensions/mutex/LICENSE.md create mode 100644 extensions/mutex/README.md create mode 100644 extensions/smarty/LICENSE.md create mode 100644 extensions/smarty/README.md create mode 100644 extensions/twig/LICENSE.md create mode 100644 extensions/twig/README.md diff --git a/extensions/composer/LICENSE.md b/extensions/composer/LICENSE.md new file mode 100644 index 0000000..0bb1a8d --- /dev/null +++ b/extensions/composer/LICENSE.md @@ -0,0 +1,32 @@ +The Yii framework is free software. It is released under the terms of +the following BSD License. + +Copyright © 2008-2013 by Yii Software LLC (http://www.yiisoft.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 LLC 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. diff --git a/extensions/composer/README.md b/extensions/composer/README.md new file mode 100644 index 0000000..7fdb6e1 --- /dev/null +++ b/extensions/composer/README.md @@ -0,0 +1,45 @@ +Yii 2.0 Public Preview - Composer Installer +====================== + +Thank you for choosing Yii - a high-performance component-based PHP framework. + +If you are looking for a production-ready PHP framework, please use +[Yii v1.1](https://github.com/yiisoft/yii). + +Yii 2.0 is still under heavy development. We may make significant changes +without prior notices. **Yii 2.0 is not ready for production use yet.** + +[![Build Status](https://secure.travis-ci.org/yiisoft/yii2.png)](http://travis-ci.org/yiisoft/yii2) + +This is the yii2 composer installer. + +Installation +---------------- + +This extension offers you enhanced composer handling for your yii2-project. It will therefor require you to use composer. + +` +php composer.phar require yiisoft/yii2-composer * +` + +*Note: You might have to run `php composer.phar selfupdate` before using this extension.* + + +Usage & Documentation +----------- +This extensions allows you to hook to certain composer events and prepare your yii2-app for usage. + +After the package is installed you have to modify your composer.json to enable this extension. + +To see it in action take a look at the example apps in the repository: + +[Basic](https://github.com/suralc/yii2/blob/master/apps/basic/composer.json#L27) +[Advanced](https://github.com/suralc/yii2/blob/extensions-readme/apps/advanced/composer.json) + +However it might be useful to read through the official composer [documentation](http://getcomposer.org/doc/articles/scripts.md) to understand what this extension can to for you and what it can't. + +You can also use this as an template to create your own composer additions to ease development and deployment of your app. + + + + diff --git a/extensions/jui/LICENSE.md b/extensions/jui/LICENSE.md new file mode 100644 index 0000000..0bb1a8d --- /dev/null +++ b/extensions/jui/LICENSE.md @@ -0,0 +1,32 @@ +The Yii framework is free software. It is released under the terms of +the following BSD License. + +Copyright © 2008-2013 by Yii Software LLC (http://www.yiisoft.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 LLC 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. diff --git a/extensions/jui/README.md b/extensions/jui/README.md new file mode 100644 index 0000000..2a478eb --- /dev/null +++ b/extensions/jui/README.md @@ -0,0 +1,55 @@ +Yii 2.0 Public Preview - JUI Extension +====================== + +Thank you for choosing Yii - a high-performance component-based PHP framework. + +If you are looking for a production-ready PHP framework, please use +[Yii v1.1](https://github.com/yiisoft/yii). + +Yii 2.0 is still under heavy development. We may make significant changes +without prior notices. **Yii 2.0 is not ready for production use yet.** + +[![Build Status](https://secure.travis-ci.org/yiisoft/yii2.png)](http://travis-ci.org/yiisoft/yii2) + +This is the yii2-jui extension. + +Installation +---------------- +The preferred way to install this extension is [composer](http://getcomposer.org/download/). + +Either run +``` +php composer.phar require yiisoft/yii2-jui* +``` + +or add +``` +"yiisoft/yii2-jui": "*" +``` +to the require section of your composer.json. + + +*Note: You might have to run `php composer.phar selfupdate`* + + +Usage & Documentation +----------- + +This extension provides the multiple widgets to work with jquery.ui, as well as a set of compatible jquery.ui files. + +You can use these widgets in your view files after you have registered the corresponding assets. + +Example: +----------- +```php +echo ProgressBar::widget(array( + 'clientOptions' => array( + 'value' => 75, + ), +)); + +For further instructions refer to the guide (once it is finished) + + + + diff --git a/extensions/mutex/LICENSE.md b/extensions/mutex/LICENSE.md new file mode 100644 index 0000000..0bb1a8d --- /dev/null +++ b/extensions/mutex/LICENSE.md @@ -0,0 +1,32 @@ +The Yii framework is free software. It is released under the terms of +the following BSD License. + +Copyright © 2008-2013 by Yii Software LLC (http://www.yiisoft.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 LLC 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. diff --git a/extensions/mutex/README.md b/extensions/mutex/README.md new file mode 100644 index 0000000..e3a697d --- /dev/null +++ b/extensions/mutex/README.md @@ -0,0 +1,44 @@ +Yii 2.0 Public Preview - Mutex Extension +====================== + +Thank you for choosing Yii - a high-performance component-based PHP framework. + +If you are looking for a production-ready PHP framework, please use +[Yii v1.1](https://github.com/yiisoft/yii). + +Yii 2.0 is still under heavy development. We may make significant changes +without prior notices. **Yii 2.0 is not ready for production use yet.** + +[![Build Status](https://secure.travis-ci.org/yiisoft/yii2.png)](http://travis-ci.org/yiisoft/yii2) + +This is the yii2-mutex extension. + +Installation +---------------- +The prefered way to install this extension is through [composer](http://getcomposer.org/download/). + +Either run +``` +php composer.phar require yiisoft/yii2-mutex * +``` + +or add +``` +"yiisoft/yii2-mutex": "*" +``` +to the require section of your composer.json. + + +*Note: You might have to run `php composer.phar selfupdate`* + + +Usage & Documentation +----------- + +This component can be used to perform actions similar to the concept of [mutual exclusion](http://en.wikipedia.org/wiki/Mutual_exclusion). + +For concrete examples and advanced usage refer to the guide. + + + + diff --git a/extensions/smarty/LICENSE.md b/extensions/smarty/LICENSE.md new file mode 100644 index 0000000..0bb1a8d --- /dev/null +++ b/extensions/smarty/LICENSE.md @@ -0,0 +1,32 @@ +The Yii framework is free software. It is released under the terms of +the following BSD License. + +Copyright © 2008-2013 by Yii Software LLC (http://www.yiisoft.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 LLC 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. diff --git a/extensions/smarty/README.md b/extensions/smarty/README.md new file mode 100644 index 0000000..927d96c --- /dev/null +++ b/extensions/smarty/README.md @@ -0,0 +1,65 @@ +Yii 2.0 Public Preview - Smarty View Renderer +====================== + +Thank you for choosing Yii - a high-performance component-based PHP framework. + +If you are looking for a production-ready PHP framework, please use +[Yii v1.1](https://github.com/yiisoft/yii). + +Yii 2.0 is still under heavy development. We may make significant changes +without prior notices. **Yii 2.0 is not ready for production use yet.** + +[![Build Status](https://secure.travis-ci.org/yiisoft/yii2.png)](http://travis-ci.org/yiisoft/yii2) + +This is the yii2-smarty extension. + +Installation +---------------- +The prefered way to install this extension is through [composer](http://getcomposer.org/download/). + +Either run +``` +php composer.phar require yiisoft/yii2-smarty * +``` + +or add +```json +"yiisoft/yii2-smarty": "*" +``` +to the require section of your composer.json. + + +*Note: You might have to run `php composer.phar selfupdate`* + + +Usage & Documentation +----------- + +This extension has to be registered prior to usage. +To do this add the following to the $rendereres property of the view instance you want to use this with: + +Example: +```php + array( + 'view' => array( + 'class' => 'yii\base\View', + 'viewRenderers' => array( + 'tpl' => array( + 'class' => 'yii\smarty\ViewRenderer', + //'cachePath' => '@runtime/Smarty/cache', + ), + ), + ), + ), +); +``` + +For further instructions refer to the related section in the guide. + + + + diff --git a/extensions/twig/LICENSE.md b/extensions/twig/LICENSE.md new file mode 100644 index 0000000..0bb1a8d --- /dev/null +++ b/extensions/twig/LICENSE.md @@ -0,0 +1,32 @@ +The Yii framework is free software. It is released under the terms of +the following BSD License. + +Copyright © 2008-2013 by Yii Software LLC (http://www.yiisoft.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 LLC 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. diff --git a/extensions/twig/README.md b/extensions/twig/README.md new file mode 100644 index 0000000..d1ad873 --- /dev/null +++ b/extensions/twig/README.md @@ -0,0 +1,64 @@ +Yii 2.0 Public Preview - Twig View Renderer +====================== + +Thank you for choosing Yii - a high-performance component-based PHP framework. + +If you are looking for a production-ready PHP framework, please use +[Yii v1.1](https://github.com/yiisoft/yii). + +Yii 2.0 is still under heavy development. We may make significant changes +without prior notices. **Yii 2.0 is not ready for production use yet.** + +[![Build Status](https://secure.travis-ci.org/yiisoft/yii2.png)](http://travis-ci.org/yiisoft/yii2) + +This is the yii2-twig extension. + +Installation +---------------- +The prefered way to install this extension is through [composer](http://getcomposer.org/download/). + +Either run +``` +php composer.phar require yiisoft/yii2-twig * +``` + +or add +``` +"yiisoft/yii2-twig": "*" +``` +to the require section of your composer.json. + + +*Note: You might have to run `php composer.phar selfupdate`* + + +Usage & Documentation +----------- + +This extension has to be registered prior to usage. +To do this add the following to the $rendereres property of the view instance you want to use this with: + +Example: +```php + array( + 'view' => array( + 'class' => 'yii\base\View', + 'viewRenderers' => array( + 'twig' => array( + 'class' => 'yii\twig\ViewRenderer', + //'cachePath' => '@runtime/Twig/cache', + //'options' => array(), /* Array of twig options */ + ), + ), + ), + ), +); +``` + +For further instructions refer to the related section in the guide. + + From ce9fabab57073fe6621316595037942430f7fe75 Mon Sep 17 00:00:00 2001 From: Suralc Date: Thu, 11 Jul 2013 17:22:43 +0200 Subject: [PATCH 07/16] Rewording --- extensions/composer/README.md | 2 +- extensions/jui/README.md | 2 +- extensions/smarty/README.md | 2 +- extensions/twig/README.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/composer/README.md b/extensions/composer/README.md index 7fdb6e1..871d1e3 100644 --- a/extensions/composer/README.md +++ b/extensions/composer/README.md @@ -29,7 +29,7 @@ Usage & Documentation ----------- This extensions allows you to hook to certain composer events and prepare your yii2-app for usage. -After the package is installed you have to modify your composer.json to enable this extension. +After the package is installed, the composer.json file has to be modified to enable this extension. To see it in action take a look at the example apps in the repository: diff --git a/extensions/jui/README.md b/extensions/jui/README.md index 2a478eb..6025ac4 100644 --- a/extensions/jui/README.md +++ b/extensions/jui/README.md @@ -35,7 +35,7 @@ to the require section of your composer.json. Usage & Documentation ----------- -This extension provides the multiple widgets to work with jquery.ui, as well as a set of compatible jquery.ui files. +This extension provides multiple widgets to work with jquery.ui, as well as a set of compatible jquery.ui files. You can use these widgets in your view files after you have registered the corresponding assets. diff --git a/extensions/smarty/README.md b/extensions/smarty/README.md index 927d96c..45115ef 100644 --- a/extensions/smarty/README.md +++ b/extensions/smarty/README.md @@ -36,7 +36,7 @@ Usage & Documentation ----------- This extension has to be registered prior to usage. -To do this add the following to the $rendereres property of the view instance you want to use this with: +To enable this view renderer add it to the $rendereres property of your view object. Example: ```php diff --git a/extensions/twig/README.md b/extensions/twig/README.md index d1ad873..037f0e9 100644 --- a/extensions/twig/README.md +++ b/extensions/twig/README.md @@ -36,7 +36,7 @@ Usage & Documentation ----------- This extension has to be registered prior to usage. -To do this add the following to the $rendereres property of the view instance you want to use this with: +To enable this view renderer add it to the $rendereres property of your view object. Example: ```php From 3c09eadded31a8061d3e99dfc9dff15872ea8a76 Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Thu, 11 Jul 2013 11:32:47 -0400 Subject: [PATCH 08/16] Added autoload command. --- build/build | 9 +- build/controllers/AutoloadController.php | 89 ++++++ build/controllers/LocaleController.php | 2 +- framework/yii/classes.php | 447 +++++++++++++++---------------- 4 files changed, 310 insertions(+), 237 deletions(-) create mode 100644 build/controllers/AutoloadController.php diff --git a/build/build b/build/build index 45f15bd..a6c7cc8 100755 --- a/build/build +++ b/build/build @@ -13,8 +13,9 @@ defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); require(__DIR__ . '/../framework/yii/Yii.php'); -$id = 'yii-build'; -$basePath = __DIR__; - -$application = new yii\console\Application(array('id' => $id, 'basePath' => $basePath)); +$application = new yii\console\Application(array( + 'id' => 'yii-build', + 'basePath' => __DIR__, + 'controllerNamespace' => 'yii\build\controllers', +)); $application->run(); diff --git a/build/controllers/AutoloadController.php b/build/controllers/AutoloadController.php new file mode 100644 index 0000000..08a81b3 --- /dev/null +++ b/build/controllers/AutoloadController.php @@ -0,0 +1,89 @@ + + * @since 2.0 + */ +class AutoloadController extends Controller +{ + public $defaultAction = 'create'; + + /** + * Creates a class map for the core Yii classes. + * @param string $root the root path of Yii framework. Defaults to YII_PATH. + * @param string $mapFile the file to contain the class map. Defaults to YII_PATH . '/classes.php'. + */ + public function actionCreate($root = null, $mapFile = null) + { + if ($root === null) { + $root = YII_PATH; + } + $root = FileHelper::normalizePath($root); + if ($mapFile === null) { + $mapFile = YII_PATH . '/classes.php'; + } + $options = array( + 'filter' => function($path) { + if (is_file($path)) { + $file = basename($path); + if ($file[0] < 'A' || $file[0] > 'Z') { + return false; + } + } + return null; + }, + 'only' => array('.php'), + 'except' => array( + 'Yii.php', + 'YiiBase.php', + '/debug/', + '/console/', + '/test/', + ), + ); + $files = FileHelper::findFiles($root, $options); + $map = array(); + foreach ($files as $file) { + if (($pos = strpos($file, $root)) !== 0) { + die("Something wrong: $file"); + } + $path = str_replace('\\', '/', substr($file, strlen($root))); + $map[] = "\t'yii" . substr(str_replace('/', '\\', $path), 0, -4) . "' => YII_PATH . '$path',"; + } + $map = implode("\n", $map); + $output = << YII_PATH . '/YiiBase.php', -'yii\debug\Module' => YII_PATH . '/debug/Module.php', -'yii\debug\controllers\DefaultController' => YII_PATH . '/debug/controllers/DefaultController.php', -'yii\debug\Toolbar' => YII_PATH . '/debug/Toolbar.php', -'yii\web\PageCache' => YII_PATH . '/web/PageCache.php', -'yii\web\CaptchaAction' => YII_PATH . '/web/CaptchaAction.php', -'yii\web\HttpException' => YII_PATH . '/web/HttpException.php', -'yii\web\Application' => YII_PATH . '/web/Application.php', -'yii\web\CacheSession' => YII_PATH . '/web/CacheSession.php', -'yii\web\UserEvent' => YII_PATH . '/web/UserEvent.php', -'yii\web\VerbFilter' => YII_PATH . '/web/VerbFilter.php', -'yii\web\JsExpression' => YII_PATH . '/web/JsExpression.php', -'yii\web\CookieCollection' => YII_PATH . '/web/CookieCollection.php', -'yii\web\ResponseFormatter' => YII_PATH . '/web/ResponseFormatter.php', -'yii\web\AccessRule' => YII_PATH . '/web/AccessRule.php', -'yii\web\AssetManager' => YII_PATH . '/web/AssetManager.php', -'yii\web\Session' => YII_PATH . '/web/Session.php', -'yii\web\AccessControl' => YII_PATH . '/web/AccessControl.php', -'yii\web\DbSession' => YII_PATH . '/web/DbSession.php', -'yii\web\IAssetConverter' => YII_PATH . '/web/IAssetConverter.php', -'yii\web\Identity' => YII_PATH . '/web/Identity.php', -'yii\web\Controller' => YII_PATH . '/web/Controller.php', -'yii\web\User' => YII_PATH . '/web/User.php', -'yii\web\HttpCache' => YII_PATH . '/web/HttpCache.php', -'yii\web\UrlManager' => YII_PATH . '/web/UrlManager.php', -'yii\web\Request' => YII_PATH . '/web/Request.php', -'yii\web\Cookie' => YII_PATH . '/web/Cookie.php', -'yii\web\UploadedFile' => YII_PATH . '/web/UploadedFile.php', -'yii\web\ResponseEvent' => YII_PATH . '/web/ResponseEvent.php', -'yii\web\UrlRule' => YII_PATH . '/web/UrlRule.php', -'yii\web\XmlResponseFormatter' => YII_PATH . '/web/XmlResponseFormatter.php', -'yii\web\Response' => YII_PATH . '/web/Response.php', -'yii\web\SessionIterator' => YII_PATH . '/web/SessionIterator.php', -'yii\web\AssetBundle' => YII_PATH . '/web/AssetBundle.php', -'yii\web\AssetConverter' => YII_PATH . '/web/AssetConverter.php', -'yii\web\HeaderCollection' => YII_PATH . '/web/HeaderCollection.php', -'yii\log\Target' => YII_PATH . '/log/Target.php', -'yii\log\DebugTarget' => YII_PATH . '/log/DebugTarget.php', -'yii\log\Logger' => YII_PATH . '/log/Logger.php', -'yii\log\EmailTarget' => YII_PATH . '/log/EmailTarget.php', -'yii\log\DbTarget' => YII_PATH . '/log/DbTarget.php', -'yii\log\FileTarget' => YII_PATH . '/log/FileTarget.php', -'yii\widgets\ActiveField' => YII_PATH . '/widgets/ActiveField.php', -'yii\widgets\Captcha' => YII_PATH . '/widgets/Captcha.php', -'yii\widgets\ListPager' => YII_PATH . '/widgets/ListPager.php', -'yii\widgets\LinkPager' => YII_PATH . '/widgets/LinkPager.php', -'yii\widgets\MaskedInput' => YII_PATH . '/widgets/MaskedInput.php', -'yii\widgets\InputWidget' => YII_PATH . '/widgets/InputWidget.php', -'yii\widgets\ActiveForm' => YII_PATH . '/widgets/ActiveForm.php', -'yii\widgets\ContentDecorator' => YII_PATH . '/widgets/ContentDecorator.php', -'yii\widgets\Breadcrumbs' => YII_PATH . '/widgets/Breadcrumbs.php', -'yii\widgets\Block' => YII_PATH . '/widgets/Block.php', -'yii\widgets\FragmentCache' => YII_PATH . '/widgets/FragmentCache.php', -'yii\widgets\Menu' => YII_PATH . '/widgets/Menu.php', -'yii\rbac\PhpManager' => YII_PATH . '/rbac/PhpManager.php', -'yii\rbac\Item' => YII_PATH . '/rbac/Item.php', -'yii\rbac\Manager' => YII_PATH . '/rbac/Manager.php', -'yii\rbac\Assignment' => YII_PATH . '/rbac/Assignment.php', -'yii\rbac\DbManager' => YII_PATH . '/rbac/DbManager.php', -'yii\behaviors\AutoTimestamp' => YII_PATH . '/behaviors/AutoTimestamp.php', -'yii\caching\Cache' => YII_PATH . '/caching/Cache.php', -'yii\caching\XCache' => YII_PATH . '/caching/XCache.php', -'yii\caching\DbDependency' => YII_PATH . '/caching/DbDependency.php', -'yii\caching\DbCache' => YII_PATH . '/caching/DbCache.php', -'yii\caching\Dependency' => YII_PATH . '/caching/Dependency.php', -'yii\caching\ApcCache' => YII_PATH . '/caching/ApcCache.php', -'yii\caching\MemCacheServer' => YII_PATH . '/caching/MemCacheServer.php', -'yii\caching\ZendDataCache' => YII_PATH . '/caching/ZendDataCache.php', -'yii\caching\MemCache' => YII_PATH . '/caching/MemCache.php', -'yii\caching\GroupDependency' => YII_PATH . '/caching/GroupDependency.php', -'yii\caching\ChainedDependency' => YII_PATH . '/caching/ChainedDependency.php', -'yii\caching\WinCache' => YII_PATH . '/caching/WinCache.php', -'yii\caching\FileCache' => YII_PATH . '/caching/FileCache.php', -'yii\caching\FileDependency' => YII_PATH . '/caching/FileDependency.php', -'yii\caching\ExpressionDependency' => YII_PATH . '/caching/ExpressionDependency.php', -'yii\caching\DummyCache' => YII_PATH . '/caching/DummyCache.php', -'yii\i18n\Formatter' => YII_PATH . '/i18n/Formatter.php', -'yii\i18n\GettextFile' => YII_PATH . '/i18n/GettextFile.php', -'yii\i18n\I18N' => YII_PATH . '/i18n/I18N.php', -'yii\i18n\PhpMessageSource' => YII_PATH . '/i18n/PhpMessageSource.php', -'yii\i18n\GettextPoFile' => YII_PATH . '/i18n/GettextPoFile.php', -'yii\i18n\data\plurals' => YII_PATH . '/i18n/data/plurals.php', -'yii\i18n\DbMessageSource' => YII_PATH . '/i18n/DbMessageSource.php', -'yii\i18n\GettextMessageSource' => YII_PATH . '/i18n/GettextMessageSource.php', -'yii\i18n\MessageSource' => YII_PATH . '/i18n/MessageSource.php', -'yii\i18n\MissingTranslationEvent' => YII_PATH . '/i18n/MissingTranslationEvent.php', -'yii\i18n\GettextMoFile' => YII_PATH . '/i18n/GettextMoFile.php', -'yii\data\Pagination' => YII_PATH . '/data/Pagination.php', -'yii\data\Sort' => YII_PATH . '/data/Sort.php', -'yii\validators\RequiredValidator' => YII_PATH . '/validators/RequiredValidator.php', -'yii\validators\NumberValidator' => YII_PATH . '/validators/NumberValidator.php', -'yii\validators\BooleanValidator' => YII_PATH . '/validators/BooleanValidator.php', -'yii\validators\UniqueValidator' => YII_PATH . '/validators/UniqueValidator.php', -'yii\validators\StringValidator' => YII_PATH . '/validators/StringValidator.php', -'yii\validators\UrlValidator' => YII_PATH . '/validators/UrlValidator.php', -'yii\validators\EmailValidator' => YII_PATH . '/validators/EmailValidator.php', -'yii\validators\CaptchaValidator' => YII_PATH . '/validators/CaptchaValidator.php', -'yii\validators\DefaultValueValidator' => YII_PATH . '/validators/DefaultValueValidator.php', -'yii\validators\CompareValidator' => YII_PATH . '/validators/CompareValidator.php', -'yii\validators\RangeValidator' => YII_PATH . '/validators/RangeValidator.php', -'yii\validators\Validator' => YII_PATH . '/validators/Validator.php', -'yii\validators\FilterValidator' => YII_PATH . '/validators/FilterValidator.php', -'yii\validators\FileValidator' => YII_PATH . '/validators/FileValidator.php', -'yii\validators\RegularExpressionValidator' => YII_PATH . '/validators/RegularExpressionValidator.php', -'yii\validators\InlineValidator' => YII_PATH . '/validators/InlineValidator.php', -'yii\validators\DateValidator' => YII_PATH . '/validators/DateValidator.php', -'yii\validators\ExistValidator' => YII_PATH . '/validators/ExistValidator.php', -'yii\base\Formatter' => YII_PATH . '/base/Formatter.php', -'yii\base\UnknownMethodException' => YII_PATH . '/base/UnknownMethodException.php', -'yii\base\Application' => YII_PATH . '/base/Application.php', -'yii\base\ErrorException' => YII_PATH . '/base/ErrorException.php', -'yii\base\ActionEvent' => YII_PATH . '/base/ActionEvent.php', -'yii\base\UserException' => YII_PATH . '/base/UserException.php', -'yii\base\Module' => YII_PATH . '/base/Module.php', -'yii\base\ViewEvent' => YII_PATH . '/base/ViewEvent.php', -'yii\base\Action' => YII_PATH . '/base/Action.php', -'yii\base\ViewRenderer' => YII_PATH . '/base/ViewRenderer.php', -'yii\base\ActionFilter' => YII_PATH . '/base/ActionFilter.php', -'yii\base\Theme' => YII_PATH . '/base/Theme.php', -'yii\base\Controller' => YII_PATH . '/base/Controller.php', -'yii\base\View' => YII_PATH . '/base/View.php', -'yii\base\UnknownClassException' => YII_PATH . '/base/UnknownClassException.php', -'yii\base\ErrorHandler' => YII_PATH . '/base/ErrorHandler.php', -'yii\base\Request' => YII_PATH . '/base/Request.php', -'yii\base\Object' => YII_PATH . '/base/Object.php', -'yii\base\Behavior' => YII_PATH . '/base/Behavior.php', -'yii\base\Exception' => YII_PATH . '/base/Exception.php', -'yii\base\Event' => YII_PATH . '/base/Event.php', -'yii\base\ModelEvent' => YII_PATH . '/base/ModelEvent.php', -'yii\base\InvalidConfigException' => YII_PATH . '/base/InvalidConfigException.php', -'yii\base\Component' => YII_PATH . '/base/Component.php', -'yii\base\Response' => YII_PATH . '/base/Response.php', -'yii\base\InvalidParamException' => YII_PATH . '/base/InvalidParamException.php', -'yii\base\Model' => YII_PATH . '/base/Model.php', -'yii\base\UnknownPropertyException' => YII_PATH . '/base/UnknownPropertyException.php', -'yii\base\Arrayable' => YII_PATH . '/base/Arrayable.php', -'yii\base\InvalidRouteException' => YII_PATH . '/base/InvalidRouteException.php', -'yii\base\InlineAction' => YII_PATH . '/base/InlineAction.php', -'yii\base\NotSupportedException' => YII_PATH . '/base/NotSupportedException.php', -'yii\base\Widget' => YII_PATH . '/base/Widget.php', -'yii\base\InvalidCallException' => YII_PATH . '/base/InvalidCallException.php', -'yii\helpers\VarDumper' => YII_PATH . '/helpers/VarDumper.php', -'yii\helpers\FileHelper' => YII_PATH . '/helpers/FileHelper.php', -'yii\helpers\Console' => YII_PATH . '/helpers/Console.php', -'yii\helpers\HtmlPurifier' => YII_PATH . '/helpers/HtmlPurifier.php', -'yii\helpers\SecurityHelper' => YII_PATH . '/helpers/SecurityHelper.php', -'yii\helpers\Inflector' => YII_PATH . '/helpers/Inflector.php', -'yii\helpers\Markdown' => YII_PATH . '/helpers/Markdown.php', -'yii\helpers\Html' => YII_PATH . '/helpers/Html.php', -'yii\helpers\base\VarDumper' => YII_PATH . '/helpers/base/VarDumper.php', -'yii\helpers\base\FileHelper' => YII_PATH . '/helpers/base/FileHelper.php', -'yii\helpers\base\Console' => YII_PATH . '/helpers/base/Console.php', -'yii\helpers\base\HtmlPurifier' => YII_PATH . '/helpers/base/HtmlPurifier.php', -'yii\helpers\base\SecurityHelper' => YII_PATH . '/helpers/base/SecurityHelper.php', -'yii\helpers\base\Inflector' => YII_PATH . '/helpers/base/Inflector.php', -'yii\helpers\base\Markdown' => YII_PATH . '/helpers/base/Markdown.php', -'yii\helpers\base\Html' => YII_PATH . '/helpers/base/Html.php', -'yii\helpers\base\StringHelper' => YII_PATH . '/helpers/base/StringHelper.php', -'yii\helpers\base\Json' => YII_PATH . '/helpers/base/Json.php', -'yii\helpers\base\ArrayHelper' => YII_PATH . '/helpers/base/ArrayHelper.php', -'yii\helpers\StringHelper' => YII_PATH . '/helpers/StringHelper.php', -'yii\helpers\Json' => YII_PATH . '/helpers/Json.php', -'yii\helpers\ArrayHelper' => YII_PATH . '/helpers/ArrayHelper.php', -'yii\bootstrap\Collapse' => YII_PATH . '/bootstrap/Collapse.php', -'yii\bootstrap\Progress' => YII_PATH . '/bootstrap/Progress.php', -'yii\bootstrap\Dropdown' => YII_PATH . '/bootstrap/Dropdown.php', -'yii\bootstrap\Alert' => YII_PATH . '/bootstrap/Alert.php', -'yii\bootstrap\Carousel' => YII_PATH . '/bootstrap/Carousel.php', -'yii\bootstrap\NavBar' => YII_PATH . '/bootstrap/NavBar.php', -'yii\bootstrap\Button' => YII_PATH . '/bootstrap/Button.php', -'yii\bootstrap\Modal' => YII_PATH . '/bootstrap/Modal.php', -'yii\bootstrap\TypeAhead' => YII_PATH . '/bootstrap/TypeAhead.php', -'yii\bootstrap\ButtonDropdown' => YII_PATH . '/bootstrap/ButtonDropdown.php', -'yii\bootstrap\ButtonGroup' => YII_PATH . '/bootstrap/ButtonGroup.php', -'yii\bootstrap\Nav' => YII_PATH . '/bootstrap/Nav.php', -'yii\bootstrap\Widget' => YII_PATH . '/bootstrap/Widget.php', -'yii\bootstrap\Tabs' => YII_PATH . '/bootstrap/Tabs.php', -'yii\jui\DatePicker' => YII_PATH . '/jui/DatePicker.php', -'yii\jui\Accordion' => YII_PATH . '/jui/Accordion.php', -'yii\jui\Spinner' => YII_PATH . '/jui/Spinner.php', -'yii\jui\InputWidget' => YII_PATH . '/jui/InputWidget.php', -'yii\jui\Droppable' => YII_PATH . '/jui/Droppable.php', -'yii\jui\ProgressBar' => YII_PATH . '/jui/ProgressBar.php', -'yii\jui\Draggable' => YII_PATH . '/jui/Draggable.php', -'yii\jui\AutoComplete' => YII_PATH . '/jui/AutoComplete.php', -'yii\jui\Dialog' => YII_PATH . '/jui/Dialog.php', -'yii\jui\Selectable' => YII_PATH . '/jui/Selectable.php', -'yii\jui\assets' => YII_PATH . '/jui/assets.php', -'yii\jui\Widget' => YII_PATH . '/jui/Widget.php', -'yii\jui\Sortable' => YII_PATH . '/jui/Sortable.php', -'yii\jui\Menu' => YII_PATH . '/jui/Menu.php', -'yii\jui\Resizable' => YII_PATH . '/jui/Resizable.php', -'yii\jui\Tabs' => YII_PATH . '/jui/Tabs.php', -'yii\console\Application' => YII_PATH . '/console/Application.php', -'yii\console\Controller' => YII_PATH . '/console/Controller.php', -'yii\console\Request' => YII_PATH . '/console/Request.php', -'yii\console\Exception' => YII_PATH . '/console/Exception.php', -'yii\console\controllers\AssetController' => YII_PATH . '/console/controllers/AssetController.php', -'yii\console\controllers\MessageController' => YII_PATH . '/console/controllers/MessageController.php', -'yii\console\controllers\MigrateController' => YII_PATH . '/console/controllers/MigrateController.php', -'yii\console\controllers\HelpController' => YII_PATH . '/console/controllers/HelpController.php', -'yii\console\controllers\CacheController' => YII_PATH . '/console/controllers/CacheController.php', -'yii\console\Response' => YII_PATH . '/console/Response.php', -'yii\db\StaleObjectException' => YII_PATH . '/db/StaleObjectException.php', -'yii\db\Connection' => YII_PATH . '/db/Connection.php', -'yii\db\Expression' => YII_PATH . '/db/Expression.php', -'yii\db\TableSchema' => YII_PATH . '/db/TableSchema.php', -'yii\db\Transaction' => YII_PATH . '/db/Transaction.php', -'yii\db\QueryBuilder' => YII_PATH . '/db/QueryBuilder.php', -'yii\db\Command' => YII_PATH . '/db/Command.php', -'yii\db\Schema' => YII_PATH . '/db/Schema.php', -'yii\db\ActiveRelation' => YII_PATH . '/db/ActiveRelation.php', -'yii\db\pgsql\QueryBuilder' => YII_PATH . '/db/pgsql/QueryBuilder.php', -'yii\db\pgsql\Schema' => YII_PATH . '/db/pgsql/Schema.php', -'yii\db\Exception' => YII_PATH . '/db/Exception.php', -'yii\db\sqlite\QueryBuilder' => YII_PATH . '/db/sqlite/QueryBuilder.php', -'yii\db\sqlite\Schema' => YII_PATH . '/db/sqlite/Schema.php', -'yii\db\ColumnSchema' => YII_PATH . '/db/ColumnSchema.php', -'yii\db\mysql\QueryBuilder' => YII_PATH . '/db/mysql/QueryBuilder.php', -'yii\db\mysql\Schema' => YII_PATH . '/db/mysql/Schema.php', -'yii\db\DataReader' => YII_PATH . '/db/DataReader.php', -'yii\db\ActiveQuery' => YII_PATH . '/db/ActiveQuery.php', -'yii\db\mssql\PDO' => YII_PATH . '/db/mssql/PDO.php', -'yii\db\mssql\QueryBuilder' => YII_PATH . '/db/mssql/QueryBuilder.php', -'yii\db\mssql\Schema' => YII_PATH . '/db/mssql/Schema.php', -'yii\db\mssql\SqlsrvPDO' => YII_PATH . '/db/mssql/SqlsrvPDO.php', -'yii\db\Migration' => YII_PATH . '/db/Migration.php', -'yii\db\Query' => YII_PATH . '/db/Query.php', -'yii\db\ActiveRecord' => YII_PATH . '/db/ActiveRecord.php', + 'yii\base\Action' => YII_PATH . '/base/Action.php', + 'yii\base\ActionEvent' => YII_PATH . '/base/ActionEvent.php', + 'yii\base\ActionFilter' => YII_PATH . '/base/ActionFilter.php', + 'yii\base\Application' => YII_PATH . '/base/Application.php', + 'yii\base\Arrayable' => YII_PATH . '/base/Arrayable.php', + 'yii\base\Behavior' => YII_PATH . '/base/Behavior.php', + 'yii\base\Component' => YII_PATH . '/base/Component.php', + 'yii\base\Controller' => YII_PATH . '/base/Controller.php', + 'yii\base\ErrorException' => YII_PATH . '/base/ErrorException.php', + 'yii\base\ErrorHandler' => YII_PATH . '/base/ErrorHandler.php', + 'yii\base\Event' => YII_PATH . '/base/Event.php', + 'yii\base\Exception' => YII_PATH . '/base/Exception.php', + 'yii\base\Formatter' => YII_PATH . '/base/Formatter.php', + 'yii\base\InlineAction' => YII_PATH . '/base/InlineAction.php', + 'yii\base\InvalidCallException' => YII_PATH . '/base/InvalidCallException.php', + 'yii\base\InvalidConfigException' => YII_PATH . '/base/InvalidConfigException.php', + 'yii\base\InvalidParamException' => YII_PATH . '/base/InvalidParamException.php', + 'yii\base\InvalidRouteException' => YII_PATH . '/base/InvalidRouteException.php', + 'yii\base\Model' => YII_PATH . '/base/Model.php', + 'yii\base\ModelEvent' => YII_PATH . '/base/ModelEvent.php', + 'yii\base\Module' => YII_PATH . '/base/Module.php', + 'yii\base\NotSupportedException' => YII_PATH . '/base/NotSupportedException.php', + 'yii\base\Object' => YII_PATH . '/base/Object.php', + 'yii\base\Request' => YII_PATH . '/base/Request.php', + 'yii\base\Response' => YII_PATH . '/base/Response.php', + 'yii\base\Theme' => YII_PATH . '/base/Theme.php', + 'yii\base\UnknownClassException' => YII_PATH . '/base/UnknownClassException.php', + 'yii\base\UnknownMethodException' => YII_PATH . '/base/UnknownMethodException.php', + 'yii\base\UnknownPropertyException' => YII_PATH . '/base/UnknownPropertyException.php', + 'yii\base\UserException' => YII_PATH . '/base/UserException.php', + 'yii\base\View' => YII_PATH . '/base/View.php', + 'yii\base\ViewEvent' => YII_PATH . '/base/ViewEvent.php', + 'yii\base\ViewRenderer' => YII_PATH . '/base/ViewRenderer.php', + 'yii\base\Widget' => YII_PATH . '/base/Widget.php', + 'yii\behaviors\AutoTimestamp' => YII_PATH . '/behaviors/AutoTimestamp.php', + 'yii\bootstrap\Alert' => YII_PATH . '/bootstrap/Alert.php', + 'yii\bootstrap\Button' => YII_PATH . '/bootstrap/Button.php', + 'yii\bootstrap\ButtonDropdown' => YII_PATH . '/bootstrap/ButtonDropdown.php', + 'yii\bootstrap\ButtonGroup' => YII_PATH . '/bootstrap/ButtonGroup.php', + 'yii\bootstrap\Carousel' => YII_PATH . '/bootstrap/Carousel.php', + 'yii\bootstrap\Collapse' => YII_PATH . '/bootstrap/Collapse.php', + 'yii\bootstrap\Dropdown' => YII_PATH . '/bootstrap/Dropdown.php', + 'yii\bootstrap\Modal' => YII_PATH . '/bootstrap/Modal.php', + 'yii\bootstrap\Nav' => YII_PATH . '/bootstrap/Nav.php', + 'yii\bootstrap\NavBar' => YII_PATH . '/bootstrap/NavBar.php', + 'yii\bootstrap\Progress' => YII_PATH . '/bootstrap/Progress.php', + 'yii\bootstrap\Tabs' => YII_PATH . '/bootstrap/Tabs.php', + 'yii\bootstrap\TypeAhead' => YII_PATH . '/bootstrap/TypeAhead.php', + 'yii\bootstrap\Widget' => YII_PATH . '/bootstrap/Widget.php', + 'yii\caching\ApcCache' => YII_PATH . '/caching/ApcCache.php', + 'yii\caching\Cache' => YII_PATH . '/caching/Cache.php', + 'yii\caching\ChainedDependency' => YII_PATH . '/caching/ChainedDependency.php', + 'yii\caching\DbCache' => YII_PATH . '/caching/DbCache.php', + 'yii\caching\DbDependency' => YII_PATH . '/caching/DbDependency.php', + 'yii\caching\Dependency' => YII_PATH . '/caching/Dependency.php', + 'yii\caching\DummyCache' => YII_PATH . '/caching/DummyCache.php', + 'yii\caching\ExpressionDependency' => YII_PATH . '/caching/ExpressionDependency.php', + 'yii\caching\FileCache' => YII_PATH . '/caching/FileCache.php', + 'yii\caching\FileDependency' => YII_PATH . '/caching/FileDependency.php', + 'yii\caching\GroupDependency' => YII_PATH . '/caching/GroupDependency.php', + 'yii\caching\MemCache' => YII_PATH . '/caching/MemCache.php', + 'yii\caching\MemCacheServer' => YII_PATH . '/caching/MemCacheServer.php', + 'yii\caching\WinCache' => YII_PATH . '/caching/WinCache.php', + 'yii\caching\XCache' => YII_PATH . '/caching/XCache.php', + 'yii\caching\ZendDataCache' => YII_PATH . '/caching/ZendDataCache.php', + 'yii\data\ActiveDataProvider' => YII_PATH . '/data/ActiveDataProvider.php', + 'yii\data\ArrayDataProvider' => YII_PATH . '/data/ArrayDataProvider.php', + 'yii\data\DataProvider' => YII_PATH . '/data/DataProvider.php', + 'yii\data\IDataProvider' => YII_PATH . '/data/IDataProvider.php', + 'yii\data\Pagination' => YII_PATH . '/data/Pagination.php', + 'yii\data\Sort' => YII_PATH . '/data/Sort.php', + 'yii\db\ActiveQuery' => YII_PATH . '/db/ActiveQuery.php', + 'yii\db\ActiveRecord' => YII_PATH . '/db/ActiveRecord.php', + 'yii\db\ActiveRelation' => YII_PATH . '/db/ActiveRelation.php', + 'yii\db\ColumnSchema' => YII_PATH . '/db/ColumnSchema.php', + 'yii\db\Command' => YII_PATH . '/db/Command.php', + 'yii\db\Connection' => YII_PATH . '/db/Connection.php', + 'yii\db\DataReader' => YII_PATH . '/db/DataReader.php', + 'yii\db\Exception' => YII_PATH . '/db/Exception.php', + 'yii\db\Expression' => YII_PATH . '/db/Expression.php', + 'yii\db\Migration' => YII_PATH . '/db/Migration.php', + 'yii\db\mssql\PDO' => YII_PATH . '/db/mssql/PDO.php', + 'yii\db\mssql\QueryBuilder' => YII_PATH . '/db/mssql/QueryBuilder.php', + 'yii\db\mssql\Schema' => YII_PATH . '/db/mssql/Schema.php', + 'yii\db\mssql\SqlsrvPDO' => YII_PATH . '/db/mssql/SqlsrvPDO.php', + 'yii\db\mysql\QueryBuilder' => YII_PATH . '/db/mysql/QueryBuilder.php', + 'yii\db\mysql\Schema' => YII_PATH . '/db/mysql/Schema.php', + 'yii\db\pgsql\QueryBuilder' => YII_PATH . '/db/pgsql/QueryBuilder.php', + 'yii\db\pgsql\Schema' => YII_PATH . '/db/pgsql/Schema.php', + 'yii\db\Query' => YII_PATH . '/db/Query.php', + 'yii\db\QueryBuilder' => YII_PATH . '/db/QueryBuilder.php', + 'yii\db\Schema' => YII_PATH . '/db/Schema.php', + 'yii\db\sqlite\QueryBuilder' => YII_PATH . '/db/sqlite/QueryBuilder.php', + 'yii\db\sqlite\Schema' => YII_PATH . '/db/sqlite/Schema.php', + 'yii\db\StaleObjectException' => YII_PATH . '/db/StaleObjectException.php', + 'yii\db\TableSchema' => YII_PATH . '/db/TableSchema.php', + 'yii\db\Transaction' => YII_PATH . '/db/Transaction.php', + 'yii\helpers\ArrayHelper' => YII_PATH . '/helpers/ArrayHelper.php', + 'yii\helpers\base\ArrayHelper' => YII_PATH . '/helpers/base/ArrayHelper.php', + 'yii\helpers\base\Console' => YII_PATH . '/helpers/base/Console.php', + 'yii\helpers\base\FileHelper' => YII_PATH . '/helpers/base/FileHelper.php', + 'yii\helpers\base\Html' => YII_PATH . '/helpers/base/Html.php', + 'yii\helpers\base\HtmlPurifier' => YII_PATH . '/helpers/base/HtmlPurifier.php', + 'yii\helpers\base\Inflector' => YII_PATH . '/helpers/base/Inflector.php', + 'yii\helpers\base\Json' => YII_PATH . '/helpers/base/Json.php', + 'yii\helpers\base\Markdown' => YII_PATH . '/helpers/base/Markdown.php', + 'yii\helpers\base\SecurityHelper' => YII_PATH . '/helpers/base/SecurityHelper.php', + 'yii\helpers\base\StringHelper' => YII_PATH . '/helpers/base/StringHelper.php', + 'yii\helpers\base\VarDumper' => YII_PATH . '/helpers/base/VarDumper.php', + 'yii\helpers\Console' => YII_PATH . '/helpers/Console.php', + 'yii\helpers\FileHelper' => YII_PATH . '/helpers/FileHelper.php', + 'yii\helpers\Html' => YII_PATH . '/helpers/Html.php', + 'yii\helpers\HtmlPurifier' => YII_PATH . '/helpers/HtmlPurifier.php', + 'yii\helpers\Inflector' => YII_PATH . '/helpers/Inflector.php', + 'yii\helpers\Json' => YII_PATH . '/helpers/Json.php', + 'yii\helpers\Markdown' => YII_PATH . '/helpers/Markdown.php', + 'yii\helpers\SecurityHelper' => YII_PATH . '/helpers/SecurityHelper.php', + 'yii\helpers\StringHelper' => YII_PATH . '/helpers/StringHelper.php', + 'yii\helpers\VarDumper' => YII_PATH . '/helpers/VarDumper.php', + 'yii\i18n\DbMessageSource' => YII_PATH . '/i18n/DbMessageSource.php', + 'yii\i18n\Formatter' => YII_PATH . '/i18n/Formatter.php', + 'yii\i18n\GettextFile' => YII_PATH . '/i18n/GettextFile.php', + 'yii\i18n\GettextMessageSource' => YII_PATH . '/i18n/GettextMessageSource.php', + 'yii\i18n\GettextMoFile' => YII_PATH . '/i18n/GettextMoFile.php', + 'yii\i18n\GettextPoFile' => YII_PATH . '/i18n/GettextPoFile.php', + 'yii\i18n\I18N' => YII_PATH . '/i18n/I18N.php', + 'yii\i18n\MessageSource' => YII_PATH . '/i18n/MessageSource.php', + 'yii\i18n\MissingTranslationEvent' => YII_PATH . '/i18n/MissingTranslationEvent.php', + 'yii\i18n\PhpMessageSource' => YII_PATH . '/i18n/PhpMessageSource.php', + 'yii\log\DbTarget' => YII_PATH . '/log/DbTarget.php', + 'yii\log\EmailTarget' => YII_PATH . '/log/EmailTarget.php', + 'yii\log\FileTarget' => YII_PATH . '/log/FileTarget.php', + 'yii\log\Logger' => YII_PATH . '/log/Logger.php', + 'yii\log\Target' => YII_PATH . '/log/Target.php', + 'yii\rbac\Assignment' => YII_PATH . '/rbac/Assignment.php', + 'yii\rbac\DbManager' => YII_PATH . '/rbac/DbManager.php', + 'yii\rbac\Item' => YII_PATH . '/rbac/Item.php', + 'yii\rbac\Manager' => YII_PATH . '/rbac/Manager.php', + 'yii\rbac\PhpManager' => YII_PATH . '/rbac/PhpManager.php', + 'yii\requirements\YiiRequirementChecker' => YII_PATH . '/requirements/YiiRequirementChecker.php', + 'yii\validators\BooleanValidator' => YII_PATH . '/validators/BooleanValidator.php', + 'yii\validators\CaptchaValidator' => YII_PATH . '/validators/CaptchaValidator.php', + 'yii\validators\CompareValidator' => YII_PATH . '/validators/CompareValidator.php', + 'yii\validators\DateValidator' => YII_PATH . '/validators/DateValidator.php', + 'yii\validators\DefaultValueValidator' => YII_PATH . '/validators/DefaultValueValidator.php', + 'yii\validators\EmailValidator' => YII_PATH . '/validators/EmailValidator.php', + 'yii\validators\ExistValidator' => YII_PATH . '/validators/ExistValidator.php', + 'yii\validators\FileValidator' => YII_PATH . '/validators/FileValidator.php', + 'yii\validators\FilterValidator' => YII_PATH . '/validators/FilterValidator.php', + 'yii\validators\InlineValidator' => YII_PATH . '/validators/InlineValidator.php', + 'yii\validators\NumberValidator' => YII_PATH . '/validators/NumberValidator.php', + 'yii\validators\RangeValidator' => YII_PATH . '/validators/RangeValidator.php', + 'yii\validators\RegularExpressionValidator' => YII_PATH . '/validators/RegularExpressionValidator.php', + 'yii\validators\RequiredValidator' => YII_PATH . '/validators/RequiredValidator.php', + 'yii\validators\StringValidator' => YII_PATH . '/validators/StringValidator.php', + 'yii\validators\UniqueValidator' => YII_PATH . '/validators/UniqueValidator.php', + 'yii\validators\UrlValidator' => YII_PATH . '/validators/UrlValidator.php', + 'yii\validators\Validator' => YII_PATH . '/validators/Validator.php', + 'yii\web\AccessControl' => YII_PATH . '/web/AccessControl.php', + 'yii\web\AccessRule' => YII_PATH . '/web/AccessRule.php', + 'yii\web\Application' => YII_PATH . '/web/Application.php', + 'yii\web\AssetBundle' => YII_PATH . '/web/AssetBundle.php', + 'yii\web\AssetConverter' => YII_PATH . '/web/AssetConverter.php', + 'yii\web\AssetManager' => YII_PATH . '/web/AssetManager.php', + 'yii\web\CacheSession' => YII_PATH . '/web/CacheSession.php', + 'yii\web\CaptchaAction' => YII_PATH . '/web/CaptchaAction.php', + 'yii\web\Controller' => YII_PATH . '/web/Controller.php', + 'yii\web\Cookie' => YII_PATH . '/web/Cookie.php', + 'yii\web\CookieCollection' => YII_PATH . '/web/CookieCollection.php', + 'yii\web\DbSession' => YII_PATH . '/web/DbSession.php', + 'yii\web\HeaderCollection' => YII_PATH . '/web/HeaderCollection.php', + 'yii\web\HttpCache' => YII_PATH . '/web/HttpCache.php', + 'yii\web\HttpException' => YII_PATH . '/web/HttpException.php', + 'yii\web\IAssetConverter' => YII_PATH . '/web/IAssetConverter.php', + 'yii\web\Identity' => YII_PATH . '/web/Identity.php', + 'yii\web\JsExpression' => YII_PATH . '/web/JsExpression.php', + 'yii\web\PageCache' => YII_PATH . '/web/PageCache.php', + 'yii\web\Request' => YII_PATH . '/web/Request.php', + 'yii\web\Response' => YII_PATH . '/web/Response.php', + 'yii\web\ResponseEvent' => YII_PATH . '/web/ResponseEvent.php', + 'yii\web\ResponseFormatter' => YII_PATH . '/web/ResponseFormatter.php', + 'yii\web\Session' => YII_PATH . '/web/Session.php', + 'yii\web\SessionIterator' => YII_PATH . '/web/SessionIterator.php', + 'yii\web\UploadedFile' => YII_PATH . '/web/UploadedFile.php', + 'yii\web\UrlManager' => YII_PATH . '/web/UrlManager.php', + 'yii\web\UrlRule' => YII_PATH . '/web/UrlRule.php', + 'yii\web\User' => YII_PATH . '/web/User.php', + 'yii\web\UserEvent' => YII_PATH . '/web/UserEvent.php', + 'yii\web\VerbFilter' => YII_PATH . '/web/VerbFilter.php', + 'yii\web\XmlResponseFormatter' => YII_PATH . '/web/XmlResponseFormatter.php', + 'yii\widgets\ActiveField' => YII_PATH . '/widgets/ActiveField.php', + 'yii\widgets\ActiveForm' => YII_PATH . '/widgets/ActiveForm.php', + 'yii\widgets\BaseListView' => YII_PATH . '/widgets/BaseListView.php', + 'yii\widgets\Block' => YII_PATH . '/widgets/Block.php', + 'yii\widgets\Breadcrumbs' => YII_PATH . '/widgets/Breadcrumbs.php', + 'yii\widgets\Captcha' => YII_PATH . '/widgets/Captcha.php', + 'yii\widgets\ContentDecorator' => YII_PATH . '/widgets/ContentDecorator.php', + 'yii\widgets\DetailView' => YII_PATH . '/widgets/DetailView.php', + 'yii\widgets\FragmentCache' => YII_PATH . '/widgets/FragmentCache.php', + 'yii\widgets\InputWidget' => YII_PATH . '/widgets/InputWidget.php', + 'yii\widgets\LinkPager' => YII_PATH . '/widgets/LinkPager.php', + 'yii\widgets\ListPager' => YII_PATH . '/widgets/ListPager.php', + 'yii\widgets\ListView' => YII_PATH . '/widgets/ListView.php', + 'yii\widgets\MaskedInput' => YII_PATH . '/widgets/MaskedInput.php', + 'yii\widgets\Menu' => YII_PATH . '/widgets/Menu.php', + 'yii\widgets\Spaceless' => YII_PATH . '/widgets/Spaceless.php', ); From 9b0cb851d67c52720839f6315b21773f5fd7930a Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Thu, 11 Jul 2013 11:33:58 -0400 Subject: [PATCH 09/16] renamed autoload to classmap. --- build/controllers/AutoloadController.php | 89 -------------------------------- build/controllers/ClassmapController.php | 89 ++++++++++++++++++++++++++++++++ framework/yii/classes.php | 2 +- 3 files changed, 90 insertions(+), 90 deletions(-) delete mode 100644 build/controllers/AutoloadController.php create mode 100644 build/controllers/ClassmapController.php diff --git a/build/controllers/AutoloadController.php b/build/controllers/AutoloadController.php deleted file mode 100644 index 08a81b3..0000000 --- a/build/controllers/AutoloadController.php +++ /dev/null @@ -1,89 +0,0 @@ - - * @since 2.0 - */ -class AutoloadController extends Controller -{ - public $defaultAction = 'create'; - - /** - * Creates a class map for the core Yii classes. - * @param string $root the root path of Yii framework. Defaults to YII_PATH. - * @param string $mapFile the file to contain the class map. Defaults to YII_PATH . '/classes.php'. - */ - public function actionCreate($root = null, $mapFile = null) - { - if ($root === null) { - $root = YII_PATH; - } - $root = FileHelper::normalizePath($root); - if ($mapFile === null) { - $mapFile = YII_PATH . '/classes.php'; - } - $options = array( - 'filter' => function($path) { - if (is_file($path)) { - $file = basename($path); - if ($file[0] < 'A' || $file[0] > 'Z') { - return false; - } - } - return null; - }, - 'only' => array('.php'), - 'except' => array( - 'Yii.php', - 'YiiBase.php', - '/debug/', - '/console/', - '/test/', - ), - ); - $files = FileHelper::findFiles($root, $options); - $map = array(); - foreach ($files as $file) { - if (($pos = strpos($file, $root)) !== 0) { - die("Something wrong: $file"); - } - $path = str_replace('\\', '/', substr($file, strlen($root))); - $map[] = "\t'yii" . substr(str_replace('/', '\\', $path), 0, -4) . "' => YII_PATH . '$path',"; - } - $map = implode("\n", $map); - $output = << + * @since 2.0 + */ +class ClassmapController extends Controller +{ + public $defaultAction = 'create'; + + /** + * Creates a class map for the core Yii classes. + * @param string $root the root path of Yii framework. Defaults to YII_PATH. + * @param string $mapFile the file to contain the class map. Defaults to YII_PATH . '/classes.php'. + */ + public function actionCreate($root = null, $mapFile = null) + { + if ($root === null) { + $root = YII_PATH; + } + $root = FileHelper::normalizePath($root); + if ($mapFile === null) { + $mapFile = YII_PATH . '/classes.php'; + } + $options = array( + 'filter' => function($path) { + if (is_file($path)) { + $file = basename($path); + if ($file[0] < 'A' || $file[0] > 'Z') { + return false; + } + } + return null; + }, + 'only' => array('.php'), + 'except' => array( + 'Yii.php', + 'YiiBase.php', + '/debug/', + '/console/', + '/test/', + ), + ); + $files = FileHelper::findFiles($root, $options); + $map = array(); + foreach ($files as $file) { + if (($pos = strpos($file, $root)) !== 0) { + die("Something wrong: $file"); + } + $path = str_replace('\\', '/', substr($file, strlen($root))); + $map[] = "\t'yii" . substr(str_replace('/', '\\', $path), 0, -4) . "' => YII_PATH . '$path',"; + } + $map = implode("\n", $map); + $output = << Date: Fri, 12 Jul 2013 07:31:54 -0400 Subject: [PATCH 10/16] import namespaces. --- apps/advanced/environments/dev/frontend/www/index.php | 1 + apps/advanced/environments/dev/yii | 1 + apps/advanced/environments/prod/frontend/www/index.php | 1 + apps/advanced/environments/prod/yii | 1 + apps/basic/www/index-test.php | 1 + apps/basic/www/index.php | 1 + apps/basic/yii | 1 + framework/yii/YiiBase.php | 1 - 8 files changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/advanced/environments/dev/frontend/www/index.php b/apps/advanced/environments/dev/frontend/www/index.php index 9a2ffaa..f7d974c 100644 --- a/apps/advanced/environments/dev/frontend/www/index.php +++ b/apps/advanced/environments/dev/frontend/www/index.php @@ -5,6 +5,7 @@ defined('YII_DEBUG') or define('YII_DEBUG', true); require(__DIR__ . '/../../vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/../../vendor/autoload.php'); +require(__DIR__ . '/../../vendor/composer/autoload_namespaces.php'); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../config/main.php'), diff --git a/apps/advanced/environments/dev/yii b/apps/advanced/environments/dev/yii index b81fc10..fce2955 100644 --- a/apps/advanced/environments/dev/yii +++ b/apps/advanced/environments/dev/yii @@ -15,6 +15,7 @@ defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); require(__DIR__ . '/vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/vendor/autoload.php'); +require(__DIR__ . '/vendor/composer/autoload_namespaces.php'); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/console/config/main.php'), diff --git a/apps/advanced/environments/prod/frontend/www/index.php b/apps/advanced/environments/prod/frontend/www/index.php index e797bf0..640d581 100644 --- a/apps/advanced/environments/prod/frontend/www/index.php +++ b/apps/advanced/environments/prod/frontend/www/index.php @@ -5,6 +5,7 @@ defined('YII_DEBUG') or define('YII_DEBUG', false); require(__DIR__ . '/../../vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/../../vendor/autoload.php'); +require(__DIR__ . '/../../vendor/composer/autoload_namespaces.php'); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../config/main.php'), diff --git a/apps/advanced/environments/prod/yii b/apps/advanced/environments/prod/yii index 0d4ebe2..0115b33 100644 --- a/apps/advanced/environments/prod/yii +++ b/apps/advanced/environments/prod/yii @@ -15,6 +15,7 @@ defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); require(__DIR__ . '/vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/vendor/autoload.php'); +require(__DIR__ . '/vendor/composer/autoload_namespaces.php'); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/console/config/main.php'), diff --git a/apps/basic/www/index-test.php b/apps/basic/www/index-test.php index 4a00b37..c744dc7 100644 --- a/apps/basic/www/index-test.php +++ b/apps/basic/www/index-test.php @@ -10,6 +10,7 @@ defined('YII_ENV') or define('YII_ENV', 'test'); require_once(__DIR__ . '/../vendor/yiisoft/yii2/yii/Yii.php'); require_once(__DIR__ . '/../vendor/autoload.php'); +require(__DIR__ . '/../vendor/composer/autoload_namespaces.php'); $config = require(__DIR__ . '/../config/web-test.php'); diff --git a/apps/basic/www/index.php b/apps/basic/www/index.php index 9bc1565..fc78e6b 100644 --- a/apps/basic/www/index.php +++ b/apps/basic/www/index.php @@ -6,6 +6,7 @@ defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/../vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/../vendor/autoload.php'); +require(__DIR__ . '/../vendor/composer/autoload_namespaces.php'); $config = require(__DIR__ . '/../config/web.php'); diff --git a/apps/basic/yii b/apps/basic/yii index c874ce0..5762bb7 100755 --- a/apps/basic/yii +++ b/apps/basic/yii @@ -15,6 +15,7 @@ defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); require(__DIR__ . '/vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/vendor/autoload.php'); +require(__DIR__ . '/vendor/composer/autoload_namespaces.php'); $config = require(__DIR__ . '/config/console.php'); diff --git a/framework/yii/YiiBase.php b/framework/yii/YiiBase.php index 6384023..c43e856 100644 --- a/framework/yii/YiiBase.php +++ b/framework/yii/YiiBase.php @@ -93,7 +93,6 @@ class YiiBase public static $objectConfig = array(); private static $_imported = array(); // alias => class name or directory - private static $_logger; /** * @return string the version of Yii framework From 2d8da01c988fe7817fa20a2ea26b284272317036 Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Fri, 12 Jul 2013 07:36:00 -0400 Subject: [PATCH 11/16] import namespaces. --- apps/advanced/environments/dev/frontend/www/index.php | 2 +- apps/advanced/environments/dev/yii | 2 +- apps/advanced/environments/prod/frontend/www/index.php | 2 +- apps/advanced/environments/prod/yii | 2 +- apps/basic/www/index-test.php | 2 +- apps/basic/www/index.php | 2 +- apps/basic/yii | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/advanced/environments/dev/frontend/www/index.php b/apps/advanced/environments/dev/frontend/www/index.php index f7d974c..b1fc4c2 100644 --- a/apps/advanced/environments/dev/frontend/www/index.php +++ b/apps/advanced/environments/dev/frontend/www/index.php @@ -5,7 +5,7 @@ defined('YII_DEBUG') or define('YII_DEBUG', true); require(__DIR__ . '/../../vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/../../vendor/autoload.php'); -require(__DIR__ . '/../../vendor/composer/autoload_namespaces.php'); +Yii::importNamespaces(require(__DIR__ . '/../../vendor/composer/autoload_namespaces.php')); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../config/main.php'), diff --git a/apps/advanced/environments/dev/yii b/apps/advanced/environments/dev/yii index fce2955..b2c9288 100644 --- a/apps/advanced/environments/dev/yii +++ b/apps/advanced/environments/dev/yii @@ -15,7 +15,7 @@ defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); require(__DIR__ . '/vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/vendor/autoload.php'); -require(__DIR__ . '/vendor/composer/autoload_namespaces.php'); +Yii::importNamespaces(require(__DIR__ . '/vendor/composer/autoload_namespaces.php')); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/console/config/main.php'), diff --git a/apps/advanced/environments/prod/frontend/www/index.php b/apps/advanced/environments/prod/frontend/www/index.php index 640d581..b21ce0a 100644 --- a/apps/advanced/environments/prod/frontend/www/index.php +++ b/apps/advanced/environments/prod/frontend/www/index.php @@ -5,7 +5,7 @@ defined('YII_DEBUG') or define('YII_DEBUG', false); require(__DIR__ . '/../../vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/../../vendor/autoload.php'); -require(__DIR__ . '/../../vendor/composer/autoload_namespaces.php'); +Yii::importNamespaces(require(__DIR__ . '/../../vendor/composer/autoload_namespaces.php')); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/../config/main.php'), diff --git a/apps/advanced/environments/prod/yii b/apps/advanced/environments/prod/yii index 0115b33..9ce1630 100644 --- a/apps/advanced/environments/prod/yii +++ b/apps/advanced/environments/prod/yii @@ -15,7 +15,7 @@ defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); require(__DIR__ . '/vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/vendor/autoload.php'); -require(__DIR__ . '/vendor/composer/autoload_namespaces.php'); +Yii::importNamespaces(require(__DIR__ . '/vendor/composer/autoload_namespaces.php')); $config = yii\helpers\ArrayHelper::merge( require(__DIR__ . '/console/config/main.php'), diff --git a/apps/basic/www/index-test.php b/apps/basic/www/index-test.php index c744dc7..80d0953 100644 --- a/apps/basic/www/index-test.php +++ b/apps/basic/www/index-test.php @@ -10,7 +10,7 @@ defined('YII_ENV') or define('YII_ENV', 'test'); require_once(__DIR__ . '/../vendor/yiisoft/yii2/yii/Yii.php'); require_once(__DIR__ . '/../vendor/autoload.php'); -require(__DIR__ . '/../vendor/composer/autoload_namespaces.php'); +Yii::importNamespaces(require(__DIR__ . '/../vendor/composer/autoload_namespaces.php')); $config = require(__DIR__ . '/../config/web-test.php'); diff --git a/apps/basic/www/index.php b/apps/basic/www/index.php index fc78e6b..fb66386 100644 --- a/apps/basic/www/index.php +++ b/apps/basic/www/index.php @@ -6,7 +6,7 @@ defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/../vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/../vendor/autoload.php'); -require(__DIR__ . '/../vendor/composer/autoload_namespaces.php'); +Yii::importNamespaces(require(__DIR__ . '/../vendor/composer/autoload_namespaces.php')); $config = require(__DIR__ . '/../config/web.php'); diff --git a/apps/basic/yii b/apps/basic/yii index 5762bb7..73968c1 100755 --- a/apps/basic/yii +++ b/apps/basic/yii @@ -15,7 +15,7 @@ defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); require(__DIR__ . '/vendor/yiisoft/yii2/yii/Yii.php'); require(__DIR__ . '/vendor/autoload.php'); -require(__DIR__ . '/vendor/composer/autoload_namespaces.php'); +Yii::importNamespaces(require(__DIR__ . '/vendor/composer/autoload_namespaces.php')); $config = require(__DIR__ . '/config/console.php'); From 3123c46826fa2ea8dc60dcfc6a896954c1208063 Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Fri, 12 Jul 2013 13:03:37 -0400 Subject: [PATCH 12/16] handle array in importNamespaces. --- framework/yii/YiiBase.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/framework/yii/YiiBase.php b/framework/yii/YiiBase.php index 6384023..5e003fc 100644 --- a/framework/yii/YiiBase.php +++ b/framework/yii/YiiBase.php @@ -156,6 +156,9 @@ class YiiBase foreach ($namespaces as $name => $path) { if ($name !== '') { $name = trim(strtr($name, array('\\' => '/', '_' => '/')), '/'); + if (is_array($path)) { + $path = reset($path); + } static::setAlias('@' . $name, rtrim($path, '/\\') . '/' . $name); } } From 3387aadfe1334011e011139cf32f3509bcd2e42e Mon Sep 17 00:00:00 2001 From: Ilya Date: Sat, 13 Jul 2013 00:05:02 +0300 Subject: [PATCH 13/16] Update migration.md. Fix missed quotes --- docs/guide/migration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guide/migration.md b/docs/guide/migration.md index 1e720cb..66102fb 100644 --- a/docs/guide/migration.md +++ b/docs/guide/migration.md @@ -82,7 +82,7 @@ class m101129_185401_create_news_table extends \yii\db\Migration { public function up() { - $this->db->createCommand()->createTable('tbl_news, array( + $this->db->createCommand()->createTable('tbl_news', array( 'id' => 'pk', 'title' => 'string NOT NULL', 'content' => 'text', @@ -118,7 +118,7 @@ class m101129_185401_create_news_table extends \yii\db\Migration $transaction=$this->getDbConnection()->beginTransaction(); try { - $this->db->createCommand()->createTable('tbl_news, array( + $this->db->createCommand()->createTable('tbl_news', array( 'id' => 'pk', 'title' => 'string NOT NULL', 'content' => 'text', From b0c6785afc443d51babea2d8643b4c92fa8a0922 Mon Sep 17 00:00:00 2001 From: Philipp Frenzel Date: Sat, 13 Jul 2013 22:07:41 +0200 Subject: [PATCH 14/16] Add echo into docs for link pager I'm not sure if echo should be mentioned, but without the echo before the LinkPager::widget() the user would see nothing. --- framework/yii/data/Pagination.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/yii/data/Pagination.php b/framework/yii/data/Pagination.php index adc3730..9496795 100644 --- a/framework/yii/data/Pagination.php +++ b/framework/yii/data/Pagination.php @@ -48,7 +48,7 @@ use yii\base\Object; * } * * // display pagination - * LinkPager::widget(array( + * echo LinkPager::widget(array( * 'pagination' => $pages, * )); * ~~~ From 494fb8f69556ecfe8059c7d6351e872d171df663 Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Sat, 13 Jul 2013 17:52:32 -0400 Subject: [PATCH 15/16] minor doc improvement. --- docs/guide/active-record.md | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/guide/active-record.md b/docs/guide/active-record.md index 5d16806..f377c62 100644 --- a/docs/guide/active-record.md +++ b/docs/guide/active-record.md @@ -3,7 +3,7 @@ Active Record ActiveRecord implements the [Active Record design pattern](http://en.wikipedia.org/wiki/Active_record). The idea is that an ActiveRecord object is associated with a row in a database table so object properties are mapped -to colums of the corresponding database row. For example, a `Customer` object is associated with a row in the +to columns of the corresponding database row. For example, a `Customer` object is associated with a row in the `tbl_customer` table. Instead of writing raw SQL statements to access the data in the table, you can call intuitive methods available in the @@ -21,7 +21,7 @@ Declaring ActiveRecord Classes ------------------------------ To declare an ActiveRecord class you need to extend [[\yii\db\ActiveRecord]] and -implement `tableName` method like the following: +implement the `tableName` method like the following: ```php class Customer extends \yii\db\ActiveRecord @@ -39,10 +39,10 @@ class Customer extends \yii\db\ActiveRecord Connecting to Database ---------------------- -ActiveRecord relies on a [[Connection|DB connection]]. By default, it assumes that -there is an application component named `db` that gives the needed [[Connection]] -instance which serves as the DB connection. Usually this component is configured -via application configuration like the following: +ActiveRecord relies on a [[Connection|DB connection]] to perform the underlying DB operations. +By default, it assumes that there is an application component named `db` which gives the needed +[[Connection]] instance. Usually this component is configured via application configuration +like the following: ```php return array( @@ -52,26 +52,27 @@ return array( 'dsn' => 'mysql:host=localhost;dbname=testdb', 'username' => 'demo', 'password' => 'demo', - // turn on schema caching to improve performance + // turn on schema caching to improve performance in production mode // 'schemaCacheDuration' => 3600, ), ), ); ``` -Check [Database basics](database-basics.md) section in order to learn more on how to configure and use database -connections. +Please read the [Database basics](database-basics.md) section to learn more on how to configure +and use database connections. + Getting Data from Database -------------------------- -There are two ActiveRecord methods for getting data: +There are two ActiveRecord methods for getting data from database: - [[find()]] - [[findBySql()]] -They both return an [[ActiveQuery]] instance. Coupled with the various customization and query methods -provided by [[ActiveQuery]], ActiveRecord supports very flexible and powerful data retrieval approaches. +They both return an [[ActiveQuery]] instance. Coupled with various query methods provided +by [[ActiveQuery]], ActiveRecord supports very flexible and powerful data retrieval approaches. The followings are some examples, @@ -83,13 +84,13 @@ $customers = Customer::find() ->all(); // to return a single customer whose ID is 1: +$customer = Customer::find(1); + +// the above code is equivalent to the following: $customer = Customer::find() ->where(array('id' => 1)) ->one(); -// or use the following shortcut approach: -$customer = Customer::find(1); - // to retrieve customers using a raw SQL statement: $sql = 'SELECT * FROM tbl_customer'; $customers = Customer::findBySql($sql)->all(); From 4f70506c47e098792aeecc30f2bd3ac4a5ba6a13 Mon Sep 17 00:00:00 2001 From: Qiang Xue Date: Sat, 13 Jul 2013 21:59:24 -0400 Subject: [PATCH 16/16] minor doc fix. --- docs/guide/active-record.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/guide/active-record.md b/docs/guide/active-record.md index f377c62..20019be 100644 --- a/docs/guide/active-record.md +++ b/docs/guide/active-record.md @@ -133,10 +133,10 @@ $values = $customer->attributes; ``` -Persisting Data to Database ---------------------------- +Saving Data to Database +----------------------- -ActiveRecord provides the following methods to insert, update and delete data: +ActiveRecord provides the following methods to insert, update and delete data in the database: - [[save()]] - [[insert()]] @@ -207,9 +207,9 @@ a one-many relationship. For example, a customer has many orders. And the [[hasO method declares a many-one or one-one relationship. For example, an order has one customer. Both methods take two parameters: -- `$class`: the name of the class related models should use. If specified without - a namespace, the namespace will be taken from the declaring class. -- `$link`: the association between columns from two tables. This should be given as an array. +- `$class`: the name of the class of the related model(s). If specified without + a namespace, the namespace of the related model class will be taken from the declaring class. +- `$link`: the association between columns from the two tables. This should be given as an array. The keys of the array are the names of the columns from the table associated with `$class`, while the values of the array are the names of the columns from the declaring class. It is a good practice to define relationships based on table foreign keys. @@ -263,8 +263,8 @@ class Order extends \yii\db\ActiveRecord ``` [[ActiveRelation::via()]] method is similar to [[ActiveRelation::viaTable()]] except that -the first parameter of [[ActiveRelation::via()]] takes a relation name declared in the ActiveRecord class. -For example, the above `items` relation can be equivalently declared as follows: +the first parameter of [[ActiveRelation::via()]] takes a relation name declared in the ActiveRecord class +instead of the pivot table name. For example, the above `items` relation can be equivalently declared as follows: ```php class Order extends \yii\db\ActiveRecord @@ -315,7 +315,7 @@ How many SQL queries will be performed in the above code, assuming there are mor the database? 101! The first SQL query brings back 100 customers. Then for each customer, a SQL query is performed to bring back the customer's orders. -To solve the above performance problem, you can use the so-called *eager loading* by calling [[ActiveQuery::with()]]: +To solve the above performance problem, you can use the so-called *eager loading* approach by calling [[ActiveQuery::with()]]: ```php // SQL executed: SELECT * FROM tbl_customer LIMIT 100 @@ -473,7 +473,7 @@ TODO: FIXME: WIP, TBD, https://github.com/yiisoft/yii2/issues/226 Imagine situation where you have to save something related to the main model in [[beforeSave()]], [[afterSave()]], [[beforeDelete()]] and/or [[afterDelete()]] life cycle methods. Developer may come -to solution of overriding ActiveRecord [[save()]] method with database transaction wrapping or +to the solution of overriding ActiveRecord [[save()]] method with database transaction wrapping or even using transaction in controller action, which is strictly speaking doesn't seems to be a good practice (recall skinny-controller fat-model fundamental rule).