Alexander Makarov | سید سجاد شاهچراغیان
Yii core team, Stay.com, Yii فارسی
این اسلاید توسط آقای الکساندر ماکاروف، که یکی از توسعه دهندگان اصلی فریمورک Yii هستند در همایشی به نام، همایش روز فریمورک این مطالب را ارائه کرده اند که شامل:
با توجه به پیشرفت روز افزون و سریع فریمورک ها در php دیگر جایی برای درنگ و زمانی برای سرگردانی مابین انواع فریمورک های بیشمار PHP باقی نمی ماند. پس تقاضا می شوند این اسلایدها را تا به انتها مشاهده کرده سپس تصمیم گیری کنید. البته در زمینه های قدرت و سرعت و کارآیی و دیگر مؤلفه ها برای انتخاب یک فریمورک مباحث بسیار زیاد شده است، اما درگیر شدن یک برنامه نویس مبتدی در این مباحث برابر است با ضایع شدن عمرش که باز نمی گردد. لازم به ذکر است که بسیار از مطالب در این اسلایدها ممکن است کلی بیان شده باشند و دلیل آن هم این است که این اسلایدها صرفا برای معرفی فریمورک Yii به ویژه نسخه ۲ آن در آن همایش تهیه شده است که تصاویر آن را که حاوی توضیحات آقای ماکاروف، البته به زبان روسی است، را در آدرس زیر مشاهده نمایید.
October 12 - Php Frameworks Day, Kievتمامی مشکلات در علم کامپیوتر از طریق راههای غیر متعارف دیگر قابل حل هستند ... به غیر از مشکلاتی که از طریق لایه های زیادی از این راه ها به وجود آمده اند.
David Wheeler
*به غیر از PECL و microframeworks
setMyCoolFactoryDependencyInjectionContainer()
C
.\yii\base\Object
— getters and setters, init
method,
configuring via array, Object::className()
.\yii\base\Component extends Object
— event, behavior.
class GoogleMap extends \yii\base\Object
{
public function __construct($param1, $param2, $config = array())
{
// ...
parent::__construct($config);
}
public function init()
{
// ...
parent::init();
}
}
$object = \Yii::createObject(array(
'class' => '\app\components\GoogleMap',
'apiKey' => 'xyz',
'apiSecret' => 'cde',
), $param1, $param2);
$component->on($eventName, $handler);
$component->off($eventName, $handler);
$component->trigger($eventName, Event $eventObject = null);
رویدادهای سراسری:
// raising event
\Yii::$app->trigger($eventName);
// subscribing
\Yii::$app->on($eventName, $handler);
use \yii\widgets\Menu;
// ...
echo Menu::widget(array(
'items' => $items,
));
use yii\widgets\ActiveForm;
<?php $form = ActiveForm::begin(); ?>
<?php echo $form->field($model, 'username')->textInput(); ?>
<?php echo $form->field($model, 'password')->passwordInput(); ?>
<div class="form-actions">
<?php echo Html::submitButton('Login'); ?>
</div>
<?php ActiveForm::end(); ?>
app\config\AppAsset::register($this);
return $this->render(...);
کلاس CFormModel
از زمانی که Model
نقش آن را بازی می کند، حذف شده است. کار با فرمها ساده تر شده.
$model->attributes = $_POST;
کد ثابت و یکسان برای همه.
$query = new \yii\db\Query;
$query->select('id, name')
->from('tbl_user')
->orderBy('id DESC')
->limit(10);
$command = $query->createCommand();
echo $command->sql;
$rows = $command->queryAll();
$users = User::model()->find()
->orderBy('id DESC')
->limit(10)
->all();
$finder = Post::find()->where(array('a' => 10));
$finder2 = clone $finder;
$finder2->addWhere(array('b' => 1));
$model = $finder->one();
$model2 = $finder2->one();
// shortcuts
$post = Post::find(10); // pk = 10
$post = Post::find(array('a' => 10, 'b' => 1)); // where a = 10 and b = 1
class User extends \yii\db\ActiveRecord
{
public function getPosts()
{
return $this->hasMany('Post', array('user_id' => 'id'));
}
public function getActivePosts()
{
return $this->hasMany('Post', array('user_id' => 'id'))
->where(array('status' => Post::STATUS_ACTIVE));
}
}
$posts = $user->getPosts()->limit(10)->all();
$postCount = $user->getPosts()->count();
$posts = Post::find()->limit(10)->asArray()->all();
foreach($posts as $post) {
echo $post['title']."\n";
}
متد ()save
فقط تغییرات را ذخیره می کند.
برای ذخیره رکوردهای مرتبط متد جدیدی به نام link
ارائه شده است.
$comment = new Comment();
$comment->text = 'Hello, Yii!';
// INSERT INTO post_comment ...
$post->link('comments', $comment);
// DELETE FROM post_comment ...
$post->unlink('comments', $comment);
APIها خیلی شبیه به وب شده است.
$mergedConfig = ArrayHelper::merge($baseConfig, $specificConfig);
$posts = Post::model()->limit(10)->all();
$titles = ArrayHelper::getColumn('title');
$hash = Security::generatePasswordHash($password);
// ...saving hash to DB...
// reading hash from DB on login
if (Security::verifyPassword($password, $hash) {
// OK
} else {
// wrong password
}
echo \Yii::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are # cats}}!', array(
'n' => 13,
));
// Здесь {n, plural, =0{котов нет} =1{есть один кот} one{# кот} few{# кота} many{# котов} other{# кота}}!
echo \Yii::t('app', '{n,number} is spelled as {n, spellout}', array(
'n' => 42,
));
آغاز به کار با Yii2:
curl -s http://getcomposer.org/installer | php
php composer.phar create-project --stability=dev yiisoft/yii2-app-basic .
نسخه ۱.۱ پایدار است و تا سال ۲۰۱۶ پشتیبانی می شود