صفحه 6 از 9 اولاول ... 45678 ... آخرآخر
نمایش نتایج 201 تا 240 از 341

نام تاپیک: Yii vs Laravel

  1. #201

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    در لاراول کلاس احراز هویت به صورت اوتوماتیک به مدل User متصل میشه و به شکل زیر عملیات احراز هویت رو انجام میده
    و به صورت Auth::user به مدل و کلاس احراز هویت، یکجا دسترسی دارم
    معادل Yii :

    $identity = new UserIdentity($username, $password);
    $identity->authenticate();
    if($identity->errorCode === UserIdentity::ERROR_NONE && Yii::app()->user->login($identity)) {
    // user logged in
    }

    گرفتن نام کاربر
    معادل Yii :

    Yii::app()->user->name

    چک کردن ورود یوزر
    معادل Yii :

    if(!Yii::app()->user->isGuest)
    {
    // The user is logged in...
    }

    ورود کاربر به صورت remember me
    معادل Yii :

    $duration = ($this->remember ? 1209600 : 0); // two weeks
    if (Yii::app()->user->login($identity, $duration)) {
    // user logged in
    }

    چک کردن ورود کاربر به روش remember
    معادل Yii :

    if($this->remember && !Yii::app()->user->isGuest) {
    //
    }

    احراز هویت با id
    معادل Yii :

    $u = User::model()->findByPK(1);
    Yii::app()->user->login(new UserIdendity($u['username'], $u['password']));

    احراز هویت با مدل
    مشابه کد قبلی
    تصدیق کاربر بدون لاگین
    معادل Yii :

    if(Yii::app()->user->login($identity)) {
    /* look at the difference with login via authentication
    if($identity->errorCode === UserIdentity::ERROR_NONE && Yii::app()->user->login($identity)) {
    */
    {
    //
    }

    لاگین کاربر فقط برای request فعلی
    معادل Yii :

    if(Yii::app()->user->login($identity) {
    // code
    Yii::app()->user->logout();
    }

    خروج کاربر
    معادل Yii
    Yii::app()->user->logout();
    آخرین ویرایش به وسیله MMSHFE : پنج شنبه 22 اسفند 1392 در 18:47 عصر دلیل: اشتباه تایپی

  2. #202
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    اراک
    پست
    409

    نقل قول: Yii vs Laravel

    در مورد دسترسی به فیلدهای user، تا اونجا که من میدونم، در yii باید کلاس CWebUser رو دستکاری کرد، ولی شما توی پست قبل این مورد رو ذکر نکردید، این هم متنی که خود گوانگ زو! نوشته

    By default, the expression Yii::app()->user returns a CWebUser application component which represents the information that are closely related with the current user. Some information can be persistent throughout the current user session. For example, CWebUser already comes with a name property that stores the username of the current user.
    In order to store more information, we need to modify the identity class used together with CWebUser. Each application may have one or several identity classes which are mainly responsible to provide ways of performing user authentication.


    Resource: http://www.yiiframework.com/wiki/6/h...-yii-app-user/


    مثلا اگر جدول user ما، فیلدهای به نام family, old, avatar , ... داشته باشه، شما چطور بهش از طریق Yii::app()->user دسترسی پیدا میکنید

  3. #203

    نقل قول: Yii vs Laravel

    کلاس CWebUser توی Yii کلاً بحثش از مدل User جداست. این کلاس وظیفه انجام کارهای مربوط به کابر جاری مثل لاگین و اعتبارسنجی و بررسی نقشها و خروج و... رو برعهده داره و منطقی هم نیست که با مدل User یکی باشه چون توی هر پروژه فیلدهای کاربران و حتی اسم جدولشون متغیره. بجای این کار خیلی راحت با دستور زیر میشه مدل کاربر جاری رو بدست آورد:
    $user = User::model()->findByPk(Yii::app()->user->id);

    حتی من توی پروژه هام میام توی کلاس CController که توی پوشه protected/components هست، کد زیر رو اضافه میکنم:

    public $currentUser;
    public function init() {
    if (!Yii::app()->user->isGuest) {
    $this->currentUser = User::model()->findByPk(Yii::app()->user->id);
    }
    }

    و از اونجا که این کلاس، والد تمام کنترلرهاست و متد init هم همیشه در ابتدای هر درخواست اجرا میشه، به راحتی میتونم توی هر اکشن یا ویو با this->currentUser$ به مدل کاربر جاری و ازطریق اون به تمام فیلدهاش دسترسی پیدا کنم.

  4. #204
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    اراک
    پست
    409

    نقل قول: Yii vs Laravel

    خوب اینم که دوباره شد دستی!
    روش شما روش خوبیه، اما خود Yii روش خوبی رو برای برنامه نویس ارائه نداده

  5. #205

    نقل قول: Yii vs Laravel

    شاید حق با شما باشه ولی من خودم شخصاً اینکه کلاس مدیریت کاربر از مدل کاربر جدا باشه رو میپسندم (بازم تأکید میکنم نظر شخصیه) و ازطرفی Yii هم مکانیزمهایی برای اینکه بشه به راحتی مدل رو در همه کلاسها در اختیار داشت (مثل روشی که من استفاده کردم) فراهم کرده.

  6. #206
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    اراک
    پست
    409

    نقل قول: Yii vs Laravel

    خوب
    نوبت request ها و input هاست
    لاراول 2 کلاس Input , Request رو برای کارهای مختلف ارائه کرده

    گرفتن داده های POST یا GET

    $name = Input::get('filedName');
    // or
    $name = Input::get('filedName', 'defaultValue');


    تست وجود یک داده POST یا GET

    if (Input::has('name'))
    {
    //
    }


    دریافت تمام داده ها

    $inputs = Input::all();


    دریافت تعدادی از داده ها

    $inputs = Input::only('username', 'password');


    دریافت همه داده ها به غیر از تعدادی

    $inputs = Input::except('credit_card');


    دریافت داده هایی که به صورت آرایه ارسال شده اند

    $input = Input::get('products.0.name');


    ذخیره داده های POST یا GET در session

    Input::flash();


    پاک کردن داده های POST یا GET از session

    Input::flush();


    ذخیره برخی از داده های POST یا GET در session

    Input::flashOnly('username', 'email');


    ذخیره همه داده های POST یا GET در session به جز برخی

    Input::flashExcept('password');


    خواندن داده های POST یا GET ذخیره شده در session

    $username = Input::old('username');


    بقیه در پست های بعدی

  7. #207

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    گرفتن داده های POST یا GET
    معادل Yii

    // get requests
    $name = Yii::app()->request->getQuery('fieldName');
    // or
    $name = Yii::app()->request->getQuery('fieldName', 'defaultValue');

    // post requests
    $name = Yii::app()->request->getPost('fieldName');
    // or
    $name = Yii::app()->request->getPost('fieldName', 'defaultValue');

    // get or post requests
    $name = Yii::app()->request->getParam('fieldName');
    // or
    $name = Yii::app()->request->getParam('fieldName', 'defaultValue');

    تست وجود یک داده POST یا GET

    if (!Yii::app()->getQuery('name'))
    {
    //
    }

    دریافت تمام داده ها
    نمیدونم چرا اصلاً براش متد جداگانه گذاشتن چون خیلی راحت میشه با خود PHP انجام داد و Yii هم وقتی پرسیدم که چرا چنین متدی نداره، گفتن چون وجودش بی معناست. مثال:

    $inputs = $_POST
    $inputs = $_GET
    $inputs = $_REQUEST;

    دریافت تعدادی از داده ها
    معادل Yii

    $inputs = array(Yii::app()->request->getParam('username'), Yii::app()->request->getParam('password'));

    دریافت همه داده ها به غیر از تعدادی
    این مورد رو هم معادلی پیدا نکردم ولی اینطوری میشه شبیه سازی کرد (البته برخلاف Input::all این مورد بنظرم سودمند اومد و نفهمیدم چرا نگذاشتن) :

    $inputs = $_REQUEST';
    unset($inputs['credit_card']);

    دریافت داده هایی که به صورت آرایه ارسال شده اند
    معادل Yii

    $input = Yii::app()->request->getParam('products[0][name]');

    ذخیره داده های POST یا GET در session
    معادل Yii

    // store
    Yii::app()->user->setState('post', serialize($_POST));
    // retrieve
    $values = unserialize(Yii::app()->getState('post'));

    پاک کردن داده های POST یا GET از session
    معادل Yii
    Yii::app()->user->setState('post', null);

    ذخیره برخی از داده های POST یا GET در session
    معادل Yii
    Yii::app()->user->setState('post', serialize(array(Yii::app()->request->getParam('username'), Yii::app()->request->getParam('email'))));

    ذخیره همه داده های POST یا GET در session به جز برخی

    $inputs = $_REQUEST;
    unset($inputs['password']);
    Yii:app()->user->setState('post', serialize($inputs));

    خواندن داده های POST یا GET ذخیره شده در session
    معادل Yii :

    $inputs = unserialize(Yii::app()->getState('post');
    $username = $inputs['username'];

    ناگفته نماند که در این مورد حقیقتش تابحال نیازی بهش پیدا نکرده بودم ولی از اونجا که دیدم کاربردهای زیادی میتونه داشته باشه (بخصوص در فرمهای چند قسمتی که نیاز به ذخیره اطلاعات فرم در سشن در زمان رفتن به مرحله بعد یا قبل هست)، برای کارهای خودم یک کلاس شخصی برای مدیریت این نواقص نوشتم ولی خوشبختانه گویا این مشکلات هم توی نسخه 2 قراره برطرف بشه.

  8. #208

    نقل قول: Yii vs Laravel

    تو Yii چرا این قدر پیچیده هستش ؟ مثلا: ذخیره برخی از داده های POST یا GET در session . این واقعا آزار دهندست. تو نسخه جدید هم اینطوریه؟
    به غیر اون بقیه توابعش برای input و request سخت تر و پیچیده تر از لاراول هستش. تو این کد مثلا:

    if (!Yii::app()->getQuery('name'))

    {

    //

    }



    تو دید اول اصلا به ذهن نمیرسه که برای تست وجود یک داده POST یا GET هستش

  9. #209

    نقل قول: Yii vs Laravel

    دوست عزیز، دید اول چیه؟ مثلاً برنامه نویسیم ها! توی مستنداتش نوشته که getQuery برای دریافت Getها و getPost برای دریافت Postها و getParam هم برای دریافت هر دو هست. ! هم که یعنی empty و null نباشه. حالا حتماً باید بگه Input::has تا خوانا بشه؟ بهرحال من هم مثل شما قبول دارم که ساختار Yii توی این مورد یکم پیچیده و دست و پاگیره ولی حقیقتش تا حالا موردی نبوده که بخوام توی اکشن خاصی، دستی مقادیر رو بگیرم و همیشه برای اکشن پارامتر تعریف میکنم و خود Yii اون رو توی پارامترها میچینه و هرجا هم احیاناً لازم بوده، از خود POST_$ و GET_$ استفاده کردم و با وجود دستوراتی مثل in_array و array_keys خیلی راحت میشه چک کرد فرضاً یک مقدار توی POST_$ هست یا نه. درهرصورت تا جایی که فهمیدم توی نسخه 2 یک کلاس مخصوص پردازش ورودیهای کاربر اضافه کردن.

  10. #210

    نقل قول: Yii vs Laravel

    بحث Input::has بودن یا نبودن نیست اصلا. ولی مدت زمان به خاطر موندن خیلی از توابع به تعریف اونها بستگی داره. مثلا شما سعی میکنید توابعی رو تعریف کنید که همیشه تو دهنتون بمونه اگر هم بعضی هاشون سخت بود آلیاس تعریف میکنید. اون کلاسی که اضافه شده چیه؟ میتونین توضیحی بدید؟ (مختصر)

  11. #211

    نقل قول: Yii vs Laravel

    منم فقط می خوام نظرمو بگم ...
    من قبلا با yii کار کردم .... فریم ورک محشریه . از همه نظر عالیه هیچ شکی در اون نیست ... ولی مشکلی که داشت این بود که من کلا php رو با yii یاد گرفتم .. و بعد از یک مدتی به خاطر دستورات پیچیده بودن دستورات و کلا ساختار برای من ، کلا از php کشیدم بیرون و رفتم سراغ node تا حدود این یک سال که با فریم ورک sails کار کردم که واقعاااا عالی بود ... بعد خاطر دور نبودن از php دنبال یک فریم ورک برای کار بودم که فهمیدم laravel از نظر ساختار و حتی کد زدن چون ساختار جفتشون شبیه rails بود ....
    و توی این دو هفته ای که اومدم سراغ laravel واقعاااا دیدم برای من خیلی خیلی خیلی بهتر از yii بوده...
    در کل قابلیت های جفتشون یکیه ... بعضی جاها هم یک سری اختلافاتی هست که توی پروژه های بزرگ مشخص می شه ... و چیزی که بین این ها فاصله و رقابت ایجاد می کنه به نظرم فقط راحتی فرد در استفاده است ... که برای بنده به شخصه laravel خیلی قابل فهم تر بود ... بعضی از برنامه نویسان اینقدر مسائل پیچیده حل کردن که ماهیچه های مغر عادت کرده به پیچیده جل کردن مسئله ها ( به قول نویسنده کتابی که می خوندم ) بعضی ها هم مثل ما دنبال سریع و تمیز تر شدن هر چه بیشتر کد ها .....
    هر کسی با یکی راحته و گرنه قابلیت ها تقریبا یکی است ....
    استادان عزیز نظرمو گفتم ... نتوپید به ما .... همه جای متنم گفتم : به نظر من ، من فکر می کنم و.....

  12. #212
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    اراک
    پست
    409

    نقل قول: Yii vs Laravel

    خوب بریم سراغ فایل در فرم ها

    گرفتن یک فایل که توسط فرم ارسال شده

    $file = Input::file('photo');


    چک کردن ارسال یک فایل

    if (Input::hasFile('photo'))
    {
    //
    }


    جابجایی فایل آپلود شده

    Input::file('photo')->move($destinationPath);

    Input::file('photo')->move($destinationPath, $fileName);


    گرفتن اطلاعات فایل آپلود شده

    $path = Input::file('photo')->getRealPath();
    $name = Input::file('photo')->getClientOriginalName();
    $extension = Input::file('photo')->getClientOriginalExtension();
    $size = Input::file('photo')->getSize();
    $mime = Input::file('photo')->getMimeType();

  13. #213

    نقل قول: Yii vs Laravel

    تو بخش نوبت request ها و input. کدهای لاراول واقعا بسیار کوچیک،سریع و آسون هستن. امیدوارم تو نسخه جدید Yii هم راحت تر شده باشن این قسمتها

  14. #214

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط tux-world مشاهده تاپیک
    بحث Input::has بودن یا نبودن نیست اصلا. ولی مدت زمان به خاطر موندن خیلی از توابع به تعریف اونها بستگی داره. مثلا شما سعی میکنید توابعی رو تعریف کنید که همیشه تو دهنتون بمونه اگر هم بعضی هاشون سخت بود آلیاس تعریف میکنید. اون کلاسی که اضافه شده چیه؟ میتونین توضیحی بدید؟ (مختصر)
    همون کلاس Request هست که تکمیل شده. این لینک رو ببینید.

  15. #215

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط tux-world مشاهده تاپیک
    تو بخش نوبت request ها و input. کدهای لاراول واقعا بسیار کوچیک،سریع و آسون هستن. امیدوارم تو نسخه جدید Yii هم راحت تر شده باشن این قسمتها
    بله خوشبختانه توی نسخه جدید خیلی راحت شده. مثلاً میگیم Request::get('name'); بجای اینکه بگیم Yii::app()->request->getQuery('name');

  16. #216

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    گرفتن یک فایل که توسط فرم ارسال شده
    $file = CUploadedFile::getInstanceByName('photo');

    چک کردن ارسال یک فایل

    if (!CUploadedFile::getInstanceByName('photo')) {
    //
    }

    جابجایی فایل آپلود شده

    $file->saveAs($destinationPath . '/' . $file->name);
    $file->saveAs($destinationPath . '/' . $filename);

    گرفتن اطلاعات فایل آپلود شده

    $path = $file->tempName;
    $name = $file->name;
    $extension = $file->extensionName;
    $size = $file->size;
    $mime = $file->type;
    $error = $file->error;
    // Yii provides hasError property
    if(!$file->hasError) {
    $file->saveAs('uploads/' . $file->name);
    }
    آخرین ویرایش به وسیله MMSHFE : یک شنبه 25 اسفند 1392 در 14:49 عصر دلیل: اشتباه تایپی

  17. #217

    نقل قول: Yii vs Laravel

    محض کمک به رونق بیشتر به تاپیک و اینکه کمکی بشه برای دوستان چند تا از خصوصیات لاراول رو می نویسم

    بررسی وجود یا عدم وجود فایل:
    File::exists()

    دریافت محتویات یک فایل:
    $contents = File::get($filename);


    دریافت محتویات فایل به صورت ریموت (نتیجه دریافت به صورت بولین قابل دسترس است):
    $contents = File::getRemote($url);
    دریافت متغیرهای بازگشتی از فایل:
    <?php
    // file1.php - returns an array
    return array(
    'key1' => 'value1',
    'key2' => 'value2',
    );
    ?>

    // Fetching the array of the file above
    $value = File::getRequire('file1.php');

    الحاق یک فایل یا همان require_once به صورت لاراولی:
    File::requireOnce($some_php_file);


    نوشتن محتوا در فایل:

    $bytes_written = File::put($file, $contents);
    if ($bytes_written === false)
    {
    die("Error writing to file");
    }


    اضافه کردن محتوا در ابتدای فایل:

    $bytesWritten = File::prepend($filename, $content);
    if ($bytesWritten === false)
    {
    die("Couldn't write to the file.");
    }


    اضافه کردن محتوا به انتهای فایل:

    $bytesWritten = File::append($filename, $content);
    if ($bytesWritten === false)
    {
    die("Couldn't write to the file.");
    }


    حذف یک فایل:
    File::delete($filename);


    حذف چند فایل:
    File::delete($file1, $file2, $file3);


    حذف فایل به روش استفاده از آرایه:

    $files = array($file1, $file2);
    File::delete($files);


    انتقال فایل به مسیر جدید:

    if ( ! File::move($oldfile, $newfile))
    {
    die("Couldn't rename file");
    }


    ایجاد یک نسخه دیگر از فایل در مسیر دیگر:

    if ( ! File::copy($file, $dest))
    {
    die("Couldn't copy file");
    }


    استخراج پسوند فایل:
    $extension = File::extension($filename);


    دریافت نوع فایل (پوشه یا فایل ):
    echo File::type($filename);


    دریافت سایز یا همان حجم فایل:
    $bytes = File::size($filename);


    دریافت اطلاعات اعم از تاریخ و ساعت آخرین تغییرات اعمال شده در فایل:

    $timestamp = File::lastModified($filename);
    if ($timestamp === false)
    {
    die("Failure getting the time");
    }


    تشخیص پوشه بودن فایل:


    if (File::isDirectory($filename))
    {
    echo "Yes. It's a directory.";
    }


    تشخیص قابلیت نوشتن در داخل فایل.( سطح دسترسی برای نوشتن اعمال شده است یا خیر ):

    if (File::isWritable($filename))
    {
    echo "Yes. $filename is writable.";
    }
    if (File::isWritable($dirname))
    {
    echo "Yes. $dirname is writable.";
    }


    فعلا کافیه :)

  18. #218

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط tux-world مشاهده تاپیک
    بررسی وجود یا عدم وجود فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    file_exists

    دریافت محتویات یک فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    $contents = file_get_contents($filename);

    دریافت محتویات فایل به صورت ریموت (نتیجه دریافت به صورت بولین قابل دسترس است):
    از چه نسخه ای استفاد میکنید چون توی سایتش چنین دستوری رو توی لاراول ندیدم! لینک
    دریافت متغیرهای بازگشتی از فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    <?php
    // file1.php - returns an array
    return array(
    'key1' => 'value1',
    'key2' => 'value2',
    );
    ?>

    // Fetching the array of the file above
    $values = require 'file1.php';


    الحاق یک فایل یا همان require_once به صورت لاراولی:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    require_once 'some_file.php';

    نوشتن محتوا در فایل:
    $bytes_written = file_put_contents($file, $contents);
    if ($bytes_written === false)
    {
    die("Error writing to file");
    }

    اضافه کردن محتوا در ابتدای فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    $bytesWritten = file_put_contents($file, $contents . file_get_contents($file));

    اضافه کردن محتوا به انتهای فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    $bytesWritten = file_put_contents($file, file_get_contents($file) . $contents);

    حذف یک فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    unlink($file);

    حذف چند فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    foreach(array($file1, $file2, $file3) as $file) { unlink($file); }

    حذف فایل به روش استفاده از آرایه:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    مثل کد قبل
    انتقال فایل به مسیر جدید:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    if (!rename($oldfile, $newfile)) {
    die("Couldn't rename file");
    }

    ایجاد یک نسخه دیگر از فایل در مسیر دیگر:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    if (!copy($oldfile, $newfile)) {
    die("Couldn't copy file");
    }

    استخراج پسوند فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    $extension = pathinfo($filename, PATHINFO_EXTENSION);

    دریافت نوع فایل (پوشه یا فایل ):
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    echo filetype($filename);

    دریافت سایز یا همان حجم فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    $bytes = filesize($filename);

    دریافت اطلاعات اعم از تاریخ و ساعت آخرین تغییرات اعمال شده در فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    $timestamp = filemtime($filename);
    if ($timestamp === false) {
    die("Failure getting the time");
    }

    تشخیص پوشه بودن فایل:
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:

    if (is_dir($filename)) {
    echo "Yes. It's a directory.";
    }

    تشخیص قابلیت نوشتن در داخل فایل.( سطح دسترسی برای نوشتن اعمال شده است یا خیر ):
    ضرورتی نداره چون با خود PHP و با یک خط میشه انجام داد:
    if (is_writable($filename)) {
    echo "Yes. $filename is writable.";
    }
    if (is_writable($dirname)) {
    echo "Yes. $dirname is writable.";
    }

    فعلا کافیه :)
    دوست عزیز، فریمورک قرار نیست هر کاری که خود PHP به راحتی انجام میده رو بیاد شکلش رو عوض کنه و بگه من قابلیتهام زیاده! لطفاً توی این تاپیک، قابلیتهایی رو معرفی کنید که با خود PHP خام نمیشه به راحتی انجام داد. Yii هم دلیلی نداشته وقتی مثلاً fileatime توی خود PHP هست بیاد بگه (CFileHelper::AccessTime($filename رو به کار ببرین. در عوض یکسری چیزهای دیگه اضافه کرده:
    CFileHelper::copyDirectory برای کپی بازگشتی یک پوشه و همه فایلهای داخلش
    CFileHelper::findFiles
    برای جستجوی یک یا چند فایل در کل یک پوشه و همه پوشه های فرعی داخلش
    CFileHelper::getExtension
    تشخیص پسوند فایل
    CFileHelper::getMimeTypeByExtension
    تشخیص MIME Type از روی پسوند
    CFileHelper::getMimeType
    تشخیص MIME Type از روی هدرهای فایل
    CFileHelper::removeDirectory
    حذف یک پوشه و همه فایلهای داخلش

  19. #219

    نقل قول: Yii vs Laravel

    اصلا بحث این که قراره عوض کنه نیست. تغییر بده و توسعه هم بده باز هم اشکالی نداره.ولی من خودم شخصا دوست دارم این تغییرات رو. اینایی هم که نوشتم نگفتم قابلیتهای لاراول هستش. قبل شما خودم اینا رو میدونستم. ولی به هر حال امکاناتی هستش که گذاشتن. شاید به نظر شما اضافی باشه ولی حداقلش برای من خوبه و ازشون استفاده میکنم. دل بخواه هستش بلاخره هم میشه استفاده کرد هم میشه نکرد. این اومده کار رو راحت تر کرده دست توش نبرده که
    مثلا:

    File::delete($file1, $file2, $file3);


    راحت تر از :

    foreach(array($file1, $file2, $file3) as $file) { unlink($file); }


    هستش ولی باز هم میگم هیچ ضروریتی به استفاده از این خصوصیات نیست

  20. #220

    نقل قول: Yii vs Laravel

    یه سوال. چطور میشه چند تا دستگیره با هم در Yii به ایونت ها نسبت داد. مستنداتی پیدا نکردم میشه راهنمایی کنید؟ البته
    منظورم ایونت هایی هست که قبل از ایجاد مدل باید اتچ بشند نه بعد از ساخته شدن
    آخرین ویرایش به وسیله tux-world : سه شنبه 27 اسفند 1392 در 10:51 صبح

  21. #221

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط tux-world مشاهده تاپیک
    اصلا بحث این که قراره عوض کنه نیست. تغییر بده و توسعه هم بده باز هم اشکالی نداره.ولی من خودم شخصا دوست دارم این تغییرات رو. اینایی هم که نوشتم نگفتم قابلیتهای لاراول هستش. قبل شما خودم اینا رو میدونستم. ولی به هر حال امکاناتی هستش که گذاشتن. شاید به نظر شما اضافی باشه ولی حداقلش برای من خوبه و ازشون استفاده میکنم. دل بخواه هستش بلاخره هم میشه استفاده کرد هم میشه نکرد. این اومده کار رو راحت تر کرده دست توش نبرده که
    مثلا:

    File::delete($file1, $file2, $file3);


    راحت تر از :

    foreach(array($file1, $file2, $file3) as $file) { unlink($file); }


    هستش ولی باز هم میگم هیچ ضروریتی به استفاده از این خصوصیات نیست
    ببینید، اینجور موارد سلیقه ای هست و در کل امتیاز خاصی محسوب نمیشه چون همونطور که شما به File::delete برای حذف چند فایل اشاره کردین که ساختار ساده تری داره، ساختارهایی هم مثل $values = require 'file1.php'; وجود داره که ساده تر از $values = File::getRequire('file1.php'); هست. درهرصورت بهتره توی این تاپیک دنبال قابلیتهای واقعی فریمورکها باشیم. چیزهایی مثل Eloquent لاراول و ActiveRecord در Yii منظورمه.

  22. #222

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط tux-world مشاهده تاپیک
    یه سوال. چطور میشه چند تا دستگیره با هم در Yii به ایونت ها نسبت داد. مستنداتی پیدا نکردم میشه راهنمایی کنید؟ البته
    منظورم ایونت هایی هست که قبل از ایجاد مدل باید اتچ بشند نه بعد از ساخته شدن

    میشه مثال بزنید؟ منظورتون رو متوجه نشدم. در هر حال لینکهای زیر رو یه نگاه بندازین:
    http://www.yiiframework.com/wiki/637...onbeginrequest
    http://www.yiiframework.com/wiki/44/behaviors-events

  23. #223

    نقل قول: Yii vs Laravel

    مثال:

    User::creating(function($user)
    {
    // some jobs
    });

    User::creating(function($user)
    {
    // some jobs
    });

    User::creating(function($user)
    {
    // some jobs
    });‬



    این کد نمونش در Yii به چه شکل هستش؟ تو اون لینکها موردی نبود

  24. #224

    نقل قول: Yii vs Laravel

    البته اینهایی که شما نوشتین، Behavior هست نه Event ولی درهرصورت، توی Yii به این شکل میشه کار کرد:

    class User extends CActiveRecord {
    public static function model($className=__CLASS__) {
    $model = parent::model($className);
    $model->onBeforeSave = 'func1';
    $model->onBeforeSave = 'func2';
    $model->onBeforeSave = 'func3';
    return $model;
    }

    private function func1() { ... }
    private function func2() { ... }
    private function func3() { ... }
    }
    آخرین ویرایش به وسیله MMSHFE : سه شنبه 05 فروردین 1393 در 22:39 عصر دلیل: اشتباه تایپی

  25. #225

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    در مورد دسترسی به فیلدهای user، تا اونجا که من میدونم، در yii باید کلاس CWebUser رو دستکاری کرد، ولی شما توی پست قبل این مورد رو ذکر نکردید، این هم متنی که خود گوانگ زو! نوشته

    By default, the expression Yii::app()->user returns a CWebUser application component which represents the information that are closely related with the current user. Some information can be persistent throughout the current user session. For example, CWebUser already comes with a name property that stores the username of the current user.
    In order to store more information, we need to modify the identity class used together with CWebUser. Each application may have one or several identity classes which are mainly responsible to provide ways of performing user authentication.


    Resource: http://www.yiiframework.com/wiki/6/h...-yii-app-user/


    مثلا اگر جدول user ما، فیلدهای به نام family, old, avatar , ... داشته باشه، شما چطور بهش از طریق Yii::app()->user دسترسی پیدا میکنید

    چه نیازی هست به اون فیلدها دسترسی داشت؟
    فرض رو بر این میگذاریم نیاز هست؟!
            Yii::app()->user->setState('avatar', $user->avatar);

    حالا هر جای برنامه میتونیم از طریق Yii::app()->user->avatar مقدارش رو بگیریم.

  26. #226

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    سیمفونی یکی از کارامدترین فریمورکهای موجوده، اوایل تاپیک هم گفته شد که بیش از 90 درصد کارها رو با هر فریمورک و حتی زبانی میشه انجام داد، شاید آیتم هایی که در انتخاب موثرند اینها باشند، کارایی، سرعت توسعه، کد قابل فهم تر و کوتاه تر، امکانات و در اخر سلیقه

    نظر من اینه که سیمفونی در عین کارایی و امکانات، سینتکس (البته منظور همون پیچیدگی هست) سخت تری نسبت به لاراول و حتی یی داره، لذا الان من سراغش نمیرم، شاید روزی باش کار کنم و ازش خوشم بیاد، در مقایسه هایی هم که تا به حال دیدم و خودم تست کردم، هسته اش بدون دستکاری کند تر از Yii و Laravel هست، به قول نیوتون (با دستکاری البته) لاراول و یی اگر در قله ها هستند، به این خاطره که بر روی دوش غول ها ایستاده اند.
    دوست عزیز این نکته رو بگم که خود لاراول بر اساس سیمفونی درست شده. لاراول به شکلی ساده شده سیمفونی هست و جاهایی که نیاز بوده رو به صورت خودکار کش کرده. کافیه شما کش کلی سیمفونی رو روشن کنید تا سرعتش از هر دو فریم ورک گفته شده بالاتر بره (البته در صورتی که از داکترین استفاده نکنید.)
    در عوض پیچیدگی هایی که میگید انعطاف پذیری و قدرت + مهندسی بودنش رفته بالا. نمونه انعطاف پذیری هم همین لاراول
    تنها فریم ورکی که میشه کلاْ همه چیز رو شخصی ساز کرد همین سیمفونی هست.

  27. #227

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط MMSHFE مشاهده تاپیک
    سیمفونی فریمورک خیلی خوب و قدرتمندیه و خیلی از فریمورکهای دیگه بخشهایی از خودشون رو مدیون اون هستن ولی دو مشکل لساسی داره که یکیش پرفورمنس پایینتر نسبت به بقیه و یکی دیگه هم سختگیریهایی هست که گاهی اوقات اعصاب برنامه نویس رو بهم میریزه تا جایی کع از خود PHP هم بعضاً سختگیرتر میشه. البته من با سختگیری قانونمند درجهت رعایت چهارچوب کاری موافقم ولی سیمفونی دیگه خیلی در این زمینه زیاده روی میکنه. بهرحال این تاپیک برای مقایسه Yii و لاراول هست و بهتره برای مقایسه یا معرفی سیمفونی تاپیک جداگانه ایجاد کنید.
    در مورد پرفورمنس بگم که توی نسخه ۲ خیلی عقب تر از بقیه فریم ورک ها نیست + این هم به دلیل قابلیت های زیادش هست که این مشکلم با کش کدهای برنامه حل میشه که در این حالت سرعت از دو فریم ورک گفته شده بالاتر میره.
    شما میتونید هر جور دوست دارید برنامه نویسی کنید. دلیلی نداره از سخت گیری هاش پیروی کنید. البته خود من کامل پیروی میکنم چون برنامه قابلیت استفاده مجدد و نگهداریش بالاتر میره.

  28. #228
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    اراک
    پست
    409

    نقل قول: Yii vs Laravel

    این تاپیک مقایسه لاراول و یی هست، بحث سیمفونی نیست که شما پست میزنی!
    نقل قول نوشته شده توسط bestirani2 مشاهده تاپیک
    چه نیازی هست به اون فیلدها دسترسی داشت؟
    اون فیلدها که برای قشنگی نیست، برای استفاده هست، در لاراول مدل user کاربر فعلی اوتوماتیک بار میشه و فیلد ها و ریلیشن ها و متدها و ... همگی از طریق Auth::user در دسترس هست
    نیازی هم به تک تک تعریف کردن عضوها مثل کد شما نیست

    نقل قول نوشته شده توسط bestirani2 مشاهده تاپیک
    دوست عزیز این نکته رو بگم که خود لاراول بر اساس سیمفونی درست شده. لاراول به شکلی ساده شده سیمفونی هست و جاهایی که نیاز بوده رو به صورت خودکار کش کرده. کافیه شما کش کلی سیمفونی رو روشن کنید تا سرعتش از هر دو فریم ورک گفته شده بالاتر بره (البته در صورتی که از داکترین استفاده نکنید.)
    در عوض پیچیدگی هایی که میگید انعطاف پذیری و قدرت + مهندسی بودنش رفته بالا. نمونه انعطاف پذیری هم همین لاراول
    تنها فریم ورکی که میشه کلاْ همه چیز رو شخصی ساز کرد همین سیمفونی هست.
    نقل قول نوشته شده توسط bestirani2 مشاهده تاپیک
    در مورد پرفورمنس بگم که توی نسخه ۲ خیلی عقب تر از بقیه فریم ورک ها نیست + این هم به دلیل قابلیت های زیادش هست که این مشکلم با کش کدهای برنامه حل میشه که در این حالت سرعت از دو فریم ورک گفته شده بالاتر میره.
    شما میتونید هر جور دوست دارید برنامه نویسی کنید. دلیلی نداره از سخت گیری هاش پیروی کنید. البته خود من کامل پیروی میکنم چون برنامه قابلیت استفاده مجدد و نگهداریش بالاتر میره.
    منظور کارایی خود فریمورک بود، کسی از کش صحبت نکرد

  29. #229

    نقل قول: Yii vs Laravel

    درمورد اینکه توی این تاپیک درمورد سیمفونی صحبت نکنیم موافقم (البته نه با این لحن - یکم بنظرم خشن اومد و میشد ملایمتر هم تذکر بدیم). درخصوص اینکه در لاراول مدل کاربر جاری بطور خودکار بارگذاری میشه هم راستش شخصاً زیاد موافق این قضیه نیستم چون بحث Authentication کاربر جاری و دسترسی به مدل کاربر جاری بنظرم دو موضوع جداگانه هستن و کلاس Authentication وظیفه مدیریت ورود و خروج و اعتبارسنجی و یکسری کارهای اینچنین رو برعهده داره و مدل کاربر همه جا مورد نیاز نیست که بخوایم بارگذاریش کنیم. شاید یکی از دلایل بهینه تر بودن Yii توی Benchmarkها هم همین مسئله باشه که تا وقتی نیاز نیست، هیچ چیز غیر ضروری بطور خودکار بارگذاری نمیشه. هرجا هم لازم بود به راحتی میشه با یک خط کد مدل کاربر رو بدست آورد:
    $user = User::model()->findByPk(Yii::app()->user->id);

  30. #230

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    اون فیلدها که برای قشنگی نیست، برای استفاده هست، در لاراول مدل user کاربر فعلی اوتوماتیک بار میشه و فیلد ها و ریلیشن ها و متدها و ... همگی از طریق Auth::user در دسترس هست
    نیازی هم به تک تک تعریف کردن عضوها مثل کد شما نیست
    نیازی به تعریف تک تک فیلدها نیست. مثال:

    // mass assignment
    Yii::app()->user->setState('attributes', $user->attributes);
    // example of usage
    echo Yii::app()->user->attributes['family'];

  31. #231

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    این تاپیک مقایسه لاراول و یی هست، بحث سیمفونی نیست که شما پست میزنی!
    توجه داشته باشید که من در جواب پست شما دو عزیز که راجب سیمفونی بود صحبت کردم و شروع با کس دیگه ای بوده.
    دوم اینکه لاراول از سیمفونی قدرت گرفته پس بد نیست بحث سیمفونی هم باشه

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    منظور کارایی خود فریمورک بود، کسی از کش صحبت نکرد
    منظور من کش خود فریم ورک بود نه قسمت خاصی. لاراول هم همین کار رو به صورت توکار میکنه.

  32. #232

    نقل قول: Yii vs Laravel

    $contents = File::getRemote($url);
    از چه نسخه ای استفاد میکنید چون توی سایتش چنین دستوری رو توی لاراول ندیدم! لینک
    توی یکی دو نسخه پیش این تابع حذف شده. خود تیلور گفته کاربردی نداشته. ولی خب من برای دریافت محتوای فایل api گوگل‌مپ و ذخیره روی سرور خودم از این تابع استفاده میکردم. بعد از آپدیت لاراول، دیدم دیگه کار نمیکنه و خطا میده. تابع File::get هم کار نکرد (فک کنم مشکلم این بود که کلاً کارش لوکال بود یا که من گیج بودم اشتباه کردم) و از این رو از تابع file_get_contents خود پی‌اچ‌پی استفاده کردم.

    منم فقط می خوام نظرمو بگم ...
    من قبلا با yii کار کردم .... فریم ورک محشریه . از همه نظر عالیه هیچ شکی در اون نیست ... ولی مشکلی که داشت این بود که من کلا php رو با yii یاد گرفتم .. و بعد از یک مدتی به خاطر دستورات پیچیده بودن دستورات و کلا ساختار برای من ، کلا از php کشیدم بیرون و رفتم سراغ node تا حدود این یک سال که با فریم ورک sails کار کردم که واقعاااا عالی بود ... بعد خاطر دور نبودن از php دنبال یک فریم ورک برای کار بودم که فهمیدم laravel از نظر ساختار و حتی کد زدن چون ساختار جفتشون شبیه rails بود ....
    و توی این دو هفته ای که اومدم سراغ laravel واقعاااا دیدم برای من خیلی خیلی خیلی بهتر از yii بوده...
    در کل قابلیت های جفتشون یکیه ... بعضی جاها هم یک سری اختلافاتی هست که توی پروژه های بزرگ مشخص می شه ... و چیزی که بین این ها فاصله و رقابت ایجاد می کنه به نظرم فقط راحتی فرد در استفاده است ... که برای بنده به شخصه laravel خیلی قابل فهم تر بود ... بعضی از برنامه نویسان اینقدر مسائل پیچیده حل کردن که ماهیچه های مغر عادت کرده به پیچیده جل کردن مسئله ها ( به قول نویسنده کتابی که می خوندم ) بعضی ها هم مثل ما دنبال سریع و تمیز تر شدن هر چه بیشتر کد ها .....
    هر کسی با یکی راحته و گرنه قابلیت ها تقریبا یکی است ....
    استادان عزیز نظرمو گفتم ... نتوپید به ما .... همه جای متنم گفتم : به نظر من ، من فکر می کنم و.....


    پیش‌نویس: چطوری امیر؟ :دی
    با امیر موافقم. من فریم‌ورکای مختلفی رو تو زبون‌های مختلف سرک کشیدم. هیچ‌کدوم به قشنگی لاراول نبودند و نیستند. من تو حفظ کردن کلمات و عبارات عجیب و غریب ضعیفم. اسامی توابع و دستورات Yii اونقدر برام پیچیده بودن که وقتی بهش سر زدم، بیخیالش شدم.


    در مورد پرفرمنس و بازدهی هم خب.. من یه سری بنچمارک بی طرف دیدم که توشون لاراول از یی سریعتر بود. یعنی بعد از فالکن و کد ایگنایتر و کُوهانا و یکی دو تا میکرو فریمورک دیگه، لاراول بودش. بعد از لاراول yii بود و اون پایین مایینا، زند و سیمفونی و سایر شرکا حضور داشتند. درسته که بیس لاراول سیمفونی هستش، ولی طبق بنچمارک‌های موجود، لاراول دو برابر سیمفونی بازدهی داره.

  33. #233

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط mamal72 مشاهده تاپیک
    در مورد پرفرمنس و بازدهی هم خب.. من یه سری بنچمارک بی طرف دیدم که توشون لاراول از یی سریعتر بود. یعنی بعد از فالکن و کد ایگنایتر و کُوهانا و یکی دو تا میکرو فریمورک دیگه، لاراول بودش. بعد از لاراول yii بود و اون پایین مایینا، زند و سیمفونی و سایر شرکا حضور داشتند. درسته که بیس لاراول سیمفونی هستش، ولی طبق بنچمارک‌های موجود، لاراول دو برابر سیمفونی بازدهی داره.
    اگه میشه لینک این پنچمارکهای بیطرف که گفتن لاراول سریعتر از Yii بوده رو بگذارین تا بیطرفیشون رو بررسی کنیم.

  34. #234

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط bestirani2 مشاهده تاپیک
    توجه داشته باشید که من در جواب پست شما دو عزیز که راجب سیمفونی بود صحبت کردم و شروع با کس دیگه ای بوده.
    بحث رو من شروع کردم اما منظورم بد بودن سیمفونی نبود. منظورم این بود که فریمورکی مثل لاراول که اکثر قدرتش رو از یک فریمورک دیگه گرفته، نمیشه ازش انتظار تفاوت آنچنانی در Performance با فریمورک والدش داشته باشیم. ضمناً اینکه گفتین سیمفونی با فعال کردن کش سرعتش از Yii هم بیشتر میشه، باید بگم درصورتی که کش Yii غیرفعال باشه و از APC و Yiilite استفاده نکنیم، حرف شما صحیحه ولی اگه این دو مورد رو فعال کنیم و انجام بدیم، اونوقت دیگه سیمفونی و لاراول سرعتشون خیلی کمتر از Yii خواهد شد.

  35. #235

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط MMSHFE مشاهده تاپیک
    بحث رو من شروع کردم اما منظورم بد بودن سیمفونی نبود. منظورم این بود که فریمورکی مثل لاراول که اکثر قدرتش رو از یک فریمورک دیگه گرفته، نمیشه ازش انتظار تفاوت آنچنانی در Performance با فریمورک والدش داشته باشیم. ضمناً اینکه گفتین سیمفونی با فعال کردن کش سرعتش از Yii هم بیشتر میشه، باید بگم درصورتی که کش Yii غیرفعال باشه و از APC و Yiilite استفاده نکنیم، حرف شما صحیحه ولی اگه این دو مورد رو فعال کنیم و انجام بدیم، اونوقت دیگه سیمفونی و لاراول سرعتشون خیلی کمتر از Yii خواهد شد.
    من خودم با هر دو فریم ورک ورک کار کردم. سایت های بزرگی هم با YII زدم. تستی هم که بنده خودم گرفتم سیمفونی سرعتش با apc خیلی به فالکون نزدیک شد و از Yii با فعال YiiLite و بودن APC بیشتر بود. بازم تست میکنم که خدایی نکرده اشتباه نکرده باشم. البته اینم بگم که توی تست های انجام شده از Propel استفاده کردم که اونم اکتیو رکورد حساب میشه و سرعتش خیلی بیشتر از Doctrine هست. البته یه مزیت بزرگ YII توابع کش خوبی هست که داره که توی سیمفونی معادلش به صورت پیشفرض موجود نیست یا حداقل من ندیدم. مزیت دیگه YII پشتیبانی از وب ۲ هست که توی سیمفونی موجود نیست. نمیدونم واسه لاراول این مورد رو اضافه کردند یا نه ولی من واسه خودم توی سیمفونی اضافه کردم. در کل سیمفونی از نظر من برای پروژه های بزرگ مناسب هست و پروژه های متوسط و کوچکتر، YII‌ انتخاب مناسبتری هست.

    پینوشت: مجدد بررسی کردم. YII 1 سریعتر بود ولی Yii 2 کندتر بود که فعلا نمیشه به دلیل الفا بودن این مورد رو حساب کنیم. البته این اختلاف برای مثال معروف Hello World بود و توی برنامه واقعی اختلاف بسیار ناچیز بود.
    آخرین ویرایش به وسیله bestirani2 : چهارشنبه 28 اسفند 1392 در 17:45 عصر

  36. #236

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط MMSHFE مشاهده تاپیک
    اگه میشه لینک این پنچمارکهای بیطرف که گفتن لاراول سریعتر از Yii بوده رو بگذارین تا بیطرفیشون رو بررسی کنیم.
    من چند تایی قبلاً‌ دیده بودم که با یه سری کارا سریعتر شده بود. در حالت کلی معمولاً یی سریعتره ولی توی این یکی این طور نبود. البته این بنچمارک کاملی نیست. به هر حال، این لینک:

    http://systemsarchitect.net/performa...hp-frameworks/

  37. #237

    نقل قول: Yii vs Laravel

    خوب درهرصورت چیزی که مشخصه اینه که این بنچمارک کامل و دقیق نیست چون از Skeleton هر فریمورک برای تست استفاده کرده و امکانات پروژه Skeleton یا همون Scaffolding که هر فریمورک میسازه با فریمورک دیگه متفاوته و درنتیجه تفاوت در نتیجه ها پیش میاد که البته خودش هم اشاره کرده. ضمناً فقط به RPS (تعداد درخواست در ثانیه) اشاره کرده و برای مثال نگفته چند مورد با موفقیت پردازش شده و چند مورد Drop شده و مصرف حافظه چطور بوده و...

  38. #238
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    اراک
    پست
    409

    نقل قول: Yii vs Laravel

    خوب عید همگی پیشاپیش مبارک باشه
    انشالله امسال، سال گشایش گره های کشور و مردم باشه

    من از کلاس های Request و Response و Cookie و Session و ... فعلا میگذرم
    اینها هم همون ساختار و سینتکس کوتاه رو که تا به حال دیدید، دارند

    بریم سراغ template
    لاراول از موتور blade که داخلی خودش هست برای templating استفاده میکنه
    کم حجم، سریع، و ساده
    در حالت معمول در بلید، layout در ویو مشخص میشه و میتونه در کنترلر هم مشخص بشه
    همچنین layout میتونه شامل چند قطعه باشه که هر کدام از طریق ویو قابل مقدار دهی هستند
    محتوای هر قطعه میتونه در داخل ویو، append یا prepend و یا replace بشه
    بلید از ویو های تو در تو و include کردن ویو ها هم پشتیبانی میکنه
    بلید همچنین از ساختارهای کنترلی مثل if و foreach , ... برای کوتاه کردن کدها، پشتیبانی میکنه
    از همه مهمتر به راحتی قابل توسعه و گسترش هست
    ضمنا ویو ها و لیوت های پردازش شده اوتوماتیک کش شده و در صورت عدم تغییر، دوباره پردازش نمیشند


    ساختار یک layout

    <html>
    <body>
    @section('sidebar')
    This is the master sidebar.
    @show

    <div class="container">
    @yield('content')
    </div>
    </body>
    </html>


    استفاده از layout و مقداردهی قطعه ها
    کد زیر از لیوت master واقع در پوشه layouts استفاده میکنه
    در قطعه sidebar اول مقدار پیشفرض خود لیوت و بعد مقدار جدید رو قرار میده
    در قطعه content هم مقدار مورد نظر قرار داده میشه

    @extends('layouts.master')

    @section('sidebar')
    @parent

    <p>This is appended to the master sidebar.</p>
    @stop

    @section('content')
    <p>This is my body content.</p>
    @stop


    مابقی در پست های بعد

  39. #239

    نقل قول: Yii vs Laravel

    خوب Yii از این نظر خیلی منعطف تر و بهتر عمل کرده (بنظر من). بطور پیشفرض توی Yii نسخه 1.1 از BluePrint CSS و توی نسخه 2 از Bootstrap برای قالب استفاده شده و موتور قالب خاصی به کار نرفته هرچند به راحتی میتونه با Smarty و RainTPL و Twig و... ادغام بشه. اما ساختار فایلهای View در Yii به این صورته:
    1- تم (Theme)
    توی فایل تنظیمات میتونیم تم رو انتخاب کنیم (توی Yii هر تم میتونه فایلهای ویوی خاص خودش رو داشته باشه و به راحتی با تغییر یک پارامتر توی فایل تنظیمات، میشه تم رو عوض کرد) :

    return array(
    ...
    'theme'=>'mytheme',
    ...
    );

    اگه تم تعریف کنیم، فایلهای ویو از مسیر webroot/themes/mytheme/views خونده میشه (که mytheme اسم تمی هست که توی تنظیمات مشخص کردین) وگرنه از مسیر webroot/protected/views این فایلها مورد دستیابی قرار میگیره. ضمناً هر تم میتونه حاوی فایلهای CSS و JS و... مختص خودش باشه.
    2- فایلهای Layout
    توی هر کنترلر (یا کنترلر والد یعنی protected/components/Controller.php) میتونیم یک فیلد public بگذاریم که مشخص میکنه از چه layout خاصی باید استفاده بشه:

    public $layout = '//layouts/layout1';
    // or
    public $layout = '/layouts/layout1';

    اینجا اگه از // استفاده بشه، دنبال پوشه layouts توی مسیر ریشه تم یا مسیر ریشه views میگرده ولی اگه از / استفاده کنیم، برای هر ماژول میتونیم پوشه views داخلش بسازیم و layout مخصوص همون ماژول رو تولید کنیم و این یعنی هر ماژول میتونه به شکل متفاوتی ظاهر بشه (حتی با تم مختلف - برای مثال، سایت اصلی با یک قالب و بخش مدیریت با یک قالب دیگه ظاهر بشه و هر زمان خواستیم، قالب هرکدوم رو بطور جداگانه بتونیم تغییر بدیم)
    ضمناً امکان تنظیم کردن layout بصورت جداگانه برای هر اکشن هم وجود داره. مثال:

    class UserController extends Controller {
    public $layout = '//layouts/layout1';
    public function actionIndex() {
    // uses layout1
    }
    public function actionView($id) {
    $this->layout = '//layouts/layout2';
    // uses layout2
    }
    }

    ساختار یک Layout نمونه:
    کد HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="language" content="en" />
    
        <!-- blueprint CSS framework -->
        <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/screen.css" media="screen, projection" />
        <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/print.css" media="print" />
        <!--[if lt IE 8]>
        <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/ie.css" media="screen, projection" />
        <![endif]-->
    
        <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/main.css" />
        <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/form.css" />
    
        <title><?php echo CHtml::encode($this->pageTitle); ?></title>
    </head>
    
    <body>
    
    <div class="container" id="page">
    
        <div id="header"></div><!-- header image is embeded into the #header declaration in main.css -->
    
        <div id="mainmenu">
            <?php $this->widget('zii.widgets.CMenu',array(
                'items'=>array(
                    array('label'=>'Projects', 'url'=>array('/project')),
                    array('label'=>'About', 'url'=>array('/site/page', 'view'=>'about')),
                    array('label'=>'Contact', 'url'=>array('/site/contact')),
                    array('label'=>'Admin', 'url'=>array('/admin/default/index'), 'visible'=>Yii::app()->user->checkAccess("admin")),
                    array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),
                    array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)
                ),
            )); ?>
        </div><!-- mainmenu -->
        <?php if(isset($this->breadcrumbs)):?>
            <?php $this->widget('zii.widgets.CBreadcrumbs', array(
                'links'=>$this->breadcrumbs,
            )); ?><!-- breadcrumbs -->
        <?php endif?>
    
        <?php echo $content; ?>
    
        <div class="clear"></div>
    
        <div id="footer">
            Copyright &copy; <?php echo date('Y'); ?> by TrackStar.<br/>
            All Rights Reserved.<br/>
            <?php echo Yii::powered(); ?>
        </div><!-- footer -->
    
    </div><!-- page -->
    
    </body>
    </html>
    کمی بنظر ممکنه پیچیده بیاد ولی دقت کنید: این یک فایل HTML ساده است! یعنی فایلهای Layout در Yii یک قالب ساده HTML هستن که محتوای خروجی viewها رو میتونید در محل دلخواه با دستور زیر نمایش بدین:
    <?php echo $content; ?>

    3- فایلهای View
    فایلهای ویو توی پوشه views (در مسیر تم یا مسیر پیشفرض ویوها) قرار میگیرن و وقتی تم تعریف کنیم، Yii اول توی پوشه views از مسیر تم دنبالش میگرده و اگه پیدا نکرد، توی پوشه views اصلی (داخل protected) دنبالش میگرده. ساختار یک یک فایل view نمونه:
    کد HTML:
    <?php $this->pageTitle=Yii::app()->name; ?>
    
    <h1>Welcome to <i><?php echo CHtml::encode(Yii::app()->name); ?></i></h1>
    
    <?php if(!Yii::app()->user->isGuest):?>
    <p>
       You last logged in on <?php echo Yii::app()->user->lastLogin; ?>.    
    </p>
    <?php endif;?>
    اگه دقت کنید، این هم یک فایل HTML ساده است. حالا چطوری این رو باید صدا بزنیم؟ فرض کنید توی کنترلر SiteController چنین دستوری داریم:
    $this->render('index');

    خوب این کد ساده باعث میشه دنبال فایل index.php (همون ویوی بالا) توی پوشه site (همنام با کنترلر) در پوشه views (اول توی پوشه تم و اگه نبود، توی پوشه views اصلی) بگرده و اون رو پردازش کنه. کل خروجی این ویو تحت عنوان متغیر content$ به فایل layout جاری (در اینجا layout1) داده میشه که در مکان دلخواه با دستوری که گفتیم (;echo $content) نشونش بده.
    4- استفاده فایلهای Layout از هم (Layoutهای واسط)
    فرض کنید من چند Layout فرعی دارم (مثلاً یک ستونه و دو ستونه و...) که اینها Body صفحه من رو میسازن و من میخوام همه اینها توی یک Layout کلی و بزرگتر (شامل Header و Footer و...) قرار بگیره. کافیه توی Layoutهای فرعی اینطوری کار کنم:

    <?php $this->beginContent('//layouts/main'); ?>
    <div id="content">
    <?php echo $content; ?>
    </div><!-- content -->
    <?php $this->endContent(); ?>

    در اینجا اگه این Layout به اسم فرضی views/layouts/column1 ذخیره شده باشه و منبیام توی یک کنترلر بگم:
    public $layout = '//layouts/column1';

    باعث میشه وقتی میگم (...)this->render$ هر فایل view که برای رندر انتخاب کردم، خروجی خودش رو تحت عنوان content$ به column1 بده و این layout هم اون محتوا رو توی div با "id="content میگذاره و باز خروجی خودش رو تحت عنوان متغیر content$ به layout اصلی یعنی //layouts/main یعنی فایل views/layouts/main.php میده که میتونه در مکان مناسب (بین Header و Footer) اون رو echo کنه.
    5- ارتباط بین Viewها با هم
    توی Yii علاوه بر دستور render دستورات دیگری هم در اختیار کنترلر هست. برای مثال:
    renderPartial (یک ویو رو رندر میکنه ولی مستقیماً خروجی رو چاپ میکنه و تحویل Layout نمیده)
    renderText (یک متن ساده رو رندر میکنه و تحویل Layout میده - برای مواقعی که میخواین یک متن ساده رو توی قالب صفحه نشون کاربر بدین و نمیخواین فایل View جداگانه براش بسازین).
    ...
    اما کاربرد اینها چه ارتباطی به رابطه Viewها با هم داره؟ ربطش اینه که توی Viewهای در Yii با کمک متغیر this$ به شئ کنترلر دسترسی داریم و مثلاً توی یک ویو (فرضاً user/index) میتونیم این دستور رو بنویسیم:
    $this->renderPartial('user/login');

    که باعث میشه فرم لاگین (محتوای views/site/login.php) توی صفحه index (محتوای views/site/index.php) هم ظاهر بشه.
    5- ارسال پارامتر به ویو توسط کنترلر
    توی Yii میشه به دو روش برای View پارامتر فرستاد.
    روش اول دسترسی مستقیم به فیلدهای کنترلر هست:

    // in controller action
    $this->x = 'ali';
    $this->render('index');

    // in index.php view file
    echo $this->x; // output: ali

    روش دوم، تعریف پارامتر مستقیماً برای خود View هست:

    // in controller action
    $this->render('index', array('x' => 'ali'));

    // in index.php view file
    echo $x; // output: ali

    یعنی درواقع عناصر آرایه ای که اونطرف میفرستیم، اینطرف تبدیل به متغیرهای مستقل میشن.
    -----
    شاید بگین هنوز به این چیزها نرسیده بودیم و باز من جلو جلو جواب دادم ولی خواستم همین اول کار بگم وارد این مبحث نشین چون لاراول رسماً کم میاره. برای مثال معادل همین امکانات رو خوشحال میشم بدونم لاراول چطوری پیاده سازی میکنه.

  40. #240

    نقل قول: Yii vs Laravel

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    لاراول از موتور blade که داخلی خودش هست برای templating استفاده میکنه
    از حق نگذریم طراحی ویو با php اصلا جالب نیست و خلاف ایده ال های طراحی هست ولی اکستشن های زیادی برای Yii هم وجود داره که میتونه یه template رو برای Yii بیاره، به بیان دیگه Yii امکان پیاده سازی و استفاده از Template رو قرار داده و توی نسخه 2 هم به صورت پیشفرض دو موتور Twig و Smarty رو قرار داده. موتور blade هم میشه گفت تقلید کاملی از موتور Razor هست و ابتکار خاصی نیست.

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    در حالت معمول در بلید، layout در ویو مشخص میشه و میتونه در کنترلر هم مشخص بشه
    همچنین layout میتونه شامل چند قطعه باشه که هر کدام از طریق ویو قابل مقدار دهی هستند
    اینها هم کاملا عادی هست و فکر نمی کنم فریم ورکی باشه که این مورد رو نداشته باشه.

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    محتوای هر قطعه میتونه در داخل ویو، append یا prepend و یا replace بشه
    منظورتون احتمالا Section یا همون Block موتور Twig هست، Yii هم این عملیات رو با clips پیاده سازی میکنه.

    نقل قول نوشته شده توسط rezakho مشاهده تاپیک
    ضمنا ویو ها و لیوت های پردازش شده اوتوماتیک کش شده و در صورت عدم تغییر، دوباره پردازش نمیشند
    چون در Yii به صورت php کد میشه نیازی به کش نیست ولی از موتور های دیگه استفاده بشه امکان کش شدن هم هست.

    در کل تا اینجا به نظرم دو فریم ورک برابرند ولی Yii چون از Theme پشتیبانی میکنه در این بخش پیروز میدان هست.

صفحه 6 از 9 اولاول ... 45678 ... آخرآخر

تاپیک های مشابه

  1. حرفه ای: ایجاد بخش Yii Framework
    نوشته شده توسط sanay_esh در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 1
    آخرین پست: شنبه 20 آبان 1391, 23:32 عصر
  2. آموزش: Yii Framework - قسمت دوم
    نوشته شده توسط milanFan در بخش PHP
    پاسخ: 2
    آخرین پست: یک شنبه 21 خرداد 1391, 13:31 عصر
  3. Yii Framework
    نوشته شده توسط JavaDeveloper در بخش PHP
    پاسخ: 3
    آخرین پست: پنج شنبه 10 فروردین 1391, 18:32 عصر
  4. حرفه ای: Yii Framework راه اندازی UnitPHP جهت تست Unit ها
    نوشته شده توسط ostovarit در بخش PHP
    پاسخ: 0
    آخرین پست: جمعه 20 خرداد 1390, 12:38 عصر
  5. Yii Framework چیست؟
    نوشته شده توسط ostovarit در بخش توسعه وب (Web Development)
    پاسخ: 0
    آخرین پست: جمعه 20 خرداد 1390, 12:34 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •