واقعاً فکر میکنید وقتی میشه با ActiveRecord کار کرد، دلیلی داره که ساختار سنتی دستورات SQL هنوز هم مهم باشه؟ توی Yii هم میتونید با SQL Commands و ازطریق Yii::app()->db کار کنید تا یادتون نره ولی مگه شما DB Admin هستین که کار با این دستورات رو باید توی سال 2015 همچنان توی ذهنتون نگه دارین؟ همینه که میگم کار تیمی توی ایران مشکل داره و PHP Developer باید دستورات SQL رو هم همچنان حفظ کنه. حالا اگه دیتابیس پروژه عوض شد و خواستن با Oracle یا MongoDB کار کنن چیکار میکنین؟ شخصاً تصمیم میگیرین اونها رو هم یاد بگیرین؟ مگه چند سال عمر میکنید؟ اینکه CI رو در حد و اندازه فریمورکهای مدرن امروزی مثل Yii و Cake و Symfony و Laravel میدونید به خودی خود نشون میده که (ضمن عرض شرمندگی) خیلی سطحی دارین به برنامه نویسی نگاه میکنید و فکر میکنید تا ابد قراره و میتونید تنهایی یک پروژه رو از صفر تا صد بنویسید و این پروژه ها، پروژه های بزرگی هم از آب در بیان.
اینکه توی شرکتی کار میکنید که با لاراول کار میکنه بد نیست و شما هم به همین خاطر دارین با لاراول کار میکنید ولی محض رضای خدا هم که شده، امکانات زیاد Yii یا هر فریمورک دیگه رو بد ندونید، فقط به این دلیل که خودتون ازشون استفاده نمیکنید. Yii هم CRUD Generator داره.
فریم ورکهایی شبیه یی برنامه نویس رو از کد نویسی دور میکنه
کاملاً دارین اشتباه میکنید. اون چیزی که شما بهش میگین کدنویسی، یک تعریف کلیشه ای هست. تفاوت این دو کد رو ازنظر خوانایی و منطق و قابلیت فهم و سهولت اصلاح و بهینه سازی، خودتون مقایسه کنید:
mysql_connect(HOST, USER, PASS) or die('Connection error');
mysql_select_db(NAME) or die('Database error');
mysql_query('SET NAMES \'utf8\'');
mysql_set_charset('utf8');
if(isset($_POST['user'])) {
$name = mysql_real_escape_string($_POST['user']['name']);
$family = mysql_real_escape_string($_POST['user']['family']);
$father = mysql_real_escape_string($_POST['user']['father']);
$gender = mysql_real_escape_string($_POST['user']['gender']);
$confirmed = 1;
// validation must be done manually here
mysql_query("INSERT INTO `users` VALUES (NULL, '{$name}', '{$family}', '{$father}', '{$gender}', '{$confirmed}');");
if(mysql_affected_rows() > 0) {
$_SESSION['message'] = 'Successful insert'; // must be deleted manually after display on next request
header('Location: login.php');
exit('<meta http-equiv="Refresh" content="0;url=login.php" />');
}
}
$model = new Users;
if(isset($_POST['Users'])) {
$model->attributes = $_POST['Users'];
$model->confirmed = 1;
if($model->save()) { // validation will be done automatically here
Yii::app()->user->setFlash('message', 'Successful insert'); // will be destroyed automatically after next user request
$this->redirect(array('login'));
}
}
کدوم یکی از کدهای فوق برای یک برنامه نویس که داره توی سطح حرفه ای کار میکنه، منطقی تر، استانداردتر، بهینه تر و پیشرفته تره؟ کسی که کد اول رو نوشته بیشتر برنامه نویسه یا کسی که با کد دوم کار میکنه؟ رفع مشکلات کدوم راحتتره؟ توی فاز پشتیبانی کدوم کد کمتر اذیت میکنه؟ تازه خیلی امکانات دیگه مثل behaviors رو قلم گرفتم (مثلاً بگین به محض اینکه یک رکورد رو از دیتابیس استخراج کردیم، یه کاری انجام بشه یا قبل از ولیدیشن یه کار دیگه انجام بدیم یا بعد از ولیدیشن و قبل از ذخیره سازی یه کار دیگه انجام بشه و...).