diff --git a/apps/advanced/backend/views/layouts/main.php b/apps/advanced/backend/views/layouts/main.php index 1c003e5..85a4d2b 100644 --- a/apps/advanced/backend/views/layouts/main.php +++ b/apps/advanced/backend/views/layouts/main.php @@ -15,8 +15,8 @@ AppAsset::register($this); <!DOCTYPE html> <html lang="en"> <head> - <meta charset="<?=Yii::$app->charset; ?>"/> - <title><?=Html::encode($this->title); ?></title> + <meta charset="<?= Yii::$app->charset ?>"/> + <title><?= Html::encode($this->title) ?></title> <?php $this->head(); ?> </head> <body> @@ -48,13 +48,13 @@ AppAsset::register($this); <?=Breadcrumbs::widget([ 'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], ]); ?> - <?=$content; ?> + <?= $content ?> </div> <footer class="footer"> <div class="container"> - <p class="pull-left">© My Company <?=date('Y'); ?></p> - <p class="pull-right"><?=Yii::powered(); ?></p> + <p class="pull-left">© My Company <?= date('Y') ?></p> + <p class="pull-right"><?= Yii::powered() ?></p> </div> </footer> diff --git a/apps/advanced/backend/views/site/error.php b/apps/advanced/backend/views/site/error.php index eef87f6..15a8eee 100644 --- a/apps/advanced/backend/views/site/error.php +++ b/apps/advanced/backend/views/site/error.php @@ -13,10 +13,10 @@ $this->title = $name; ?> <div class="site-error"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <div class="alert alert-danger"> - <?=nl2br(Html::encode($message)); ?> + <?= nl2br(Html::encode($message)) ?> </div> <p> diff --git a/apps/advanced/backend/views/site/login.php b/apps/advanced/backend/views/site/login.php index d52eaa1..65495bf 100644 --- a/apps/advanced/backend/views/site/login.php +++ b/apps/advanced/backend/views/site/login.php @@ -11,18 +11,18 @@ $this->title = 'Login'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-login"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <p>Please fill out the following fields to login:</p> <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'login-form']); ?> - <?=$form->field($model, 'username'); ?> - <?=$form->field($model, 'password')->passwordInput(); ?> - <?=$form->field($model, 'rememberMe')->checkbox(); ?> + <?= $form->field($model, 'username') ?> + <?= $form->field($model, 'password')->passwordInput() ?> + <?= $form->field($model, 'rememberMe')->checkbox() ?> <div class="form-group"> - <?=Html::submitButton('Login', ['class' => 'btn btn-primary']); ?> + <?= Html::submitButton('Login', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div> diff --git a/apps/advanced/frontend/views/layouts/main.php b/apps/advanced/frontend/views/layouts/main.php index 0b36edc..4f1510e 100644 --- a/apps/advanced/frontend/views/layouts/main.php +++ b/apps/advanced/frontend/views/layouts/main.php @@ -16,8 +16,8 @@ AppAsset::register($this); <!DOCTYPE html> <html lang="en"> <head> - <meta charset="<?=Yii::$app->charset; ?>"/> - <title><?=Html::encode($this->title); ?></title> + <meta charset="<?= Yii::$app->charset ?>"/> + <title><?= Html::encode($this->title) ?></title> <?php $this->head(); ?> </head> <body> @@ -53,13 +53,13 @@ AppAsset::register($this); 'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], ]); ?> <?=Alert::widget()?> - <?=$content; ?> + <?= $content ?> </div> <footer class="footer"> <div class="container"> - <p class="pull-left">© My Company <?=date('Y'); ?></p> - <p class="pull-right"><?=Yii::powered(); ?></p> + <p class="pull-left">© My Company <?= date('Y') ?></p> + <p class="pull-right"><?= Yii::powered() ?></p> </div> </footer> diff --git a/apps/advanced/frontend/views/site/about.php b/apps/advanced/frontend/views/site/about.php index 2084648..32b84eb 100644 --- a/apps/advanced/frontend/views/site/about.php +++ b/apps/advanced/frontend/views/site/about.php @@ -8,9 +8,9 @@ $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-about"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <p>This is the About page. You may modify the following file to customize its content:</p> - <code><?=__FILE__; ?></code> + <code><?= __FILE__ ?></code> </div> diff --git a/apps/advanced/frontend/views/site/contact.php b/apps/advanced/frontend/views/site/contact.php index 012c36d..97580ca 100644 --- a/apps/advanced/frontend/views/site/contact.php +++ b/apps/advanced/frontend/views/site/contact.php @@ -12,7 +12,7 @@ $this->title = 'Contact'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-contact"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <p> If you have business inquiries or other questions, please fill out the following form to contact us. Thank you. @@ -21,16 +21,16 @@ $this->params['breadcrumbs'][] = $this->title; <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'contact-form']); ?> - <?=$form->field($model, 'name'); ?> - <?=$form->field($model, 'email'); ?> - <?=$form->field($model, 'subject'); ?> - <?=$form->field($model, 'body')->textArea(['rows' => 6]); ?> + <?= $form->field($model, 'name') ?> + <?= $form->field($model, 'email') ?> + <?= $form->field($model, 'subject') ?> + <?= $form->field($model, 'body')->textArea(['rows' => 6]) ?> <?=$form->field($model, 'verifyCode')->widget(Captcha::className(), [ 'options' => ['class' => 'form-control'], 'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>', ]); ?> <div class="form-group"> - <?=Html::submitButton('Submit', ['class' => 'btn btn-primary']); ?> + <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div> diff --git a/apps/advanced/frontend/views/site/error.php b/apps/advanced/frontend/views/site/error.php index eef87f6..15a8eee 100644 --- a/apps/advanced/frontend/views/site/error.php +++ b/apps/advanced/frontend/views/site/error.php @@ -13,10 +13,10 @@ $this->title = $name; ?> <div class="site-error"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <div class="alert alert-danger"> - <?=nl2br(Html::encode($message)); ?> + <?= nl2br(Html::encode($message)) ?> </div> <p> diff --git a/apps/advanced/frontend/views/site/login.php b/apps/advanced/frontend/views/site/login.php index df758a8..3069f90 100644 --- a/apps/advanced/frontend/views/site/login.php +++ b/apps/advanced/frontend/views/site/login.php @@ -11,21 +11,21 @@ $this->title = 'Login'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-login"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <p>Please fill out the following fields to login:</p> <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'login-form']); ?> - <?=$form->field($model, 'username'); ?> - <?=$form->field($model, 'password')->passwordInput(); ?> - <?=$form->field($model, 'rememberMe')->checkbox(); ?> + <?= $form->field($model, 'username') ?> + <?= $form->field($model, 'password')->passwordInput() ?> + <?= $form->field($model, 'rememberMe')->checkbox() ?> <div style="color:#999;margin:1em 0"> If you forgot your password you can <?=Html::a('reset it', ['site/request-password-reset'])?>. </div> <div class="form-group"> - <?=Html::submitButton('Login', ['class' => 'btn btn-primary']); ?> + <?= Html::submitButton('Login', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div> diff --git a/apps/advanced/frontend/views/site/requestPasswordResetToken.php b/apps/advanced/frontend/views/site/requestPasswordResetToken.php index f906b72..88d23be 100644 --- a/apps/advanced/frontend/views/site/requestPasswordResetToken.php +++ b/apps/advanced/frontend/views/site/requestPasswordResetToken.php @@ -11,16 +11,16 @@ $this->title = 'Request password reset'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-request-password-reset"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <p>Please fill out your email. A link to reset password will be sent there.</p> <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'request-password-reset-form']); ?> - <?=$form->field($model, 'email'); ?> + <?= $form->field($model, 'email') ?> <div class="form-group"> - <?=Html::submitButton('Send', ['class' => 'btn btn-primary']); ?> + <?= Html::submitButton('Send', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div> diff --git a/apps/advanced/frontend/views/site/resetPassword.php b/apps/advanced/frontend/views/site/resetPassword.php index 40c1106..dc5beba 100644 --- a/apps/advanced/frontend/views/site/resetPassword.php +++ b/apps/advanced/frontend/views/site/resetPassword.php @@ -11,16 +11,16 @@ $this->title = 'Reset password'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-reset-password"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <p>Please choose your new password:</p> <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'reset-password-form']); ?> - <?=$form->field($model, 'password')->passwordInput(); ?> + <?= $form->field($model, 'password')->passwordInput() ?> <div class="form-group"> - <?=Html::submitButton('Save', ['class' => 'btn btn-primary']); ?> + <?= Html::submitButton('Save', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div> diff --git a/apps/advanced/frontend/views/site/signup.php b/apps/advanced/frontend/views/site/signup.php index 82bc78c..bfebceb 100644 --- a/apps/advanced/frontend/views/site/signup.php +++ b/apps/advanced/frontend/views/site/signup.php @@ -11,18 +11,18 @@ $this->title = 'Signup'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-signup"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <p>Please fill out the following fields to signup:</p> <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'form-signup']); ?> - <?=$form->field($model, 'username'); ?> - <?=$form->field($model, 'email'); ?> - <?=$form->field($model, 'password')->passwordInput(); ?> + <?= $form->field($model, 'username') ?> + <?= $form->field($model, 'email') ?> + <?= $form->field($model, 'password')->passwordInput() ?> <div class="form-group"> - <?=Html::submitButton('Signup', ['class' => 'btn btn-primary']); ?> + <?= Html::submitButton('Signup', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div> diff --git a/apps/basic/tests/acceptance/WebGuy.php b/apps/basic/tests/acceptance/WebGuy.php index 397761c..e6cc370 100644 --- a/apps/basic/tests/acceptance/WebGuy.php +++ b/apps/basic/tests/acceptance/WebGuy.php @@ -36,7 +36,7 @@ class WebGuy extends \Codeception\AbstractGuy * * ``` php * <?php - * $I->submitForm('#login', array('login' => 'davert', 'password' => '123456')); + * $I->submitForm('#login', ['login' => 'davert', 'password' => '123456']); * * ``` * @@ -55,7 +55,7 @@ class WebGuy extends \Codeception\AbstractGuy * * ``` php * <?php - * $I->submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true))); + * $I->submitForm('#userForm', ['user' => ['login' => 'Davert', 'password' => '123456', 'agree' => true]]); * * ``` * Note, that pricing plan will be set to Paid, as it's selected on page. @@ -89,8 +89,8 @@ class WebGuy extends \Codeception\AbstractGuy * * ``` php * <?php - * $I->sendAjaxPostRequest('/updateSettings', array('notifications' => true); // POST - * $I->sendAjaxGetRequest('/updateSettings', array('notifications' => true); // GET + * $I->sendAjaxPostRequest('/updateSettings', ['notifications' => true]; // POST + * $I->sendAjaxGetRequest('/updateSettings', ['notifications' => true]; // GET * * ``` * @@ -202,12 +202,12 @@ class WebGuy extends \Codeception\AbstractGuy * // from the official Guzzle manual * $I->amGoingTo('Sign all requests with OAuth'); * $I->executeInGuzzle(function (\Guzzle\Http\Client $client) { - * $client->addSubscriber(new Guzzle\Plugin\Oauth\OauthPlugin(array( + * $client->addSubscriber(new Guzzle\Plugin\Oauth\OauthPlugin([ * 'consumer_key' => '***', * 'consumer_secret' => '***', * 'token' => '***', * 'token_secret' => '***' - * ))); + * ])); * }); * ?> * ``` diff --git a/apps/basic/tests/functional/TestGuy.php b/apps/basic/tests/functional/TestGuy.php index 767d564..58baf56 100644 --- a/apps/basic/tests/functional/TestGuy.php +++ b/apps/basic/tests/functional/TestGuy.php @@ -832,7 +832,7 @@ class TestGuy extends \Codeception\AbstractGuy * * ``` php * <?php - * $I->submitForm('#login', array('login' => 'davert', 'password' => '123456')); + * $I->submitForm('#login', ['login' => 'davert', 'password' => '123456']); * * ``` * @@ -851,7 +851,7 @@ class TestGuy extends \Codeception\AbstractGuy * * ``` php * <?php - * $I->submitForm('#userForm', array('user' => array('login' => 'Davert', 'password' => '123456', 'agree' => true))); + * $I->submitForm('#userForm', ['user' => ['login' => 'Davert', 'password' => '123456', 'agree' => true]]); * * ``` * Note, that pricing plan will be set to Paid, as it's selected on page. @@ -1042,8 +1042,8 @@ class TestGuy extends \Codeception\AbstractGuy * * ``` php * <?php - * $I->sendAjaxPostRequest('/updateSettings', array('notifications' => true); // POST - * $I->sendAjaxGetRequest('/updateSettings', array('notifications' => true); // GET + * $I->sendAjaxPostRequest('/updateSettings', ['notifications' => true]; // POST + * $I->sendAjaxGetRequest('/updateSettings', ['notifications' => true]; // GET * * ``` * diff --git a/apps/basic/views/layouts/main.php b/apps/basic/views/layouts/main.php index 3ffbf0f..88066de 100644 --- a/apps/basic/views/layouts/main.php +++ b/apps/basic/views/layouts/main.php @@ -14,8 +14,8 @@ app\config\AppAsset::register($this); <!DOCTYPE html> <html lang="en"> <head> - <meta charset="<?=Yii::$app->charset; ?>"/> - <title><?=Html::encode($this->title); ?></title> + <meta charset="<?= Yii::$app->charset ?>"/> + <title><?= Html::encode($this->title) ?></title> <?php $this->head(); ?> </head> <body> @@ -48,13 +48,13 @@ app\config\AppAsset::register($this); <?=Breadcrumbs::widget([ 'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], ]); ?> - <?=$content; ?> + <?= $content ?> </div> <footer class="footer"> <div class="container"> - <p class="pull-left">© My Company <?=date('Y'); ?></p> - <p class="pull-right"><?=Yii::powered(); ?></p> + <p class="pull-left">© My Company <?= date('Y') ?></p> + <p class="pull-right"><?= Yii::powered() ?></p> </div> </footer> diff --git a/apps/basic/views/site/about.php b/apps/basic/views/site/about.php index e4070a8..5010642 100644 --- a/apps/basic/views/site/about.php +++ b/apps/basic/views/site/about.php @@ -8,11 +8,11 @@ $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-about"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <p> This is the About page. You may modify the following file to customize its content: </p> - <code><?=__FILE__; ?></code> + <code><?= __FILE__ ?></code> </div> diff --git a/apps/basic/views/site/contact.php b/apps/basic/views/site/contact.php index 450e06b..66711a5 100644 --- a/apps/basic/views/site/contact.php +++ b/apps/basic/views/site/contact.php @@ -12,7 +12,7 @@ $this->title = 'Contact'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-contact"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <?php if (Yii::$app->session->hasFlash('contactFormSubmitted')): ?> @@ -29,16 +29,16 @@ $this->params['breadcrumbs'][] = $this->title; <div class="row"> <div class="col-lg-5"> <?php $form = ActiveForm::begin(['id' => 'contact-form']); ?> - <?=$form->field($model, 'name'); ?> - <?=$form->field($model, 'email'); ?> - <?=$form->field($model, 'subject'); ?> - <?=$form->field($model, 'body')->textArea(['rows' => 6]); ?> + <?= $form->field($model, 'name') ?> + <?= $form->field($model, 'email') ?> + <?= $form->field($model, 'subject') ?> + <?= $form->field($model, 'body')->textArea(['rows' => 6]) ?> <?=$form->field($model, 'verifyCode')->widget(Captcha::className(), [ 'options' => ['class' => 'form-control'], 'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>', ]); ?> <div class="form-group"> - <?=Html::submitButton('Submit', ['class' => 'btn btn-primary']); ?> + <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?> </div> diff --git a/apps/basic/views/site/error.php b/apps/basic/views/site/error.php index eef87f6..15a8eee 100644 --- a/apps/basic/views/site/error.php +++ b/apps/basic/views/site/error.php @@ -13,10 +13,10 @@ $this->title = $name; ?> <div class="site-error"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <div class="alert alert-danger"> - <?=nl2br(Html::encode($message)); ?> + <?= nl2br(Html::encode($message)) ?> </div> <p> diff --git a/apps/basic/views/site/login.php b/apps/basic/views/site/login.php index 34936af..62b4398 100644 --- a/apps/basic/views/site/login.php +++ b/apps/basic/views/site/login.php @@ -11,7 +11,7 @@ $this->title = 'Login'; $this->params['breadcrumbs'][] = $this->title; ?> <div class="site-login"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> <p>Please fill out the following fields to login:</p> @@ -24,9 +24,9 @@ $this->params['breadcrumbs'][] = $this->title; ], ]); ?> - <?=$form->field($model, 'username'); ?> + <?= $form->field($model, 'username') ?> - <?=$form->field($model, 'password')->passwordInput(); ?> + <?= $form->field($model, 'password')->passwordInput() ?> <?=$form->field($model, 'rememberMe', [ 'template' => "<div class=\"col-lg-offset-1 col-lg-3\">{input}</div>\n<div class=\"col-lg-8\">{error}</div>", @@ -34,7 +34,7 @@ $this->params['breadcrumbs'][] = $this->title; <div class="form-group"> <div class="col-lg-offset-1 col-lg-11"> - <?=Html::submitButton('Login', ['class' => 'btn btn-primary']); ?> + <?= Html::submitButton('Login', ['class' => 'btn btn-primary']) ?> </div> </div> diff --git a/docs/api/db/ActiveRecord.md b/docs/api/db/ActiveRecord.md index 0120998..70f171b 100644 --- a/docs/api/db/ActiveRecord.md +++ b/docs/api/db/ActiveRecord.md @@ -175,7 +175,7 @@ class Customer extends \yii\db\ActiveRecord { public function getOrders() { - return $this->hasMany('Order', ['customer_id' => 'id']); + return $this->hasMany(Order::className(), ['customer_id' => 'id']); } } @@ -183,7 +183,7 @@ class Order extends \yii\db\ActiveRecord { public function getCustomer() { - return $this->hasOne('Customer', ['id' => 'customer_id']); + return $this->hasOne(Customer::className(), ['id' => 'customer_id']); } } ~~~ @@ -194,8 +194,7 @@ 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. +- `$class`: the name of the class that the related models should use. - `$link`: the association between columns from 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. @@ -223,7 +222,7 @@ class Customer extends \yii\db\ActiveRecord { public function getBigOrders($threshold = 100) { - return $this->hasMany('Order', ['customer_id' => 'id']) + return $this->hasMany(Order::className(), ['customer_id' => 'id']) ->where('subtotal > :threshold', [':threshold' => $threshold]) ->orderBy('id'); } @@ -244,7 +243,7 @@ class Order extends \yii\db\ActiveRecord { public function getItems() { - return $this->hasMany('Item', ['id' => 'item_id']) + return $this->hasMany(Item::className(), ['id' => 'item_id']) ->viaTable('tbl_order_item', ['order_id' => 'id']); } } @@ -259,12 +258,12 @@ class Order extends \yii\db\ActiveRecord { public function getOrderItems() { - return $this->hasMany('OrderItem', ['order_id' => 'id']); + return $this->hasMany(OrderItem::className(), ['order_id' => 'id']); } public function getItems() { - return $this->hasMany('Item', ['id' => 'item_id']) + return $this->hasMany(Item::className(), ['id' => 'item_id']) ->via('orderItems'); } } diff --git a/docs/guide/active-record.md b/docs/guide/active-record.md index 3de4a01..90826b0 100644 --- a/docs/guide/active-record.md +++ b/docs/guide/active-record.md @@ -202,7 +202,7 @@ class Customer extends \yii\db\ActiveRecord { public function getOrders() { - return $this->hasMany('Order', ['customer_id' => 'id']); + return $this->hasMany(Order::className(), ['customer_id' => 'id']); } } @@ -210,7 +210,7 @@ class Order extends \yii\db\ActiveRecord { public function getCustomer() { - return $this->hasOne('Customer', ['id' => 'customer_id']); + return $this->hasOne(Customer::className(), ['id' => 'customer_id']); } } ``` @@ -257,7 +257,7 @@ class Customer extends \yii\db\ActiveRecord { public function getBigOrders($threshold = 100) { - return $this->hasMany('Order', ['customer_id' => 'id']) + return $this->hasMany(Order::className(), ['customer_id' => 'id']) ->where('subtotal > :threshold', [':threshold' => $threshold]) ->orderBy('id'); } @@ -291,7 +291,7 @@ class Order extends \yii\db\ActiveRecord { public function getItems() { - return $this->hasMany('Item', ['id' => 'item_id']) + return $this->hasMany(Item::className(), ['id' => 'item_id']) ->viaTable('tbl_order_item', ['order_id' => 'id']); } } @@ -306,12 +306,12 @@ class Order extends \yii\db\ActiveRecord { public function getOrderItems() { - return $this->hasMany('OrderItem', ['order_id' => 'id']); + return $this->hasMany(OrderItem::className(), ['order_id' => 'id']); } public function getItems() { - return $this->hasMany('Item', ['id' => 'item_id']) + return $this->hasMany(Item::className(), ['id' => 'item_id']) ->via('orderItems'); } } @@ -517,7 +517,7 @@ class Feature extends \yii\db\ActiveRecord public function getProduct() { - return $this->hasOne('Product', ['product_id' => 'id']); + return $this->hasOne(Product::className(), ['product_id' => 'id']); } } @@ -527,7 +527,7 @@ class Product extends \yii\db\ActiveRecord public function getFeatures() { - return $this->hasMany('Feature', ['id' => 'product_id']); + return $this->hasMany(Feature::className(), ['id' => 'product_id']); } } ``` @@ -566,7 +566,7 @@ class Feature extends \yii\db\ActiveRecord public function getProduct() { - return $this->hasOne('Product', ['product_id' => 'id']); + return $this->hasOne(Product::className(), ['product_id' => 'id']); } public function scenarios() @@ -586,7 +586,7 @@ class Product extends \yii\db\ActiveRecord public function getFeatures() { - return $this->hasMany('Feature', ['id' => 'product_id']); + return $this->hasMany(Feature::className(), ['id' => 'product_id']); } public function scenarios() diff --git a/docs/guide/i18n.md b/docs/guide/i18n.md index e44dc6b..de1c80d 100644 --- a/docs/guide/i18n.md +++ b/docs/guide/i18n.md @@ -205,7 +205,7 @@ Will produce "You are 42nd visitor here!". ```php -echo \Yii::t('app', 'You are here for {n, duration} already!', ['n' => 42]); +echo \Yii::t('app', 'You are here for {n, duration} already!', ['n' => 47]); ``` Will produce "You are here for 47 sec. already!". diff --git a/docs/guide/installation.md b/docs/guide/installation.md index 8ec3619..11e6a5e 100644 --- a/docs/guide/installation.md +++ b/docs/guide/installation.md @@ -83,57 +83,28 @@ Yii to catch all requests to nonexistent files, which allows us to have nice-loo ~~~ server { - set $host_path "/www/mysite"; - access_log /www/mysite/log/access.log main; - - server_name mysite; - root $host_path/htdocs; - set $yii_bootstrap "index.php"; - charset utf-8; - location / { - index index.html $yii_bootstrap; - try_files $uri $uri/ /$yii_bootstrap?$args; - } + listen 80; + server_name mysite.local; + root /path/to/project/webroot/directory - location ~ ^/(protected|framework|themes/\w+/views) { - deny all; - } + access_log /path/to/project/log/access.log main; - #avoid processing of calls to unexisting static files by yii - location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { - try_files $uri =404; + location / { + try_files $uri $uri/ /index.php?$args; # Redirect everything that isn't real file to index.php including arguments. } - # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 - # - location ~ \.php { - fastcgi_split_path_info ^(.+\.php)(.*)$; - - #let yii catch the calls to unexising PHP files - set $fsn /$yii_bootstrap; - if (-f $document_root$fastcgi_script_name){ - set $fsn $fastcgi_script_name; - } - - #for php-cgi + location ~ \.php$ { + include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; - #for php-fpm #fastcgi_pass unix:/var/run/php5-fpm.sock; - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root$fsn; - - #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_param PATH_TRANSLATED $document_root$fsn; } - location ~ /\.ht { - deny all; + location ~ /\.(ht|svn|git) { + deny all; } } ~~~ -Using this configuration you can set `cgi.fix_pathinfo=0` in php.ini to avoid -many unnecessary system `stat()` calls. +Make sure to set `cgi.fix_pathinfo=0` in php.ini to avoid many unnecessary system `stat()` calls. diff --git a/docs/guide/upgrade-from-v1.md b/docs/guide/upgrade-from-v1.md index 713f967..f04e849 100644 --- a/docs/guide/upgrade-from-v1.md +++ b/docs/guide/upgrade-from-v1.md @@ -340,10 +340,10 @@ It is represented as an `ActiveField` object. Using fields, you can build a form ```php <?php $form = yii\widgets\ActiveForm::begin(); ?> - <?=$form->field($model, 'username'); ?> - <?=$form->field($model, 'password')->passwordInput(); ?> + <?= $form->field($model, 'username') ?> + <?= $form->field($model, 'password')->passwordInput() ?> <div class="form-group"> - <?=Html::submitButton('Login'); ?> + <?= Html::submitButton('Login') ?> </div> <?php yii\widgets\ActiveForm::end(); ?> ``` diff --git a/docs/guide/url.md b/docs/guide/url.md index 46bb177..a82f741 100644 --- a/docs/guide/url.md +++ b/docs/guide/url.md @@ -1,3 +1,116 @@ URL Management ============== +The concept of URL management in Yii fairly simple. The idea is that application uses internal routes and parameters +everywhere. Framework takes care of translating routes into URLs and back according to URL manager configuration. +This approach allows you to adjust URLs in a single config file without touching application code. + +Internal route +-------------- + +Internal routes and parameters are what you're dealing with when implementing an application using Yii. + +Each controller and its action has a corresponding internal route such as `site/index`. Here `site` is referred to as +controller ID while `index` is referred to as action ID. If controller belongs to a module, internal route is prefixed +with the module ID such as `blog/post/index` for a blog module. + +Creating URLs +------------- + +As was already mentioned, the most important rule is to always use URL manager to create URLs. Url manages is an +application component with `urlManager` id that is accessible both from web and console applications via +`\Yii::$app->urlManager` and has two following URL creation methods available: + +- createUrl($route, $params = []) +- createAbsoluteUrl($route, $params = []) + +First one creates URL relative to the application root while the second one creates URL prefixed with protocol and +hostname. The former is suitable for internal application URLs while the latter is used when you need to create rules +for outside the website. For example, when sending emails or generating RSS feed. + +Some examples: + +```php +echo \Yii::$app->urlManager->createUrl('site/page', ['id' => 'about']); +echo \Yii::$app->urlManager->createAbsoluteUrl('blog/post/index'); +``` + +Inside web application controller you can use its own `createUrl` shortcut method in the following forms: + +```php +echo $this->createUrl(''); // currently active route +echo $this->createUrl('view', ['id' => 'contact']); // same controller, different action +echo $this->createUrl('post/index'); // same module, different controller and action +echo $this->createUrl('/site/index'); // absolute route no matter which controller we're in +``` + +> **Tip**: In order to generate URL with a hashtag, for example `/index.php?r=site/page&id=100#title`, you need to + specify parameter named `#` using `$this->createUrl('post/read', ['id' => 100, '#' => 'title'])`. + +Customizing URLs +---------------- + +By default Yii uses a query string format URLs such as `/index.php?r=news/view&id=100`. In order to make URLs +human-friendly you need to configure `urlManager` component like the following: + +```php +<?php +return [ + // ... + 'components' => [ + 'urlManager' => [ + 'enablePrettyUrl' => true, + 'showScriptName' => false, + ], + ], +]; +``` + +Note that + +### Named parameters + +### Handling subdomains + +### Faking URL Suffix + +```php +<?php +return [ + // ... + 'components' => [ + 'urlManager' => [ + 'suffix' => '.html', + ], + ], +]; +``` + +### Handling REST + + +URL parsing +----------- + +Complimentary to creating URLs Yii is handling transforming custom URLs back into internal route and parameters. + +### Strict URL parsing + +By default if there's no custom rule for URL and URL matches default format such as `/site/page` Yii tries to run a +corresponding controller's action. This behavior could be disabled so if there's no custom rule match, a 404 not found +error will be produced immediately. + +```php +<?php +return [ + // ... + 'components' => [ + 'urlManager' => [ + 'enableStrictParsing' => true, + ], + ], +]; +``` + +Creating your own rule classes +------------------------------ diff --git a/docs/guide/view.md b/docs/guide/view.md index 27a90ae..98e0140 100644 --- a/docs/guide/view.md +++ b/docs/guide/view.md @@ -76,7 +76,7 @@ use yii\helpers\Html; ?> <div class="username"> - <?=Html::encode($user->name); ?> + <?= Html::encode($user->name) ?> </div> ``` @@ -97,7 +97,7 @@ use yii\helpers\HtmlPurifier; ?> <div class="post"> - <?=HtmlPurifier::process($post->text); ?> + <?= HtmlPurifier::process($post->text) ?> </div> ``` @@ -256,16 +256,16 @@ use yii\helpers\Html; ?> <?php $this->beginPage(); ?> <!DOCTYPE html> -<html lang="<?=Yii::$app->charset; ?>"> +<html lang="<?= Yii::$app->charset ?>"> <head> - <meta charset="<?=Yii::$app->charset; ?>"/> - <title><?=Html::encode($this->title); ?></title> + <meta charset="<?= Yii::$app->charset ?>"/> + <title><?= Html::encode($this->title) ?></title> <?php $this->head(); ?> </head> <body> <?php $this->beginBody(); ?> <div class="container"> - <?=$content; ?> + <?= $content ?> </div> <footer class="footer">© 2013 me :)</footer> <?php $this->endBody(); ?> @@ -295,8 +295,8 @@ use yii\helpers\Html; ?> <div class="profile"> - <h2><?=Html::encode($username); ?></h2> - <p><?=Html::encode($tagline); ?></p> + <h2><?= Html::encode($username) ?></h2> + <p><?= Html::encode($tagline) ?></p> </div> ``` diff --git a/extensions/composer/yii/composer/Installer.php b/extensions/composer/yii/composer/Installer.php index 6fcfeff..8b7363c 100644 --- a/extensions/composer/yii/composer/Installer.php +++ b/extensions/composer/yii/composer/Installer.php @@ -31,7 +31,7 @@ class Installer extends LibraryInstaller */ public function supports($packageType) { - return $packageType === 'yii-extension'; + return $packageType === 'yii2-extension'; } /** @@ -65,7 +65,7 @@ class Installer extends LibraryInstaller protected function addPackage(PackageInterface $package) { $extension = [ - 'name' => $package->getPrettyName(), + 'name' => $package->getName(), 'version' => $package->getVersion(), ]; @@ -76,14 +76,14 @@ class Installer extends LibraryInstaller } $extensions = $this->loadExtensions(); - $extensions[$package->getUniqueName()] = $extension; + $extensions[$package->getName()] = $extension; $this->saveExtensions($extensions); } protected function removePackage(PackageInterface $package) { $packages = $this->loadExtensions(); - unset($packages[$package->getUniqueName()]); + unset($packages[$package->getName()]); $this->saveExtensions($packages); } diff --git a/extensions/composer/yii/composer/InstallerPlugin.php b/extensions/composer/yii/composer/InstallerPlugin.php index 519363d..0b8ce5f 100644 --- a/extensions/composer/yii/composer/InstallerPlugin.php +++ b/extensions/composer/yii/composer/InstallerPlugin.php @@ -28,7 +28,7 @@ class InstallerPlugin implements PluginInterface $composer->getInstallationManager()->addInstaller($installer); $file = rtrim($composer->getConfig()->get('vendor-dir'), '/') . '/yii-extensions.php'; if (!is_file($file)) { - file_put_contents($file, "<?php\nreturn array();\n"); + file_put_contents($file, "<?php\nreturn [];\n"); } } } diff --git a/extensions/jui/composer.json b/extensions/jui/composer.json index 9e97866..e7dab28 100644 --- a/extensions/jui/composer.json +++ b/extensions/jui/composer.json @@ -2,7 +2,7 @@ "name": "yiisoft/yii2-jui", "description": "The Jquery UI extension for the Yii framework", "keywords": ["yii", "Jquery UI", "renderer"], - "type": "yii-extension", + "type": "yii2-extension", "license": "BSD-3-Clause", "support": { "issues": "https://github.com/yiisoft/yii2/issues?state=open", diff --git a/extensions/mutex/composer.json b/extensions/mutex/composer.json index 56fdb7d..e0079ef 100644 --- a/extensions/mutex/composer.json +++ b/extensions/mutex/composer.json @@ -2,7 +2,7 @@ "name": "yiisoft/yii2-mutex", "description": "Mutual exclusion extension for the Yii framework", "keywords": ["yii", "mutex"], - "type": "yii-extension", + "type": "yii2-extension", "license": "BSD-3-Clause", "support": { "issues": "https://github.com/yiisoft/yii2/issues?state=open", diff --git a/extensions/smarty/composer.json b/extensions/smarty/composer.json index b2d89a8..90a154f 100644 --- a/extensions/smarty/composer.json +++ b/extensions/smarty/composer.json @@ -2,7 +2,7 @@ "name": "yiisoft/yii2-smarty", "description": "The Smarty integration for the Yii framework", "keywords": ["yii", "smarty", "renderer"], - "type": "yii-extension", + "type": "yii2-extension", "license": "BSD-3-Clause", "support": { "issues": "https://github.com/yiisoft/yii2/issues?state=open", @@ -13,7 +13,7 @@ }, "authors": [ { - "name": "Alenxader Makarov", + "name": "Alexander Makarov", "email": "sam@rmcreative.ru" } ], diff --git a/extensions/twig/composer.json b/extensions/twig/composer.json index 9ff0132..f67cbbd 100644 --- a/extensions/twig/composer.json +++ b/extensions/twig/composer.json @@ -2,7 +2,7 @@ "name": "yiisoft/yii2-twig", "description": "The Twig integration for the Yii framework", "keywords": ["yii", "twig", "renderer"], - "type": "yii-extension", + "type": "yii2-extension", "license": "BSD-3-Clause", "support": { "issues": "https://github.com/yiisoft/yii2/issues?state=open", @@ -13,7 +13,7 @@ }, "authors": [ { - "name": "Alenxader Makarov", + "name": "Alexander Makarov", "email": "sam@rmcreative.ru" } ], diff --git a/framework/yii/BaseYii.php b/framework/yii/BaseYii.php index 49499fb..ad93d42 100644 --- a/framework/yii/BaseYii.php +++ b/framework/yii/BaseYii.php @@ -335,8 +335,7 @@ class BaseYii include($classFile); - if (YII_DEBUG && !class_exists($className, false) && !interface_exists($className, false) && - (!function_exists('trait_exists') || !trait_exists($className, false))) { + if (YII_DEBUG && !class_exists($className, false) && !interface_exists($className, false) && !trait_exists($className, false)) { throw new UnknownClassException("Unable to find '$className' in file: $classFile"); } } diff --git a/framework/yii/base/Application.php b/framework/yii/base/Application.php index 2bd3455..27dc37d 100644 --- a/framework/yii/base/Application.php +++ b/framework/yii/base/Application.php @@ -54,6 +54,13 @@ abstract class Application extends Module * @event ActionEvent an event raised after executing a controller action. */ const EVENT_AFTER_ACTION = 'afterAction'; + + /** + * @var string the namespace that controller classes are in. If not set, + * it will use the "app\controllers" namespace. + */ + public $controllerNamespace = 'app\\controllers'; + /** * @var string the application name. */ @@ -121,7 +128,7 @@ abstract class Application extends Module * ] * ~~~ */ - public $extensions = array(); + public $extensions = []; /** * @var string Used to reserve memory for fatal error handler. @@ -137,18 +144,8 @@ abstract class Application extends Module public function __construct($config = []) { Yii::$app = $this; - if (!isset($config['id'])) { - throw new InvalidConfigException('The "id" configuration is required.'); - } - if (isset($config['basePath'])) { - $this->setBasePath($config['basePath']); - unset($config['basePath']); - } else { - throw new InvalidConfigException('The "basePath" configuration is required.'); - } $this->preInit($config); - $this->registerErrorHandlers(); $this->registerCoreComponents(); @@ -158,10 +155,23 @@ abstract class Application extends Module /** * Pre-initializes the application. * This method is called at the beginning of the application constructor. + * It initializes several important application properties. + * If you override this method, please make sure you call the parent implementation. * @param array $config the application configuration + * @throws InvalidConfigException if either [[id]] or [[basePath]] configuration is missing. */ public function preInit(&$config) { + if (!isset($config['id'])) { + throw new InvalidConfigException('The "id" configuration is required.'); + } + if (isset($config['basePath'])) { + $this->setBasePath($config['basePath']); + unset($config['basePath']); + } else { + throw new InvalidConfigException('The "basePath" configuration is required.'); + } + if (isset($config['vendorPath'])) { $this->setVendorPath($config['vendorPath']); unset($config['vendorPath']); @@ -176,6 +186,7 @@ abstract class Application extends Module // set "@runtime" $this->getRuntimePath(); } + if (isset($config['timeZone'])) { $this->setTimeZone($config['timeZone']); unset($config['timeZone']); @@ -185,6 +196,31 @@ abstract class Application extends Module } /** + * @inheritdoc + */ + public function init() + { + parent::init(); + $this->initExtensions($this->extensions); + } + + /** + * Initializes the extensions. + * @param array $extensions the extensions to be initialized. Please refer to [[extensions]] + * for the structure of the extension array. + */ + protected function initExtensions($extensions) + { + foreach ($extensions as $extension) { + if (isset($extension['bootstrap'])) { + /** @var Extension $class */ + $class = $extension['bootstrap']; + $class::init(); + } + } + } + + /** * Loads components that are declared in [[preload]]. * @throws InvalidConfigException if a component or module to be preloaded is unknown */ @@ -221,6 +257,18 @@ abstract class Application extends Module } /** + * Sets the root directory of the applicaition and the @app alias. + * This method can only be invoked at the beginning of the constructor. + * @param string $path the root directory of the application. + * @throws InvalidParamException if the directory does not exist. + */ + public function setBasePath($path) + { + parent::setBasePath($path); + Yii::setAlias('@app', $this->getBasePath()); + } + + /** * Runs the application. * This is the main entrance of an application. * @return integer the exit status (0 means normal, non-zero values mean abnormal) diff --git a/framework/yii/base/Extension.php b/framework/yii/base/Extension.php index dac9552..c25a043 100644 --- a/framework/yii/base/Extension.php +++ b/framework/yii/base/Extension.php @@ -8,11 +8,21 @@ namespace yii\base; /** + * Extension is the base class that may be extended by individual extensions. + * + * Extension serves as the bootstrap class for extensions. When an extension + * is installed via composer, the [[init()]] method of its Extension class (if any) + * will be invoked during the application initialization stage. + * * @author Qiang Xue <qiang.xue@gmail.com> * @since 2.0 */ class Extension { + /** + * Initializes the extension. + * This method is invoked at the end of [[Application::init()]]. + */ public static function init() { } diff --git a/framework/yii/base/Module.php b/framework/yii/base/Module.php index ee3949b..fefdf1d 100644 --- a/framework/yii/base/Module.php +++ b/framework/yii/base/Module.php @@ -83,7 +83,6 @@ abstract class Module extends Component * it will use the "controllers" sub-namespace under the namespace of this module. * For example, if the namespace of this module is "foo\bar", then the default * controller namespace would be "foo\bar\controllers". - * If the module is an application, it will default to "app\controllers". */ public $controllerNamespace; /** @@ -167,22 +166,20 @@ abstract class Module extends Component /** * Initializes the module. * This method is called after the module is created and initialized with property values - * given in configuration. The default implement will create a path alias using the module [[id]] + * given in configuration. The default implementation will create a path alias using the module [[id]] * and then call [[preloadComponents()]] to load components that are declared in [[preload]]. + * + * If you override this method, please make sure you call the parent implementation. */ public function init() { - $this->preloadComponents(); if ($this->controllerNamespace === null) { - if ($this instanceof Application) { - $this->controllerNamespace = 'app\\controllers'; - } else { - $class = get_class($this); - if (($pos = strrpos($class, '\\')) !== false) { - $this->controllerNamespace = substr($class, 0, $pos) . '\\controllers'; - } + $class = get_class($this); + if (($pos = strrpos($class, '\\')) !== false) { + $this->controllerNamespace = substr($class, 0, $pos) . '\\controllers'; } } + $this->preloadComponents(); } /** @@ -221,9 +218,6 @@ abstract class Module extends Component $p = realpath($path); if ($p !== false && is_dir($p)) { $this->_basePath = $p; - if ($this instanceof Application) { - Yii::setAlias('@app', $p); - } } else { throw new InvalidParamException("The directory does not exist: $path"); } diff --git a/framework/yii/base/View.php b/framework/yii/base/View.php index 28e7b71..68b1094 100644 --- a/framework/yii/base/View.php +++ b/framework/yii/base/View.php @@ -540,7 +540,7 @@ class View extends Component /** * Registers all files provided by an asset bundle including depending bundles files. - * Removes a bundle from [[assetBundles]] once registered. + * Removes a bundle from [[assetBundles]] once files are registered. * @param string $name name of the bundle to register */ private function registerAssetFiles($name) @@ -552,7 +552,7 @@ class View extends Component foreach($bundle->depends as $dep) { $this->registerAssetFiles($dep); } - $bundle->registerAssets($this); + $bundle->registerAssetFiles($this); unset($this->assetBundles[$name]); } diff --git a/framework/yii/db/ActiveRecord.php b/framework/yii/db/ActiveRecord.php index 3f158cf..806a6c1 100644 --- a/framework/yii/db/ActiveRecord.php +++ b/framework/yii/db/ActiveRecord.php @@ -456,7 +456,7 @@ class ActiveRecord extends Model * ~~~ * public function getCountry() * { - * return $this->hasOne('Country', ['id' => 'country_id']); + * return $this->hasOne(Country::className(), ['id' => 'country_id']); * } * ~~~ * @@ -475,7 +475,7 @@ class ActiveRecord extends Model public function hasOne($class, $link) { return new ActiveRelation([ - 'modelClass' => $this->getNamespacedClass($class), + 'modelClass' => $class, 'primaryModel' => $this, 'link' => $link, 'multiple' => false, @@ -496,7 +496,7 @@ class ActiveRecord extends Model * ~~~ * public function getOrders() * { - * return $this->hasMany('Order', ['customer_id' => 'id']); + * return $this->hasMany(Order::className(), ['customer_id' => 'id']); * } * ~~~ * @@ -513,7 +513,7 @@ class ActiveRecord extends Model public function hasMany($class, $link) { return new ActiveRelation([ - 'modelClass' => $this->getNamespacedClass($class), + 'modelClass' => $class, 'primaryModel' => $this, 'link' => $link, 'multiple' => true, @@ -1439,24 +1439,6 @@ class ActiveRecord extends Model } /** - * Changes the given class name into a namespaced one. - * If the given class name is already namespaced, no change will be made. - * Otherwise, the class name will be changed to use the same namespace as - * the current AR class. - * @param string $class the class name to be namespaced - * @return string the namespaced class name - */ - protected static function getNamespacedClass($class) - { - if (strpos($class, '\\') === false) { - $reflector = new \ReflectionClass(static::className()); - return $reflector->getNamespaceName() . '\\' . $class; - } else { - return $class; - } - } - - /** * @param array $link * @param ActiveRecord $foreignModel * @param ActiveRecord $primaryModel diff --git a/framework/yii/debug/views/default/index.php b/framework/yii/debug/views/default/index.php index 325267d..c01230c 100644 --- a/framework/yii/debug/views/default/index.php +++ b/framework/yii/debug/views/default/index.php @@ -32,11 +32,11 @@ $this->title = 'Yii Debugger'; <tbody> <?php foreach ($manifest as $tag => $data): ?> <tr> - <td><?=Html::a($tag, ['view', 'tag' => $tag]); ?></td> - <td><?=date('Y-m-d h:i:sa', $data['time']); ?></td> - <td><?=$data['ip']; ?></td> - <td><?=$data['method']; ?></td> - <td><?=$data['url']; ?></td> + <td><?= Html::a($tag, ['view', 'tag' => $tag]) ?></td> + <td><?= date('Y-m-d h:i:sa', $data['time']) ?></td> + <td><?= $data['ip'] ?></td> + <td><?= $data['method'] ?></td> + <td><?= $data['url'] ?></td> </tr> <?php endforeach; ?> </tbody> diff --git a/framework/yii/debug/views/default/toolbar.php b/framework/yii/debug/views/default/toolbar.php index 40d33cf..bc76a67 100644 --- a/framework/yii/debug/views/default/toolbar.php +++ b/framework/yii/debug/views/default/toolbar.php @@ -26,13 +26,13 @@ $url = $panels['request']->getUrl(); ?> <div id="yii-debug-toolbar"> <?php foreach ($panels as $panel): ?> - <?=$panel->getSummary(); ?> + <?= $panel->getSummary() ?> <?php endforeach; ?> - <span class="yii-debug-toolbar-toggler" onclick="<?=$minJs; ?>">›</span> + <span class="yii-debug-toolbar-toggler" onclick="<?= $minJs ?>">›</span> </div> <div id="yii-debug-toolbar-min"> - <a href="<?=$url; ?>" title="Open Yii Debugger" id="yii-debug-toolbar-logo"> - <img width="29" height="30" alt="" src="<?=ConfigPanel::getYiiLogo(); ?>"> + <a href="<?= $url ?>" title="Open Yii Debugger" id="yii-debug-toolbar-logo"> + <img width="29" height="30" alt="" src="<?= ConfigPanel::getYiiLogo() ?>"> </a> - <span class="yii-debug-toolbar-toggler" onclick="<?=$maxJs; ?>">‹</span> + <span class="yii-debug-toolbar-toggler" onclick="<?= $maxJs ?>">‹</span> </div> diff --git a/framework/yii/debug/views/default/view.php b/framework/yii/debug/views/default/view.php index 8fe7199..338bef7 100644 --- a/framework/yii/debug/views/default/view.php +++ b/framework/yii/debug/views/default/view.php @@ -21,7 +21,7 @@ $this->title = 'Yii Debugger'; Yii Debugger </div> <?php foreach ($panels as $panel): ?> - <?=$panel->getSummary(); ?> + <?= $panel->getSummary() ?> <?php endforeach; ?> </div> @@ -71,7 +71,7 @@ $this->title = 'Yii Debugger'; echo ' at ' . date('Y-m-d h:i:s a', $summary['time']) . ' by ' . $summary['ip']; ?> </div> - <?=$activePanel->getDetail(); ?> + <?= $activePanel->getDetail() ?> </div> </div> </div> diff --git a/framework/yii/debug/views/layouts/main.php b/framework/yii/debug/views/layouts/main.php index f22842d..c16ac4f 100644 --- a/framework/yii/debug/views/layouts/main.php +++ b/framework/yii/debug/views/layouts/main.php @@ -11,12 +11,12 @@ yii\debug\DebugAsset::register($this); <html> <?php $this->beginPage(); ?> <head> - <title><?=Html::encode($this->title); ?></title> + <title><?= Html::encode($this->title) ?></title> <?php $this->head(); ?> </head> <body> <?php $this->beginBody(); ?> -<?=$content; ?> +<?= $content ?> <?php $this->endBody(); ?> </body> <?php $this->endPage(); ?> diff --git a/framework/yii/gii/generators/controller/templates/controller.php b/framework/yii/gii/generators/controller/templates/controller.php index 9101c57..9d0d92c 100644 --- a/framework/yii/gii/generators/controller/templates/controller.php +++ b/framework/yii/gii/generators/controller/templates/controller.php @@ -13,15 +13,15 @@ echo "<?php\n"; ?> <?php if (!empty($generator->ns)): ?> -namespace <?=$generator->ns; ?>; +namespace <?= $generator->ns ?>; <?php endif; ?> -class <?=$generator->getControllerClass(); ?> extends <?='\\' . trim($generator->baseClass, '\\') . "\n"; ?> +class <?= $generator->getControllerClass() ?> extends <?= '\\' . trim($generator->baseClass, '\\') . "\n" ?> { <?php foreach($generator->getActionIDs() as $action): ?> - public function action<?=Inflector::id2camel($action); ?>() + public function action<?= Inflector::id2camel($action) ?>() { - return $this->render('<?=$action; ?>'); + return $this->render('<?= $action ?>'); } <?php endforeach; ?> diff --git a/framework/yii/gii/generators/controller/templates/view.php b/framework/yii/gii/generators/controller/templates/view.php index 6441ecc..8a46f75 100644 --- a/framework/yii/gii/generators/controller/templates/view.php +++ b/framework/yii/gii/generators/controller/templates/view.php @@ -12,11 +12,11 @@ echo "<?php\n"; /** * @var yii\base\View $this */ -<?="?>"; ?> +<?= "?>" ?> -<h1><?=$generator->getControllerID() . '/' . $action; ?></h1> +<h1><?= $generator->getControllerID() . '/' . $action ?></h1> <p> You may change the content of this page by modifying - the file <code><?='<?php'; ?> echo __FILE__; ?></code>. + the file <code><?= '<?php' ?> echo __FILE__; ?></code>. </p> diff --git a/framework/yii/gii/generators/crud/Generator.php b/framework/yii/gii/generators/crud/Generator.php index ae59102..671dfbd 100644 --- a/framework/yii/gii/generators/crud/Generator.php +++ b/framework/yii/gii/generators/crud/Generator.php @@ -190,9 +190,9 @@ class Generator extends \yii\gii\Generator } $column = $tableSchema->columns[$attribute]; if ($column->phpType === 'boolean') { - return "\$form->field(\$model, '$attribute')->checkbox();"; + return "\$form->field(\$model, '$attribute')->checkbox()"; } elseif ($column->type === 'text') { - return "\$form->field(\$model, '$attribute')->textarea(['rows' => 6]);"; + return "\$form->field(\$model, '$attribute')->textarea(['rows' => 6])"; } else { if (preg_match('/^(password|pass|passwd|passcode)$/i', $column->name)) { $input = 'passwordInput'; @@ -200,9 +200,9 @@ class Generator extends \yii\gii\Generator $input = 'textInput'; } if ($column->phpType !== 'string' || $column->size === null) { - return "\$form->field(\$model, '$attribute')->$input();"; + return "\$form->field(\$model, '$attribute')->$input()"; } else { - return "\$form->field(\$model, '$attribute')->$input(['maxlength' => $column->size]);"; + return "\$form->field(\$model, '$attribute')->$input(['maxlength' => $column->size])"; } } } @@ -216,9 +216,9 @@ class Generator extends \yii\gii\Generator $tableSchema = $this->getTableSchema(); $column = $tableSchema->columns[$attribute]; if ($column->phpType === 'boolean') { - return "\$form->field(\$model, '$attribute')->checkbox();"; + return "\$form->field(\$model, '$attribute')->checkbox()"; } else { - return "\$form->field(\$model, '$attribute');"; + return "\$form->field(\$model, '$attribute')"; } } diff --git a/framework/yii/gii/generators/crud/templates/controller.php b/framework/yii/gii/generators/crud/templates/controller.php index 0aaead6..d1921de 100644 --- a/framework/yii/gii/generators/crud/templates/controller.php +++ b/framework/yii/gii/generators/crud/templates/controller.php @@ -21,19 +21,19 @@ $actionParamComments = $generator->generateActionParamComments(); echo "<?php\n"; ?> -namespace <?=StringHelper::dirname(ltrim($generator->controllerClass, '\\')); ?>; +namespace <?= StringHelper::dirname(ltrim($generator->controllerClass, '\\')) ?>; -use <?=ltrim($generator->modelClass, '\\'); ?>; -use <?=ltrim($generator->searchModelClass, '\\'); ?>; +use <?= ltrim($generator->modelClass, '\\') ?>; +use <?= ltrim($generator->searchModelClass, '\\') ?>; use yii\data\ActiveDataProvider; -use <?=ltrim($generator->baseControllerClass, '\\'); ?>; +use <?= ltrim($generator->baseControllerClass, '\\') ?>; use yii\web\HttpException; use yii\web\VerbFilter; /** - * <?=$controllerClass; ?> implements the CRUD actions for <?=$modelClass; ?> model. + * <?= $controllerClass ?> implements the CRUD actions for <?= $modelClass ?> model. */ -class <?=$controllerClass; ?> extends <?=StringHelper::basename($generator->baseControllerClass) . "\n"; ?> +class <?= $controllerClass ?> extends <?= StringHelper::basename($generator->baseControllerClass) . "\n" ?> { public function behaviors() { @@ -48,12 +48,12 @@ class <?=$controllerClass; ?> extends <?=StringHelper::basename($generator->base } /** - * Lists all <?=$modelClass; ?> models. + * Lists all <?= $modelClass ?> models. * @return mixed */ public function actionIndex() { - $searchModel = new <?=$searchModelClass; ?>; + $searchModel = new <?= $searchModelClass ?>; $dataProvider = $searchModel->search($_GET); return $this->render('index', [ @@ -63,28 +63,28 @@ class <?=$controllerClass; ?> extends <?=StringHelper::basename($generator->base } /** - * Displays a single <?=$modelClass; ?> model. - * <?=implode("\n\t * ", $actionParamComments) . "\n"; ?> + * Displays a single <?= $modelClass ?> model. + * <?= implode("\n\t * ", $actionParamComments) . "\n" ?> * @return mixed */ - public function actionView(<?=$actionParams; ?>) + public function actionView(<?= $actionParams ?>) { return $this->render('view', [ - 'model' => $this->findModel(<?=$actionParams; ?>), + 'model' => $this->findModel(<?= $actionParams ?>), ]); } /** - * Creates a new <?=$modelClass; ?> model. + * Creates a new <?= $modelClass ?> model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { - $model = new <?=$modelClass; ?>; + $model = new <?= $modelClass ?>; if ($model->load($_POST) && $model->save()) { - return $this->redirect(['view', <?=$urlParams; ?>]); + return $this->redirect(['view', <?= $urlParams ?>]); } else { return $this->render('create', [ 'model' => $model, @@ -93,17 +93,17 @@ class <?=$controllerClass; ?> extends <?=StringHelper::basename($generator->base } /** - * Updates an existing <?=$modelClass; ?> model. + * Updates an existing <?= $modelClass ?> model. * If update is successful, the browser will be redirected to the 'view' page. - * <?=implode("\n\t * ", $actionParamComments) . "\n"; ?> + * <?= implode("\n\t * ", $actionParamComments) . "\n" ?> * @return mixed */ - public function actionUpdate(<?=$actionParams; ?>) + public function actionUpdate(<?= $actionParams ?>) { - $model = $this->findModel(<?=$actionParams; ?>); + $model = $this->findModel(<?= $actionParams ?>); if ($model->load($_POST) && $model->save()) { - return $this->redirect(['view', <?=$urlParams; ?>]); + return $this->redirect(['view', <?= $urlParams ?>]); } else { return $this->render('update', [ 'model' => $model, @@ -112,25 +112,25 @@ class <?=$controllerClass; ?> extends <?=StringHelper::basename($generator->base } /** - * Deletes an existing <?=$modelClass; ?> model. + * Deletes an existing <?= $modelClass ?> model. * If deletion is successful, the browser will be redirected to the 'index' page. - * <?=implode("\n\t * ", $actionParamComments) . "\n"; ?> + * <?= implode("\n\t * ", $actionParamComments) . "\n" ?> * @return mixed */ - public function actionDelete(<?=$actionParams; ?>) + public function actionDelete(<?= $actionParams ?>) { - $this->findModel(<?=$actionParams; ?>)->delete(); + $this->findModel(<?= $actionParams ?>)->delete(); return $this->redirect(['index']); } /** - * Finds the <?=$modelClass; ?> model based on its primary key value. + * Finds the <?= $modelClass ?> model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. - * <?=implode("\n\t * ", $actionParamComments) . "\n"; ?> - * @return <?=$modelClass; ?> the loaded model + * <?= implode("\n\t * ", $actionParamComments) . "\n" ?> + * @return <?= $modelClass ?> the loaded model * @throws HttpException if the model cannot be found */ - protected function findModel(<?=$actionParams; ?>) + protected function findModel(<?= $actionParams ?>) { <?php if (count($pks) === 1) { @@ -143,7 +143,7 @@ if (count($pks) === 1) { $condition = '[' . implode(', ', $condition) . ']'; } ?> - if (($model = <?=$modelClass; ?>::find(<?=$condition; ?>)) !== null) { + if (($model = <?= $modelClass ?>::find(<?= $condition ?>)) !== null) { return $model; } else { throw new HttpException(404, 'The requested page does not exist.'); diff --git a/framework/yii/gii/generators/crud/templates/search.php b/framework/yii/gii/generators/crud/templates/search.php index cd8e156..ef8c0ca 100644 --- a/framework/yii/gii/generators/crud/templates/search.php +++ b/framework/yii/gii/generators/crud/templates/search.php @@ -19,23 +19,23 @@ $searchConditions = $generator->generateSearchConditions(); echo "<?php\n"; ?> -namespace <?=StringHelper::dirname(ltrim($generator->searchModelClass, '\\')); ?>; +namespace <?= StringHelper::dirname(ltrim($generator->searchModelClass, '\\')) ?>; use yii\base\Model; use yii\data\ActiveDataProvider; -use <?=ltrim($generator->modelClass, '\\'); ?>; +use <?= ltrim($generator->modelClass, '\\') ?>; /** - * <?=$searchModelClass; ?> represents the model behind the search form about <?=$modelClass; ?>. + * <?= $searchModelClass ?> represents the model behind the search form about <?= $modelClass ?>. */ -class <?=$searchModelClass; ?> extends Model +class <?= $searchModelClass ?> extends Model { - public $<?=implode(";\n\tpublic $", $searchAttributes); ?>; + public $<?= implode(";\n\tpublic $", $searchAttributes) ?>; public function rules() { return [ - <?=implode(",\n\t\t\t", $rules); ?>, + <?= implode(",\n\t\t\t", $rules) ?>, ]; } @@ -46,14 +46,14 @@ class <?=$searchModelClass; ?> extends Model { return [ <?php foreach ($labels as $name => $label): ?> - <?="'$name' => '" . addslashes($label) . "',\n"; ?> + <?= "'$name' => '" . addslashes($label) . "',\n" ?> <?php endforeach; ?> ]; } public function search($params) { - $query = <?=$modelClass; ?>::find(); + $query = <?= $modelClass ?>::find(); $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); @@ -62,7 +62,7 @@ class <?=$searchModelClass; ?> extends Model return $dataProvider; } - <?=implode("\n\t\t", $searchConditions); ?> + <?= implode("\n\t\t", $searchConditions) ?> return $dataProvider; } diff --git a/framework/yii/gii/generators/crud/templates/views/_form.php b/framework/yii/gii/generators/crud/templates/views/_form.php index 024006e..5e31364 100644 --- a/framework/yii/gii/generators/crud/templates/views/_form.php +++ b/framework/yii/gii/generators/crud/templates/views/_form.php @@ -23,22 +23,22 @@ use yii\widgets\ActiveForm; /** * @var yii\base\View $this - * @var <?=ltrim($generator->modelClass, '\\'); ?> $model + * @var <?= ltrim($generator->modelClass, '\\') ?> $model * @var yii\widgets\ActiveForm $form */ ?> -<div class="<?=Inflector::camel2id(StringHelper::basename($generator->modelClass)); ?>-form"> +<div class="<?= Inflector::camel2id(StringHelper::basename($generator->modelClass)) ?>-form"> - <?='<?php'; ?> $form = ActiveForm::begin(); ?> + <?= "<?php " ?>$form = ActiveForm::begin(); ?> <?php foreach ($safeAttributes as $attribute) { - echo "\t\t<?=" . $generator->generateActiveField($attribute) . " ?>\n\n"; + echo "\t\t<?= " . $generator->generateActiveField($attribute) . " ?>\n\n"; } ?> <div class="form-group"> - <?='<?php'; ?> echo Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']); ?> + <?= "<?= " ?>Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> </div> - <?='<?php'; ?> ActiveForm::end(); ?> + <?= "<?php " ?>ActiveForm::end(); ?> </div> diff --git a/framework/yii/gii/generators/crud/templates/views/_search.php b/framework/yii/gii/generators/crud/templates/views/_search.php index 14bd1af..ff9a0dd 100644 --- a/framework/yii/gii/generators/crud/templates/views/_search.php +++ b/framework/yii/gii/generators/crud/templates/views/_search.php @@ -16,14 +16,14 @@ use yii\widgets\ActiveForm; /** * @var yii\base\View $this - * @var <?=ltrim($generator->searchModelClass, '\\'); ?> $model + * @var <?= ltrim($generator->searchModelClass, '\\') ?> $model * @var yii\widgets\ActiveForm $form */ ?> -<div class="<?=Inflector::camel2id(StringHelper::basename($generator->modelClass)); ?>-search"> +<div class="<?= Inflector::camel2id(StringHelper::basename($generator->modelClass)) ?>-search"> - <?='<?php'; ?> $form = ActiveForm::begin([ + <?= "<?php " ?>$form = ActiveForm::begin([ 'action' => ['index'], 'method' => 'get', ]); ?> @@ -32,17 +32,17 @@ use yii\widgets\ActiveForm; $count = 0; foreach ($generator->getTableSchema()->getColumnNames() as $attribute) { if (++$count < 6) { - echo "\t\t<?=" . $generator->generateActiveSearchField($attribute) . " ?>\n"; + echo "\t\t<?= " . $generator->generateActiveSearchField($attribute) . " ?>\n\n"; } else { - echo "\t\t<?php // echo " . $generator->generateActiveSearchField($attribute) . " ?>\n"; + echo "\t\t<?= // " . $generator->generateActiveSearchField($attribute) . " ?>\n\n"; } } ?> <div class="form-group"> - <?='<?php'; ?> echo Html::submitButton('Search', ['class' => 'btn btn-primary']); ?> - <?='<?php'; ?> echo Html::resetButton('Reset', ['class' => 'btn btn-default']); ?> + <?= "<?= " ?>Html::submitButton('Search', ['class' => 'btn btn-primary']) ?> + <?= "<?= " ?>Html::resetButton('Reset', ['class' => 'btn btn-default']) ?> </div> - <?='<?php'; ?> ActiveForm::end(); ?> + <?= "<?php " ?>ActiveForm::end(); ?> </div> diff --git a/framework/yii/gii/generators/crud/templates/views/create.php b/framework/yii/gii/generators/crud/templates/views/create.php index 63a4eef..02c30bf 100644 --- a/framework/yii/gii/generators/crud/templates/views/create.php +++ b/framework/yii/gii/generators/crud/templates/views/create.php @@ -15,18 +15,18 @@ use yii\helpers\Html; /** * @var yii\base\View $this - * @var <?=ltrim($generator->modelClass, '\\'); ?> $model + * @var <?= ltrim($generator->modelClass, '\\') ?> $model */ -$this->title = 'Create <?=Inflector::camel2words(StringHelper::basename($generator->modelClass)); ?>'; -$this->params['breadcrumbs'][] = ['label' => '<?=Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass))); ?>', 'url' => ['index']]; +$this->title = 'Create <?= Inflector::camel2words(StringHelper::basename($generator->modelClass)) ?>'; +$this->params['breadcrumbs'][] = ['label' => '<?= Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass))) ?>', 'url' => ['index']]; $this->params['breadcrumbs'][] = $this->title; ?> -<div class="<?=Inflector::camel2id(StringHelper::basename($generator->modelClass)); ?>-create"> +<div class="<?= Inflector::camel2id(StringHelper::basename($generator->modelClass)) ?>-create"> - <h1><?="<?php"; ?> echo Html::encode($this->title); ?></h1> + <h1><?= "<?= " ?>Html::encode($this->title) ?></h1> - <?="<?php"; ?> echo $this->render('_form', [ + <?= "<?php " ?>echo $this->render('_form', [ 'model' => $model, ]); ?> diff --git a/framework/yii/gii/generators/crud/templates/views/index.php b/framework/yii/gii/generators/crud/templates/views/index.php index c440e34..d3cebcc 100644 --- a/framework/yii/gii/generators/crud/templates/views/index.php +++ b/framework/yii/gii/generators/crud/templates/views/index.php @@ -15,29 +15,29 @@ echo "<?php\n"; ?> use yii\helpers\Html; -use <?=$generator->indexWidgetType === 'grid' ? 'yii\grid\GridView' : 'yii\widgets\ListView'; ?>; +use <?= $generator->indexWidgetType === 'grid' ? "yii\grid\GridView" : "yii\widgets\ListView" ?>; /** * @var yii\base\View $this * @var yii\data\ActiveDataProvider $dataProvider - * @var <?=ltrim($generator->searchModelClass, '\\'); ?> $searchModel + * @var <?= ltrim($generator->searchModelClass, '\\') ?> $searchModel */ -$this->title = '<?=Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass))); ?>'; +$this->title = '<?= Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass))) ?>'; $this->params['breadcrumbs'][] = $this->title; ?> -<div class="<?=Inflector::camel2id(StringHelper::basename($generator->modelClass)); ?>-index"> +<div class="<?= Inflector::camel2id(StringHelper::basename($generator->modelClass)) ?>-index"> - <h1><?="<?php"; ?> echo Html::encode($this->title); ?></h1> + <h1><?= "<?= " ?>Html::encode($this->title) ?></h1> - <?='<?php' . ($generator->indexWidgetType === 'grid' ? ' //' : ''); ?> echo $this->render('_search', ['model' => $searchModel]); ?> + <?= "<?php " . ($generator->indexWidgetType === 'grid' ? "// " : "") ?>echo $this->render('_search', ['model' => $searchModel]); ?> <p> - <?='<?php'; ?> echo Html::a('Create <?=StringHelper::basename($generator->modelClass); ?>', ['create'], ['class' => 'btn btn-success']); ?> + <?= "<?= " ?>Html::a('Create <?= StringHelper::basename($generator->modelClass) ?>', ['create'], ['class' => 'btn btn-success']) ?> </p> <?php if ($generator->indexWidgetType === 'grid'): ?> - <?="<?php"; ?> echo GridView::widget([ + <?= "<?php " ?>echo GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ @@ -48,9 +48,9 @@ $count = 0; foreach ($generator->getTableSchema()->columns as $column) { $format = $generator->generateColumnFormat($column); if (++$count < 6) { - echo "\t\t\t'" . $column->name . ($format === 'text' ? '' : ':' . $format) . "',\n"; + echo "\t\t\t'" . $column->name . ($format === 'text' ? "" : ":" . $format) . "',\n"; } else { - echo "\t\t\t// '" . $column->name . ($format === 'text' ? '' : ':' . $format) . "',\n"; + echo "\t\t\t// '" . $column->name . ($format === 'text' ? "" : ":" . $format) . "',\n"; } } ?> @@ -59,11 +59,11 @@ foreach ($generator->getTableSchema()->columns as $column) { ], ]); ?> <?php else: ?> - <?="<?php"; ?> echo ListView::widget([ + <?= "<?php " ?>echo ListView::widget([ 'dataProvider' => $dataProvider, 'itemOptions' => ['class' => 'item'], 'itemView' => function ($model, $key, $index, $widget) { - return Html::a(Html::encode($model-><?=$nameAttribute; ?>), ['view', <?=$urlParams; ?>]); + return Html::a(Html::encode($model-><?= $nameAttribute ?>), ['view', <?= $urlParams ?>]); }, ]); ?> <?php endif; ?> diff --git a/framework/yii/gii/generators/crud/templates/views/update.php b/framework/yii/gii/generators/crud/templates/views/update.php index 0b881ec..903a880 100644 --- a/framework/yii/gii/generators/crud/templates/views/update.php +++ b/framework/yii/gii/generators/crud/templates/views/update.php @@ -17,19 +17,19 @@ use yii\helpers\Html; /** * @var yii\base\View $this - * @var <?=ltrim($generator->modelClass, '\\'); ?> $model + * @var <?= ltrim($generator->modelClass, '\\') ?> $model */ -$this->title = 'Update <?=Inflector::camel2words(StringHelper::basename($generator->modelClass)); ?>: ' . $model-><?=$generator->getNameAttribute(); ?>; -$this->params['breadcrumbs'][] = ['label' => '<?=Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass))); ?>', 'url' => ['index']]; -$this->params['breadcrumbs'][] = ['label' => $model-><?=$generator->getNameAttribute(); ?>, 'url' => ['view', <?=$urlParams; ?>]]; +$this->title = 'Update <?= Inflector::camel2words(StringHelper::basename($generator->modelClass)) ?>: ' . $model-><?= $generator->getNameAttribute() ?>; +$this->params['breadcrumbs'][] = ['label' => '<?= Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass))) ?>', 'url' => ['index']]; +$this->params['breadcrumbs'][] = ['label' => $model-><?= $generator->getNameAttribute() ?>, 'url' => ['view', <?= $urlParams ?>]]; $this->params['breadcrumbs'][] = 'Update'; ?> -<div class="<?=Inflector::camel2id(StringHelper::basename($generator->modelClass)); ?>-update"> +<div class="<?= Inflector::camel2id(StringHelper::basename($generator->modelClass)) ?>-update"> - <h1><?="<?php"; ?> echo Html::encode($this->title); ?></h1> + <h1><?= "<?= " ?>Html::encode($this->title) ?></h1> - <?="<?php"; ?> echo $this->render('_form', [ + <?= "<?php " ?>echo $this->render('_form', [ 'model' => $model, ]); ?> diff --git a/framework/yii/gii/generators/crud/templates/views/view.php b/framework/yii/gii/generators/crud/templates/views/view.php index 9e8f28d..a15a7b6 100644 --- a/framework/yii/gii/generators/crud/templates/views/view.php +++ b/framework/yii/gii/generators/crud/templates/views/view.php @@ -18,33 +18,33 @@ use yii\widgets\DetailView; /** * @var yii\base\View $this - * @var <?=ltrim($generator->modelClass, '\\'); ?> $model + * @var <?= ltrim($generator->modelClass, '\\') ?> $model */ -$this->title = $model-><?=$generator->getNameAttribute(); ?>; -$this->params['breadcrumbs'][] = ['label' => '<?=Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass))); ?>', 'url' => ['index']]; +$this->title = $model-><?= $generator->getNameAttribute() ?>; +$this->params['breadcrumbs'][] = ['label' => '<?= Inflector::pluralize(Inflector::camel2words(StringHelper::basename($generator->modelClass))) ?>', 'url' => ['index']]; $this->params['breadcrumbs'][] = $this->title; ?> -<div class="<?=Inflector::camel2id(StringHelper::basename($generator->modelClass)); ?>-view"> +<div class="<?= Inflector::camel2id(StringHelper::basename($generator->modelClass)) ?>-view"> - <h1><?="<?php"; ?> echo Html::encode($this->title); ?></h1> + <h1><?= "<?= " ?>Html::encode($this->title) ?></h1> <p> - <?='<?php'; ?> echo Html::a('Update', ['update', <?=$urlParams; ?>], ['class' => 'btn btn-primary']); ?> - <?='<?php'; ?> echo Html::a('Delete', ['delete', <?=$urlParams; ?>], [ + <?= "<?= " ?>Html::a('Update', ['update', <?= $urlParams ?>], ['class' => 'btn btn-primary']) ?> + <?= "<?php " ?>echo Html::a('Delete', ['delete', <?= $urlParams ?>], [ 'class' => 'btn btn-danger', 'data-confirm' => Yii::t('app', 'Are you sure to delete this item?'), 'data-method' => 'post', ]); ?> </p> - <?='<?php'; ?> echo DetailView::widget([ + <?= "<?php " ?>echo DetailView::widget([ 'model' => $model, 'attributes' => [ <?php foreach ($generator->getTableSchema()->columns as $column) { $format = $generator->generateColumnFormat($column); - echo "\t\t\t'" . $column->name . ($format === 'text' ? '' : ':' . $format) . "',\n"; + echo "\t\t\t'" . $column->name . ($format === 'text' ? "" : ":" . $format) . "',\n"; } ?> ], diff --git a/framework/yii/gii/generators/form/templates/action.php b/framework/yii/gii/generators/form/templates/action.php index 184c60f..6b084f4 100644 --- a/framework/yii/gii/generators/form/templates/action.php +++ b/framework/yii/gii/generators/form/templates/action.php @@ -12,9 +12,9 @@ use yii\helpers\Inflector; echo "<?php\n"; ?> -public function action<?=Inflector::id2camel(trim(basename($generator->viewName), '_')); ?>() +public function action<?= Inflector::id2camel(trim(basename($generator->viewName), '_')) ?>() { - $model = new <?=$generator->modelClass; ?><?=empty($generator->scenarioName) ? '' : "(['scenario' => '{$generator->scenarioName}'])"; ?>; + $model = new <?= $generator->modelClass ?><?= empty($generator->scenarioName) ? '' : "(['scenario' => '{$generator->scenarioName}'])" ?>; if ($model->load($_POST)) { if($model->validate()) { @@ -22,7 +22,7 @@ public function action<?=Inflector::id2camel(trim(basename($generator->viewName) return; } } - return $this->render('<?=$generator->viewName; ?>', [ + return $this->render('<?= $generator->viewName ?>', [ 'model' => $model, ]); } diff --git a/framework/yii/gii/generators/form/templates/form.php b/framework/yii/gii/generators/form/templates/form.php index f365ebc..a448687 100644 --- a/framework/yii/gii/generators/form/templates/form.php +++ b/framework/yii/gii/generators/form/templates/form.php @@ -14,22 +14,22 @@ use yii\widgets\ActiveForm; /** * @var yii\base\View $this - * @var <?=$generator->modelClass; ?> $model + * @var <?= $generator->modelClass ?> $model * @var ActiveForm $form */ -<?="?>"; ?> +<?= "?>" ?> -<div class="<?=str_replace('/', '-', trim($generator->viewName, '_')); ?>"> +<div class="<?= str_replace('/', '-', trim($generator->viewName, '_')) ?>"> - <?='<?php'; ?> $form = ActiveForm::begin(); ?> + <?= '<?php' ?> $form = ActiveForm::begin(); ?> <?php foreach ($generator->getModelAttributes() as $attribute): ?> - <?='<?php'; ?> echo $form->field($model, '<?=$attribute; ?>'); ?> + <?= '<?php' ?> echo $form->field($model, '<?= $attribute ?>'); ?> <?php endforeach; ?> <div class="form-group"> - <?='<?php'; ?> echo Html::submitButton('Submit', ['class' => 'btn btn-primary']); ?> + <?= '<?php' ?> echo Html::submitButton('Submit', ['class' => 'btn btn-primary']); ?> </div> - <?='<?php'; ?> ActiveForm::end(); ?> + <?= '<?php' ?> ActiveForm::end(); ?> -</div><!-- <?=str_replace('/', '-', trim($generator->viewName, '-')); ?> --> +</div><!-- <?= str_replace('/', '-', trim($generator->viewName, '-')) ?> --> diff --git a/framework/yii/gii/generators/model/templates/model.php b/framework/yii/gii/generators/model/templates/model.php index b5fc4ad..b445425 100644 --- a/framework/yii/gii/generators/model/templates/model.php +++ b/framework/yii/gii/generators/model/templates/model.php @@ -15,29 +15,29 @@ echo "<?php\n"; ?> -namespace <?=$generator->ns; ?>; +namespace <?= $generator->ns ?>; /** - * This is the model class for table "<?=$tableName; ?>". + * This is the model class for table "<?= $tableName ?>". * <?php foreach ($tableSchema->columns as $column): ?> - * @property <?="{$column->phpType} \${$column->name}\n"; ?> + * @property <?= "{$column->phpType} \${$column->name}\n" ?> <?php endforeach; ?> <?php if (!empty($relations)): ?> * <?php foreach ($relations as $name => $relation): ?> - * @property <?=$relation[1] . ($relation[2] ? '[]' : '') . ' $' . lcfirst($name) . "\n"; ?> + * @property <?= $relation[1] . ($relation[2] ? '[]' : '') . ' $' . lcfirst($name) . "\n" ?> <?php endforeach; ?> <?php endif; ?> */ -class <?=$className; ?> extends <?='\\' . ltrim($generator->baseClass, '\\') . "\n"; ?> +class <?= $className ?> extends <?= '\\' . ltrim($generator->baseClass, '\\') . "\n" ?> { /** * @inheritdoc */ public static function tableName() { - return '<?=$tableName; ?>'; + return '<?= $tableName ?>'; } /** @@ -45,7 +45,7 @@ class <?=$className; ?> extends <?='\\' . ltrim($generator->baseClass, '\\') . " */ public function rules() { - return [<?="\n\t\t\t" . implode(",\n\t\t\t", $rules) . "\n\t\t"; ?>]; + return [<?= "\n\t\t\t" . implode(",\n\t\t\t", $rules) . "\n\t\t" ?>]; } /** @@ -55,7 +55,7 @@ class <?=$className; ?> extends <?='\\' . ltrim($generator->baseClass, '\\') . " { return [ <?php foreach ($labels as $name => $label): ?> - <?="'$name' => '" . addslashes($label) . "',\n"; ?> + <?= "'$name' => '" . addslashes($label) . "',\n" ?> <?php endforeach; ?> ]; } @@ -64,9 +64,9 @@ class <?=$className; ?> extends <?='\\' . ltrim($generator->baseClass, '\\') . " /** * @return \yii\db\ActiveRelation */ - public function get<?=$name; ?>() + public function get<?= $name ?>() { - <?=$relation[0] . "\n"; ?> + <?= $relation[0] . "\n" ?> } <?php endforeach; ?> } diff --git a/framework/yii/gii/generators/module/templates/controller.php b/framework/yii/gii/generators/module/templates/controller.php index d5e92d6..2b24e0e 100644 --- a/framework/yii/gii/generators/module/templates/controller.php +++ b/framework/yii/gii/generators/module/templates/controller.php @@ -8,7 +8,7 @@ echo "<?php\n"; ?> -namespace <?=$generator->getControllerNamespace(); ?>; +namespace <?= $generator->getControllerNamespace() ?>; use yii\web\Controller; diff --git a/framework/yii/gii/generators/module/templates/module.php b/framework/yii/gii/generators/module/templates/module.php index b22469c..ef0c55a 100644 --- a/framework/yii/gii/generators/module/templates/module.php +++ b/framework/yii/gii/generators/module/templates/module.php @@ -13,12 +13,12 @@ $className = substr($className, $pos + 1); echo "<?php\n"; ?> -namespace <?=$ns; ?>; +namespace <?= $ns ?>; -class <?=$className; ?> extends \yii\base\Module +class <?= $className ?> extends \yii\base\Module { - public $controllerNamespace = '<?=$generator->getControllerNamespace(); ?>'; + public $controllerNamespace = '<?= $generator->getControllerNamespace() ?>'; public function init() { diff --git a/framework/yii/gii/generators/module/templates/view.php b/framework/yii/gii/generators/module/templates/view.php index 9ca15c1..311134d 100644 --- a/framework/yii/gii/generators/module/templates/view.php +++ b/framework/yii/gii/generators/module/templates/view.php @@ -4,15 +4,15 @@ * @var yii\gii\generators\module\Generator $generator */ ?> -<div class="<?=$generator->moduleID . '-default-index'; ?>"> - <h1><?="<?php"; ?> echo $this->context->action->uniqueId; ?></h1> +<div class="<?= $generator->moduleID . '-default-index' ?>"> + <h1><?= "<?php" ?> echo $this->context->action->uniqueId; ?></h1> <p> - This is the view content for action "<?="<?php"; ?> echo $this->context->action->id; ?>". - The action belongs to the controller "<?="<?php"; ?> echo get_class($this->context); ?>" - in the "<?="<?php"; ?> echo $this->context->module->id; ?>" module. + This is the view content for action "<?= "<?php" ?> echo $this->context->action->id; ?>". + The action belongs to the controller "<?= "<?php" ?> echo get_class($this->context); ?>" + in the "<?= "<?php" ?> echo $this->context->module->id; ?>" module. </p> <p> You may customize this page by editing the following file:<br> - <code><?="<?php"; ?> echo __FILE__; ?></code> + <code><?= "<?php" ?> echo __FILE__; ?></code> </p> </div> diff --git a/framework/yii/gii/views/default/diff.php b/framework/yii/gii/views/default/diff.php index d01d0f2..6766528 100644 --- a/framework/yii/gii/views/default/diff.php +++ b/framework/yii/gii/views/default/diff.php @@ -10,6 +10,6 @@ <?php elseif (empty($diff)): ?> <div class="alert alert-success">Identical.</div> <?php else: ?> - <div class="content"><?=$diff; ?></div> + <div class="content"><?= $diff ?></div> <?php endif; ?> </div> diff --git a/framework/yii/gii/views/default/index.php b/framework/yii/gii/views/default/index.php index 26ba583..011a44b 100644 --- a/framework/yii/gii/views/default/index.php +++ b/framework/yii/gii/views/default/index.php @@ -21,9 +21,9 @@ $this->title = 'Welcome to Gii'; <div class="row"> <?php foreach ($generators as $id => $generator): ?> <div class="generator col-lg-4"> - <h3><?=Html::encode($generator->getName()); ?></h3> - <p><?=$generator->getDescription(); ?></p> - <p><?=Html::a('Start »', ['default/view', 'id' => $id], ['class' => 'btn btn-default']); ?></p> + <h3><?= Html::encode($generator->getName()) ?></h3> + <p><?= $generator->getDescription() ?></p> + <p><?= Html::a('Start »', ['default/view', 'id' => $id], ['class' => 'btn btn-default']) ?></p> </div> <?php endforeach; ?> </div> diff --git a/framework/yii/gii/views/default/view.php b/framework/yii/gii/views/default/view.php index 7899275..1ef5c77 100644 --- a/framework/yii/gii/views/default/view.php +++ b/framework/yii/gii/views/default/view.php @@ -24,9 +24,9 @@ foreach ($generator->templates as $name => $path) { } ?> <div class="default-view"> - <h1><?=Html::encode($this->title); ?></h1> + <h1><?= Html::encode($this->title) ?></h1> - <p><?=$generator->getDescription(); ?></p> + <p><?= $generator->getDescription() ?></p> <?php $form = ActiveForm::begin([ 'id' => "$id-generator", @@ -45,10 +45,10 @@ foreach ($generator->templates as $name => $path) { Please select which set of the templates should be used to generated the code. '); ?> <div class="form-group"> - <?=Html::submitButton('Preview', ['name' => 'preview', 'class' => 'btn btn-primary']); ?> + <?= Html::submitButton('Preview', ['name' => 'preview', 'class' => 'btn btn-primary']) ?> <?php if(isset($files)): ?> - <?=Html::submitButton('Generate', ['name' => 'generate', 'class' => 'btn btn-success']); ?> + <?= Html::submitButton('Generate', ['name' => 'generate', 'class' => 'btn btn-success']) ?> <?php endif; ?> </div> </div> diff --git a/framework/yii/gii/views/default/view/files.php b/framework/yii/gii/views/default/view/files.php index dae0274..0cc12dd 100644 --- a/framework/yii/gii/views/default/view/files.php +++ b/framework/yii/gii/views/default/view/files.php @@ -33,11 +33,11 @@ use yii\gii\CodeFile; </thead> <tbody> <?php foreach ($files as $file): ?> - <tr class="<?=$file->operation; ?>"> + <tr class="<?= $file->operation ?>"> <td class="file"> - <?=Html::a(Html::encode($file->getRelativePath()), ['preview', 'file' => $file->id], ['class' => 'preview-code', 'data-title' => $file->getRelativePath()]); ?> + <?= Html::a(Html::encode($file->getRelativePath()), ['preview', 'file' => $file->id], ['class' => 'preview-code', 'data-title' => $file->getRelativePath()]) ?> <?php if ($file->operation === CodeFile::OP_OVERWRITE): ?> - <?=Html::a('diff', ['diff', 'file' => $file->id], ['class' => 'diff-code label label-warning', 'data-title' => $file->getRelativePath()]); ?> + <?= Html::a('diff', ['diff', 'file' => $file->id], ['class' => 'diff-code label label-warning', 'data-title' => $file->getRelativePath()]) ?> <?php endif; ?> </td> <td class="action"> diff --git a/framework/yii/gii/views/default/view/results.php b/framework/yii/gii/views/default/view/results.php index 5ecb4e1..b37543f 100644 --- a/framework/yii/gii/views/default/view/results.php +++ b/framework/yii/gii/views/default/view/results.php @@ -18,5 +18,5 @@ use yii\gii\CodeFile; echo '<div class="alert alert-success">' . $generator->successMessage() . '</div>'; } ?> - <pre><?=nl2br($results); ?></pre> + <pre><?= nl2br($results) ?></pre> </div> diff --git a/framework/yii/gii/views/layouts/generator.php b/framework/yii/gii/views/layouts/generator.php index 7d51e65..bdc032e 100644 --- a/framework/yii/gii/views/layouts/generator.php +++ b/framework/yii/gii/views/layouts/generator.php @@ -25,7 +25,7 @@ $activeGenerator = Yii::$app->controller->generator; </div> </div> <div class="col-lg-9"> - <?=$content; ?> + <?= $content ?> </div> </div> <?php $this->endContent(); ?> diff --git a/framework/yii/gii/views/layouts/main.php b/framework/yii/gii/views/layouts/main.php index 1d6c2f4..f648999 100644 --- a/framework/yii/gii/views/layouts/main.php +++ b/framework/yii/gii/views/layouts/main.php @@ -14,7 +14,7 @@ $asset = yii\gii\GiiAsset::register($this); <html lang="en"> <head> <meta charset="utf-8"/> - <title><?=Html::encode($this->title); ?></title> + <title><?= Html::encode($this->title) ?></title> <?php $this->head(); ?> </head> <body> @@ -37,13 +37,13 @@ NavBar::end(); ?> <div class="container"> - <?=$content; ?> + <?= $content ?> </div> <footer class="footer"> <div class="container"> <p class="pull-left">A Product of <a href="http://www.yiisoft.com/">Yii Software LLC</a></p> - <p class="pull-right"><?=Yii::powered(); ?></p> + <p class="pull-right"><?= Yii::powered() ?></p> </div> </footer> diff --git a/framework/yii/requirements/views/web/index.php b/framework/yii/requirements/views/web/index.php index a609705..82e3fdb 100644 --- a/framework/yii/requirements/views/web/index.php +++ b/framework/yii/requirements/views/web/index.php @@ -52,18 +52,18 @@ <table class="table table-bordered"> <tr><th>Name</th><th>Result</th><th>Required By</th><th>Memo</th></tr> <?php foreach($requirements as $requirement): ?> - <tr class="<?=$requirement['condition'] ? 'success' : ($requirement['mandatory'] ? 'error' : 'warning'); ?>"> + <tr class="<?= $requirement['condition'] ? 'success' : ($requirement['mandatory'] ? 'error' : 'warning') ?>"> <td> - <?=$requirement['name']; ?> + <?= $requirement['name'] ?> </td> <td> - <span class="result"><?=$requirement['condition'] ? 'Passed' : ($requirement['mandatory'] ? 'Failed' : 'Warning'); ?></span> + <span class="result"><?= $requirement['condition'] ? 'Passed' : ($requirement['mandatory'] ? 'Failed' : 'Warning') ?></span> </td> <td> - <?=$requirement['by']; ?> + <?= $requirement['by'] ?> </td> <td> - <?=$requirement['memo']; ?> + <?= $requirement['memo'] ?> </td> </tr> <?php endforeach; ?> @@ -74,7 +74,7 @@ <hr> <div class="footer"> - <p>Server: <?=$this->getServerInfo() . ' ' . $this->getNowDate(); ?></p> + <p>Server: <?= $this->getServerInfo() . ' ' . $this->getNowDate() ?></p> <p>Powered by <a href="http://www.yiiframework.com/" rel="external">Yii Framework</a></p> </div> </div> diff --git a/framework/yii/views/errorHandler/callStackItem.php b/framework/yii/views/errorHandler/callStackItem.php index 5b76936..566e1d3 100644 --- a/framework/yii/views/errorHandler/callStackItem.php +++ b/framework/yii/views/errorHandler/callStackItem.php @@ -12,15 +12,15 @@ */ ?> <li class="<?php if (!$handler->isCoreFile($file) || $index === 1) echo 'application'; ?> call-stack-item" - data-line="<?=(int)($line - $begin); ?>"> + data-line="<?= (int)($line - $begin) ?>"> <div class="element-wrap"> <div class="element"> - <span class="item-number"><?=(int)$index; ?>.</span> + <span class="item-number"><?= (int)$index ?>.</span> <span class="text"><?php if ($file !== null) echo 'in ' . $handler->htmlEncode($file); ?></span> <?php if ($method !== null): ?> <span class="call"> <?php if ($file !== null) echo '–' ?> - <?php if ($class !== null) echo $handler->addTypeLinks($class) . '::'; ?><?=$handler->addTypeLinks($method . '()'); ?> + <?php if ($class !== null) echo $handler->addTypeLinks($class) . '::'; ?><?= $handler->addTypeLinks($method . '()') ?> </span> <?php endif; ?> <span class="at"><?php if ($line !== null) echo 'at line'; ?></span> @@ -32,7 +32,7 @@ <div class="error-line"></div> <?php for ($i = $begin; $i <= $end; ++$i): ?><div class="hover-line"></div><?php endfor; ?> <div class="code"> - <?php for ($i = $begin; $i <= $end; ++$i): ?><span class="lines-item"><?=(int)($i + 1); ?></span><?php endfor; ?> + <?php for ($i = $begin; $i <= $end; ++$i): ?><span class="lines-item"><?= (int)($i + 1) ?></span><?php endfor; ?> <pre><?php // fill empty lines with a whitespace to avoid rendering problems in opera for ($i = $begin; $i <= $end; ++$i) { diff --git a/framework/yii/views/errorHandler/error.php b/framework/yii/views/errorHandler/error.php index 3d5b65e..066d7e4 100644 --- a/framework/yii/views/errorHandler/error.php +++ b/framework/yii/views/errorHandler/error.php @@ -28,7 +28,7 @@ if ($exception instanceof \yii\base\UserException) { <html> <head> <meta charset="utf-8" /> - <title><?=$handler->htmlEncode($name); ?></title> + <title><?= $handler->htmlEncode($name) ?></title> <style> body { @@ -69,8 +69,8 @@ if ($exception instanceof \yii\base\UserException) { </head> <body> - <h1><?=$handler->htmlEncode($name); ?></h1> - <h2><?=nl2br($handler->htmlEncode($message)); ?></h2> + <h1><?= $handler->htmlEncode($name) ?></h1> + <h2><?= nl2br($handler->htmlEncode($message)) ?></h2> <p> The above error occurred while the Web server was processing your request. </p> @@ -78,7 +78,7 @@ if ($exception instanceof \yii\base\UserException) { Please contact us if you think this is a server error. Thank you. </p> <div class="version"> - <?=date('Y-m-d H:i:s', time()); ?> + <?= date('Y-m-d H:i:s', time()) ?> </div> <?php if (method_exists($this, 'endBody')) $this->endBody(); // to allow injecting code into body (mostly by Yii Debug Toolbar) ?> </body> diff --git a/framework/yii/views/errorHandler/exception.php b/framework/yii/views/errorHandler/exception.php index 8ee6a2f..beebb29 100644 --- a/framework/yii/views/errorHandler/exception.php +++ b/framework/yii/views/errorHandler/exception.php @@ -342,8 +342,8 @@ pre .diff .change{ <?php if ($exception instanceof \yii\base\ErrorException): ?> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAABACAIAAAA/NwYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU4QjIxQTgwQzU1MDExRTJBNEMxRURGMUEzMjA1M0UxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU4QjIxQTgxQzU1MDExRTJBNEMxRURGMUEzMjA1M0UxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NThCMjFBN0VDNTUwMTFFMkE0QzFFREYxQTMyMDUzRTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NThCMjFBN0ZDNTUwMTFFMkE0QzFFREYxQTMyMDUzRTEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz74UrDRAAAOWUlEQVR42txb2W8T1xf2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" alt="Gears"/> <h1> - <span><?=$handler->htmlEncode($exception->getName()); ?></span> - – <?=$handler->addTypeLinks(get_class($exception)); ?> + <span><?= $handler->htmlEncode($exception->getName()) ?></span> + – <?= $handler->addTypeLinks(get_class($exception)) ?> </h1> <?php else: ?> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAA6CAIAAACPssguAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjcwRURBOUQxQzQ3RDExRTJCRjVFODJDQkFGODFDN0VBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjcwRURBOUQyQzQ3RDExRTJCRjVFODJDQkFGODFDN0VBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzBFREE5Q0ZDNDdEMTFFMkJGNUU4MkNCQUY4MUM3RUEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzBFREE5RDBDNDdEMTFFMkJGNUU4MkNCQUY4MUM3RUEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4L6mYsAAAE9klEQVR42tRa227aTBDGiwkhJtD8EanSQ6RKqKpSBbWqql5U7QP0TfsSvWhvStMEO6cqDUpjRylSQ1QC+IQN/mdrhBIb413vgsheIDDr9XwzOzPfzFrwPC/Fe8Cauiybe3uersNPQZJylYr04oUgCNyfJXJfcTAYXH/5YoH0qjq66LbbTrtdfPcOITTXALDuf/40FSWlabeuq6rpeZkHD6Ryma8dOOvDdV19Zycg/XBoml6r9ft9vk9EnNV/dOT8+RM1oXdxof/4wdfrEF/1G7Va+uIiagL8BfaBafMIAHy38/17/+/fydNgAkyDyXMHwLEsS1EmqH9kBOvgACbPFwDQaPfr11S9TjT7+JijEfgAsFst8/CQYv7BQe/6el4AQGTsfPuGbqSt2CGcnrarVS4hlRUAxETz9+/eyQntjXAL3MgeUhG7+vXtbSr1Dx+sqoYss3sCYlS/cXLinJ8nu713emqoKqMRmAD4xAElBQA3GpA62DwBsagfiIN7ecnyeHZyIbKoP4o46KurY2+Rrq7CeQ08YenZs0wmM1MAI+KQDv3VKpd7r1+L2WwQsGH0q9VCyN3dZrOrKPdevUpGsxMCmEAcMqVSaWNjcXExcN00zRbQ7BAAWMSs1ZY2N7NLSzMCMJk4ZBFaXl4OAxBF0Yza68fH3Z2dzNu3Ceo1lMB3raurScQhgqjBDhGiibS1v98zzVlEIax+CJ0TM9fYqAIXB9HRBsiFXq0myGuIVv2xxGGQNCaCVcG2tCGVDkBi4jBU80ThYFlwLVojICr1kxAHFLHRsWoNgzu5oABASBw8247ygVScZJhcyDIVuUDk6tf39oiIg+exUAOwMNiZfAVSAI7jGPv7sSUvhwLl/Jyqc0EEwA+dsR2H+EFWy4OdwdqERiACQNhxGIaaaCcWyDY3Zni7u2BzPgDoOg64Yo92YvJ43e2CzUlCKmIlDsSZ2FcG4Qq4faQoJO0jRKJ+uszFq+tWr5PkNRRPHM7O2IWBpdxGYxrkAk2DODihbAqKdJpNkRIDJhdxniDGEgdavgpSWp8+XX7+HADg9vsJCnDcPnr+XHr0KKpeE6fScdA0l1P7AIwAu2BxfR3qIYotREEcpj8mkwsxkjjs7iYmDuRdCXJykSuXx3YuxEji0O2mE0lvlEpWpZK6vWsxv2s0BCjeE1kVk4ujo2KlEvYEkZE4jMlBCK1sbUFdf7NCx22YlRVHURKuCeSiVpM2N8NGEFmJwzgAIH2hUAhYAD6vGQ6J/bOpe2/eBDoXiJ04jNm1CAVsDT8Zj7ijyAViJQ6zHPV6Z3s7kNfQrcylqlCVpuZ42IeHgbMpdJM4QD2auFc+mxE+m0JUHQfSqHd2Fsg7mMxxWjxwNiX43yBzNT9+9GSZj6I2NsKZH5e5Y9+hSODQ79+vfvjgP0K8SRzSvCw9jgvxJBe/fpmaln/yBAe3WXYcOHYuRmdTCFctmsah4zBjhtdo+D08BGHVhs1zd9Q/MgKIDcJjCwzyefv+/dRdG86/zItzvri+7knS3ZLefPgQPX7sMxSUy+W8ly+NtbW7Ir2+tjaoVHL5fDqdFgFENpstlMtQ/bdlOc3pJZLpjX6x6G1t/ff0KegdH1v96yV7EEk7nU6r1bJtm+PrVPx9FyFQd7FYBMa+sLAwBODnMgirAAM+p/EqLDcuJAiwbaCsgU+fsf8vwADjle3ME1OGEwAAAABJRU5ErkJggg==" alt="Attention"/> @@ -359,13 +359,13 @@ pre .diff .change{ } ?></h1> <?php endif; ?> - <h2><?=$handler->htmlEncode($exception->getMessage()); ?></h2> - <?=$handler->renderPreviousExceptions($exception); ?> + <h2><?= $handler->htmlEncode($exception->getMessage()) ?></h2> + <?= $handler->renderPreviousExceptions($exception) ?> </div> <div class="call-stack"> <ul> - <?=$handler->renderCallStackItem($exception->getFile(), $exception->getLine(), null, null, 1); ?> + <?= $handler->renderCallStackItem($exception->getFile(), $exception->getLine(), null, null, 1) ?> <?php for ($i = 0, $trace = $exception->getTrace(), $length = count($trace); $i < $length; ++$i): ?> <?=$handler->renderCallStackItem(@$trace[$i]['file'] ?: null, @$trace[$i]['line'] ?: null, @$trace[$i]['class'] ?: null, @$trace[$i]['function'] ?: null, $i + 2); ?> @@ -375,15 +375,15 @@ pre .diff .change{ <div class="request"> <div class="code"> - <?=$handler->renderRequest(); ?> + <?= $handler->renderRequest() ?> </div> </div> <div class="footer"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS4AAADeCAIAAAAMx3q5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkE5NkEyOTAzQzQ3RDExRTI4NjIzOEE2RkU5QTc4RTU0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkE5NkEyOTA0QzQ3RDExRTI4NjIzOEE2RkU5QTc4RTU0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTk2QTI5MDFDNDdEMTFFMjg2MjM4QTZGRTlBNzhFNTQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTk2QTI5MDJDNDdEMTFFMjg2MjM4QTZGRTlBNzhFNTQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4DYCAjAAAx4UlEQVR42ux9aZvjuJEm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" alt="Yii Framework"/> - <p class="timestamp"><?=date('Y-m-d, H:i:s'); ?></p> - <p><?=$handler->createServerInformationLink(); ?></p> - <p><a href="http://yiiframework.com/">Yii Framework</a>/<?=$handler->createFrameworkVersionLink(); ?></p> + <p class="timestamp"><?= date('Y-m-d, H:i:s') ?></p> + <p><?= $handler->createServerInformationLink() ?></p> + <p><a href="http://yiiframework.com/">Yii Framework</a>/<?= $handler->createFrameworkVersionLink() ?></p> </div> <script type="text/javascript"> diff --git a/framework/yii/views/errorHandler/previousException.php b/framework/yii/views/errorHandler/previousException.php index f9bbe52..5e8ded8 100644 --- a/framework/yii/views/errorHandler/previousException.php +++ b/framework/yii/views/errorHandler/previousException.php @@ -9,13 +9,13 @@ <h2> <span>Caused by:</span> <?php if ($exception instanceof \yii\base\Exception): ?> - <span><?=$handler->htmlEncode($exception->getName()); ?></span> – - <?=$handler->addTypeLinks(get_class($exception)); ?> + <span><?= $handler->htmlEncode($exception->getName()) ?></span> – + <?= $handler->addTypeLinks(get_class($exception)) ?> <?php else: ?> - <span><?=$handler->htmlEncode(get_class($exception)); ?></span> + <span><?= $handler->htmlEncode(get_class($exception)) ?></span> <?php endif; ?> </h2> - <h3><?=$handler->htmlEncode($exception->getMessage()); ?></h3> - <p>in <span class="file"><?=$exception->getFile(); ?></span> at line <span class="line"><?=$exception->getLine(); ?></span></p> - <?=$handler->renderPreviousExceptions($exception); ?> + <h3><?= $handler->htmlEncode($exception->getMessage()) ?></h3> + <p>in <span class="file"><?= $exception->getFile() ?></span> at line <span class="line"><?= $exception->getLine() ?></span></p> + <?= $handler->renderPreviousExceptions($exception) ?> </div> diff --git a/framework/yii/views/migration.php b/framework/yii/views/migration.php index 63dfe07..7f3b0a9 100644 --- a/framework/yii/views/migration.php +++ b/framework/yii/views/migration.php @@ -8,7 +8,7 @@ echo "<?php\n"; ?> -class <?=$className; ?> extends \yii\db\Migration +class <?= $className ?> extends \yii\db\Migration { public function up() { @@ -17,7 +17,7 @@ class <?=$className; ?> extends \yii\db\Migration public function down() { - echo "<?=$className; ?> cannot be reverted.\n"; + echo "<?= $className ?> cannot be reverted.\n"; return false; } } diff --git a/framework/yii/web/AssetBundle.php b/framework/yii/web/AssetBundle.php index d592e32..15ba3f6 100644 --- a/framework/yii/web/AssetBundle.php +++ b/framework/yii/web/AssetBundle.php @@ -15,8 +15,9 @@ use yii\base\View; /** * AssetBundle represents a collection of asset files, such as CSS, JS, images. * - * Each asset bundle has a unique name that globally identifies it among all asset bundles - * used in an application. + * Each asset bundle has a unique name that globally identifies it among all asset bundles used in an application. + * The name is the [fully qualified class name](http://php.net/manual/en/language.namespaces.rules.php) + * of the class representing it. * * An asset bundle can depend on other asset bundles. When registering an asset bundle * with a view, all its dependent asset bundles will be automatically registered. @@ -130,13 +131,9 @@ class AssetBundle extends Object /** * Registers the CSS and JS files with the given view. - * It will then try to convert non-CSS or JS files (e.g. LESS, Sass) into the corresponding - * CSS or JS files using [[AssetManager::converter|asset converter]]. - * @param \yii\base\View $view the view that the asset files to be registered with. - * @throws InvalidConfigException if [[baseUrl]] or [[basePath]] is not set when the bundle - * contains internal CSS or JS files. + * @param \yii\base\View $view the view that the asset files are to be registered with. */ - public function registerAssets($view) + public function registerAssetFiles($view) { foreach ($this->js as $js) { if (strpos($js, '/') !== 0 && strpos($js, '://') === false) { @@ -156,6 +153,8 @@ class AssetBundle extends Object /** * Publishes the asset bundle if its source code is not under Web-accessible directory. + * It will also try to convert non-CSS or JS files (e.g. LESS, Sass) into the corresponding + * CSS or JS files using [[AssetManager::converter|asset converter]]. * @param AssetManager $am the asset manager to perform the asset publishing * @throws InvalidConfigException if [[baseUrl]] or [[basePath]] is not set when the bundle * contains internal CSS or JS files. diff --git a/framework/yii/web/AssetManager.php b/framework/yii/web/AssetManager.php index 85b378a..49374f0 100644 --- a/framework/yii/web/AssetManager.php +++ b/framework/yii/web/AssetManager.php @@ -95,10 +95,12 @@ class AssetManager extends Component * it will treat `$name` as the class of the asset bundle and create a new instance of it. * * @param string $name the class name of the asset bundle + * @param boolean $publish whether to publish the asset files in the asset bundle before it is returned. + * If you set this false, you must manually call `AssetBundle::publish()` to publish the asset files. * @return AssetBundle the asset bundle instance * @throws InvalidConfigException if $name does not refer to a valid asset bundle */ - public function getBundle($name) + public function getBundle($name, $publish = true) { if (isset($this->bundles[$name])) { if ($this->bundles[$name] instanceof AssetBundle) { @@ -111,8 +113,10 @@ class AssetManager extends Component } else { $bundle = Yii::createObject($name); } - /** @var AssetBundle $bundle */ - $bundle->publish($this); + if ($publish) { + /** @var AssetBundle $bundle */ + $bundle->publish($this); + } return $this->bundles[$name] = $bundle; } diff --git a/framework/yii/web/User.php b/framework/yii/web/User.php index 4aa7c67..eca2ed6 100644 --- a/framework/yii/web/User.php +++ b/framework/yii/web/User.php @@ -10,7 +10,6 @@ namespace yii\web; use Yii; use yii\base\Component; use yii\base\InvalidConfigException; -use yii\base\InvalidParamException; /** * User is the class for the "user" application component that manages the user authentication status. diff --git a/tests/unit/data/ar/Customer.php b/tests/unit/data/ar/Customer.php index 441b37c..60a68b5 100644 --- a/tests/unit/data/ar/Customer.php +++ b/tests/unit/data/ar/Customer.php @@ -24,7 +24,7 @@ class Customer extends ActiveRecord public function getOrders() { - return $this->hasMany('Order', ['customer_id' => 'id'])->orderBy('id'); + return $this->hasMany(Order::className(), ['customer_id' => 'id'])->orderBy('id'); } public static function active($query) diff --git a/tests/unit/data/ar/Order.php b/tests/unit/data/ar/Order.php index b6392ed..6d5e926 100644 --- a/tests/unit/data/ar/Order.php +++ b/tests/unit/data/ar/Order.php @@ -19,17 +19,17 @@ class Order extends ActiveRecord public function getCustomer() { - return $this->hasOne('Customer', ['id' => 'customer_id']); + return $this->hasOne(Customer::className(), ['id' => 'customer_id']); } public function getOrderItems() { - return $this->hasMany('OrderItem', ['order_id' => 'id']); + return $this->hasMany(OrderItem::className(), ['order_id' => 'id']); } public function getItems() { - return $this->hasMany('Item', ['id' => 'item_id']) + return $this->hasMany(Item::className(), ['id' => 'item_id']) ->via('orderItems', function ($q) { // additional query configuration })->orderBy('id'); @@ -37,7 +37,7 @@ class Order extends ActiveRecord public function getBooks() { - return $this->hasMany('Item', ['id' => 'item_id']) + return $this->hasMany(Item::className(), ['id' => 'item_id']) ->viaTable('tbl_order_item', ['order_id' => 'id']) ->where(['category_id' => 1]); } diff --git a/tests/unit/data/ar/OrderItem.php b/tests/unit/data/ar/OrderItem.php index ad931a8..b340a46 100644 --- a/tests/unit/data/ar/OrderItem.php +++ b/tests/unit/data/ar/OrderItem.php @@ -19,11 +19,11 @@ class OrderItem extends ActiveRecord public function getOrder() { - return $this->hasOne('Order', ['id' => 'order_id']); + return $this->hasOne(Order::className(), ['id' => 'order_id']); } public function getItem() { - return $this->hasOne('Item', ['id' => 'item_id']); + return $this->hasOne(Item::className(), ['id' => 'item_id']); } } diff --git a/tests/unit/data/views/layout.php b/tests/unit/data/views/layout.php index fa3a86e..0b5a0e1 100644 --- a/tests/unit/data/views/layout.php +++ b/tests/unit/data/views/layout.php @@ -14,7 +14,7 @@ <body> <?php $this->beginBody(); ?> -<?=$content; ?> +<?= $content ?> <?php $this->endBody(); ?> </body>