/
  • سیمفونی چیست؟ آشنایی با فریم ورک قدرتمند symfony

  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 5
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی سیمفونی چیست؟ آشنایی با فریم ورک قدرتمند symfony
    نویسنده پیام
    esmahdi آفلاین
    عضو
    ***

    ارسال‌ها: 116
    تاریخ عضویت: ۱۳۹۰ مهر ۱۴
    اعتبار: 0
    تشکرها : 34
    ( 21 تشکر در 10 ارسال )
    ارسال: #1
    سیمفونی چیست؟ آشنایی با فریم ورک قدرتمند symfony
    استفاده از چارچوب های برنامه نویسی (فریم ورک) در زبان های تحت وب رواج بسیاری یافته است. در زبان php نیز فریم ورک های قدرتمند بسیاری در سال های گذشته شروع به کار کرده اند که برخی واقعا موفق بوده اند.
    مطرح ترین فریم ورک ها عبارتند از:
    • zend
    • symfony
    • codeigniter
    • cakephp
    • yii
    • laravel
    • agavi
    • و...
    مورد بحث ما در این مقاله symfony است که قصدی در مقایسه اون با سایر فریم ورک ها ندارم، و بخاطر چندین سال استفاده از اون مایل بودم این سلسله مطالب رو آماده کنم.
    این فریم ورک توسط شرکت ها و در محصولات بزرگی استفاده می شود. برخی از استفاده کنندگان این فریم ورک عبارتند از:
    • drupal
    • PIWIK
    • OROCRM
    • Laravel
    • phpBB
    • eZ Publish
    • Yahoo
    به عنوان مثال Laravel خود به تنهایی فریم ورک قدرتمند و بزرگی است که در بخش هایی از برخی از امکانات symfony استفاده می کند. حتی zend framework که بزرگترین فریم ورک موجود برای زبان php است و توسط شرکت توسعه دهنده php یعنی شرکت zend توسعه داده می شود به پیشنهاد توسعه دهندگان اصلی خود از بخشی از سیمفونی مانند Doctrine بهره می برد.
    همان طور که متوجه شدید در واقع symfony مجموعه ای از library هایی است که هرکدام وظیفه مشخصی رو انجام می دهند. به همین خاطر می شود فقط از برخی از کتابخانه های symfony استفاده کرد.
    فریم ورک های مطرح php اساسا برای کار خود از مدل mvc برای توسعه استفاده می کنند. mvc یک معماری نرم افزاری است که از حروف ابتدایی کلمات (model, view, control) تشکیل می شود. هدف اصلی این مدل نظم و سرعت بخشیدن به کار توسعه برنامه است. مدل mvc برای اولین بار در سال 1979 معرفی شد.
    قبل از توضیح مبحث mvc لازم بذکر است که این نکته را مطرح کنیم که از توضیحات فنی را گذرا بخوانید، در آینده وقتی به صورت عملی با طرز کار یک چارچوب مبتنی با mvc آشنا شوید این مدل برایتان قابل فهم خواهد بود.
    اجزای تشکیل دهنده mvc به نحو زیر معرفی می گردند:
    1. model (مدل در mvc): این قسمت مسولیت کنش های پایگاه داده را برعهده دارد، داده ها قبل از ذخیره در دیتابیس ابتدا تبدیل به یک شی می شوند و پس از اعمال تغییرات لازم و یا اعتبار سنجی های لازم در دیتابیس ذخیره می شوند. در هنگام فراخوانی نیز داده ها به شی مورد نظر تبدیل می شوند و پس از تغییرات لازم به بخش نمایشگر و یا view تحویل داده می شوند.
    2. view (نمایشگر در mvc): این بخش مسولیت آماده سازی واسط کاربری برنامه (user interface) را بر عهده دارد. بخش view در معماری mvc با استفاده از بخش model آماده می شود. به این صورت که داده ها را بشکل شی از model دریافت می کند و به شکلی که برنامه نویس در view مشخص کند به نمایش در می آید.
    3. controller (کنترلر در mvc): این بخش مدیریت درخواست ها را برعهده دارد. ارتباط بین view و model بوسیله controller انجام می پذیرد.

    مقاله ای کامل در مورد mvc در آینده در سایت قرار خواهد گرفت.
    چارچوب کلی کار فریم ورک symfony بر اساس mvc به همین شکلی است که در بالا توضیح داده شد. البته پیاده سازی مدل mvc هیچ گاه دقیقا به این سادگی نبوده است و مقداری پیچیده تر است.
    Symfony به صورت خلاصه از قسمت های زیر تشکیل شده است:
    1. routing و یا مسیر یابی: این بخش مسولیت مسیریابی و انتخاب controller مختص هر وظیفه را دارد. مثلا در routing مشخص می کنیم که اگر کاربر در مرورگر خود آدرس /aboutus را به منظور دستیابی به صفحه "درباره ما" درخواست داد، باید این درخواست به controller مخصوص نمایش صفحه aboutus رجوع داده شود.
    2. entity: این بخش مسولیت سرو سامان بخشیدن به ارتباطات دیتابیس را بر عهده دارد. مثلا در این بخش روابط موجود بین جدول های بانک اطلاعاتی مشخص می شود. در این بخش نام هر فیلد، محدودیت های نوع و طول آن ها و امور دیگر مشخص می شود.
    3. view: در این بخش فایل های مربوط به نمایش اطلاعات با هم جمع شده اند. البته این بخش فقط حاوی اسکلت بندی بخش نمایش است، چون داده ها باید از دیتابیس دریافت، تبدیل به شی و در این بخش استفاده شوند.
    4. controller: اصلی ترین بخش هر برنامه ای در symfony همین بخش است. routing بر اساس ورودی، controller خاص را انتخاب می کند، از این به بعد کل وظایف با controller است و کار با routing تمام می شود. Controller پس از دریافت ورودی ها و انجام پردازش های مورد نظر و یا حتی دریافت اطلاعات از model خروجی مناسب را برای نمایش آماده و نتیجه را به کاربر نمایش می دهد.
    5. form: این بخش فرم های مورد استفاده در برنامه را ذخیره می کند. البته استفاده از این بخش و یا حتی بخش view اجباری نیست ولی کنار گذاشتن آن ها با ساده سازی فرایند ها و هدف اصلی استفاده از فریم ورک منافات دارد.

    فایل بندی فریم ورک سیمفونی به شکل زیر است:
    کد:
    app
         -> cache
         -> config
         -> logs
         -> resources
    src
    vendor
    web
    پوشه app متعلق به فایل های پیکربندی اصلی فریم ورک است. src متعلق به فایل های پروژه برنامه ای است که می نویسیم. vendor متعلق به فایل های library و کلاس های پایه symfony است. پوشه web فایل های اضافی مانند css ها، js ها و عکس ها را شامل می شود.
    برخی از فایل های موجود در پوشه app اهمیت بیشتری دارند. مانند فایل های زیر:
    کد:
    app/AppKernel.php
    app/config/config.yml
    app/config/routing.yml

    دوستان محترم هدف من از درج این آموزش مقایسه سیمفونی با دیگر فریم ورک ها نیست و فقط دوست دارم اندک اطلاعاتم رو در این زمینه منتشر کنم. (سپاس گذارم)
    (آخرین ویرایش در این ارسال: ۱۳۹۴ شهريور ۱۹ ۰۱:۰۴ عصر، توسط Y.P.Y.)
    ۱۳۹۴ شهريور ۶ ۰۸:۲۶ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : behnamy Muhammad-Ali shgninc molana Goback Y.P.Y sara147
    shgninc آفلاین
    سید سجاد شاهچراغیان
    ***

    ارسال‌ها: 1,493
    تاریخ عضویت: ۱۳۸۹ خرداد ۱۹
    اعتبار: 32
    تشکرها : 1402
    ( 666 تشکر در 504 ارسال )
    ارسال: #2
    RE: سیمفونی چیست؟ آشنایی با فریم ورک قدرتمند symfony (قسمت اول)
    خیلی خوبه، ادامه بدید. بنده هم مشتاقم درباره این فریمورک بیشتر بدونم.Smile
    __________________________________________________________________________
    سالهــــا مـــــى گــــــذرد، حادثه ها مى آید
    انتظـــــار فـــــــرج از نیمـــــه خــــــرداد کشم

    [تصویر:  ShowPicture.aspx?ID=52750d12-5d92-4286-9...height=100]
    ۱۳۹۴ شهريور ۷ ۰۸:۲۸ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    esmahdi آفلاین
    عضو
    ***

    ارسال‌ها: 116
    تاریخ عضویت: ۱۳۹۰ مهر ۱۴
    اعتبار: 0
    تشکرها : 34
    ( 21 تشکر در 10 ارسال )
    ارسال: #3
    RE: سیمفونی چیست؟ آشنایی با فریم ورک قدرتمند symfony (قسمت اول)
    سیمفونی چیست؟ آشنایی با فریم ورک قدرتمند symfony (قسمت دوم)
    سیمفونی توسط شرکت sensiolab پشتیبانی می شود. sensiolab شرکت بسیار موفقی است و محصولات تجاری بسیاری تولید کرده است. این شرکت مدارک اختصاصی و معتبری ارائه می دهد که در بین متخصصان این رشته معروف و شناخته شده اند.
    در قسمت اول از آموزشمون به موارد زیر پرداختیم:
    • معرفی فریم ورک های معروف
    • معرفی شرکت ها و محصولاتی که از symfony استفاده کرده اند
    • معرفی mvc
    • پیاده سازی mvc در symfony
    • فایل بندی فریم ورک symfony
    در این قسمت از آموزش سیمفونی در ابتدا قصد دارم ویژگی های مثبت استفاده از فریم ورک سیمفونی رو بیان کنم. البته این ویژگی های مثبت شاید در اکثر فریم ورک های php موجود باشد ولی خوب تمرکز بنده روی symfony framework است.
    آشنایی با doctrine:
    [تصویر:  doctrine-1516577106.png]
    از ویژگی های مثبت symfony framework می شود به سیستم مدیریت دیتابیس doctrine اشاره کرد. در یک کلام داکترینه واقعا عالی است، سرعت بالایی دارد، هر کاری را که با کوئری های mysql بتوانید انجام دهید اینجا هم قادر به انجامش هستید و قابیت های اضافه ای که هر متخصصی رو مجاب می کند از doctrine بهره ببرد.
    در یک پروژه از mysql به عنوان دیتابیس استفاده می کردم، در اواخر کار به دلایلی مجبور شدم از mysql به Mongodb کوچ کنم، جای هیچ نگرانی ای نداشتم، فقط کافی بود چند خط کد به برنامه ام اضافه کنم و یک سری کتابخانه جدید به کتابخانه های symfony اضافه کنم، به همین سادگی دیتابیسم رو عوض کردم؛ در برنامه ای که نوشته بودم صد ها بار از دستوراتی استفاده کرده بودم که برای کار با mysql بود، ولی باز هیچ مشکلی نبود چون با doctrine فقط کافیه دستورات رو یکبار بنویسید و بعد ها روی هر سیستم پایگاه داده ای اجرا کنید. داکترینه به عنوان یک ORM از دیتابیس های زیر پشتیبانی می کند:
    • Mysql
    • Mongodb
    • Sql server
    • Oracle
    • PostgreSQL
    اگر دیتابیس دیگری هم مد نظرتان باشد کافی است سرچ کنید به احتمال زیاد کتابخانه ای برای ارتباط اون با doctrine پیدا خواهید کرد.
    همونطور که در قسمت قبلی گفتیم سیمفونی از مجموعه ای از کتابخانه ها تشکیل شده و میشود هر جزئی رو به تنهایی استفاده کرد. مثلا می شود از doctrine به شکل مجزا در هر پروژه و هر فریم ورک دیگه ای بهره برد. برای مشاهده مستندان کامل doctrine به سایت مراجعه کنید.

    آشنایی با twig:
    [تصویر:  twig-1507276883.jpg]
    twig در واقع template engine پیش فرض فریم ورک سیمفونی است. در قدیم از smarty برای مدیریت رابط کاربری استفاده می شد، ولی امروزه با ظهور twig استفاده از smarty توسط خیلی ها کنار گذاشته شده است. برای خیلی ها سوال پیش می آید که چرا بهتره از یک template engine استفاده کرد؟ در واقع الزامی برای این کار در سیمفونی وجود ندارد و می شود دستورات رو بدون twig استفاده کرد. ولی استفاده از twig لذت بخش، سریع و امن تر می باشد.
    مثالی از php و twig:
    کد:
    //php
    <?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>

    //twig
    {{ var|e }}
    البته ویژگی های مثبت استفاده از twig فقط کوتاه تر بودن دستورات نیست. استفاده از twig به همراه symfony در ساده تر کردن کار ها و همچنین کمک به cache بهتر است. سعی کنید استفاده از twig را فرابگیرید در آینده از آن لذت خواهید برد.
    همانطور که در مورد doctrine گفتیم twig را نیز می توان به تنهایی در تمام پروژه ها استفاده کرد. مستندات سایت twig را مشاهده کنید.

    آشنایی با swiftmailer:
    swiftmailer کتابخانه ارسال ایمیل در سیمفونی است که بسیار قدرتمند و محبوب می باشد. swiftmailer هم جزء کتابخانه های محبوب symfony است که توسط بسیاری از framework های دیگر مورد استفاده قرار می گیرد. اگر تا به حال برای ارسال ایمیل های خود از کتابخانه ای استفاده نکرده اید پیشنهاد می شود که از این کتابخانه بهره ببرید. سایت مستندات این library را مشاهده است.
    با ما همراه باشید و قسمت های بعدی را دنبال کنید.
    منبع: http://itlogs.ir/article/symfony-doctrine-twig
    ۱۳۹۴ شهريور ۸ ۰۵:۲۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Y.P.Y behnamy shgninc sara147
    esmahdi آفلاین
    عضو
    ***

    ارسال‌ها: 116
    تاریخ عضویت: ۱۳۹۰ مهر ۱۴
    اعتبار: 0
    تشکرها : 34
    ( 21 تشکر در 10 ارسال )
    ارسال: #4
    RE: سیمفونی چیست؟ آشنایی با فریم ورک قدرتمند symfony (قسمت اول)
    آموزش سیمفونی / چگونه symfony را راه اندازی کنیم / اجرای Hello world در سیمفونی (قسمت سوم)
    در قسمت سوم از مجموعه آموزش symfony در خدمت شما هستیم. در قسمت های اول و دوم به معرفی و ویژگی های مثبت سیمفونی اشاره کردیم. در این قسمت یعنی قسمت سوم از مجموعه آموزش symfony قصد داریم نصب و راه اندازی سیمفونی را به شما آموزش دهیم.
    برای نصب سیمفونی نیاز به پیش نیاز های اجباری و پیش نیاز های ترجیحی دارید که به شرح زیر هستند:
    پیش نیاز های اجباری برای نصب سیمفونی
    • php با حداقل ورژن 5.3.9
    • فعال بودن json
    • فعال بودن ctype
    • مشخص بودن date.timezone در فایل پیکربندی php.ini
    • نصب بودن PDO برای بهره مندی از doctrine
    پیش نیاز های ترجیحی برای نصب سیمفونی
    • نصب بودن ماژول PHP-XML
    • نصب بودن حداقل ورژن 2.6.21 از کتابخانه libxml
    • فعال بودن PHP tokenizer
    • فعال بودن mbstring
    • فعال بودن iconv
    • فعال بودن POSIX در nginx
    • نصب بودن Intl
    • نصب بودن APC با ورژن بالاتر از 3.0.17
    • غیر فعال بودن short_open_tag در php.ini
    • غیر فعال بودن magic_quotes_gpc در php.ini
    • غیر فعال بودن register_globals در php.ini
    • غیر فعال بودن session.auto_start در php.ini
    البته پیش نیاز های اجباری معمولا در اکثر هاست های اشتراکی موجود است ولی برای اطمینان قبل از تهیه کردن هاست اشتراکی با شرکت مورد نظر تماس حاصل فرمایید.
    نصب سیمفونی (how to installing symfony)
    سیمفونی دو نوع انتشار دارد؛ یکی انتشار با پشتیبانی کوتاه مدت و دیگری انتشار با پشتیبانی بلند مدت. در زمان تهیه این آموزش سیمفونی ورژن 2.7.3 خود را با پشتیبانی طولانی مدت و تا زمان may 2018 عرضه کرده است.
    برای سهولت دانلود، نصب و پیکربندی سیمفونی می توان از command line بهره برد. نرم افزار خط فرمان خود را به دلخواه از نرم افزار پیش فرض ویندوز cmd و یا از نرم افزار نصبی git bash انتخاب کنید.
    توجه داشته باشید که قبل از اجرای دستورات symfony حتما مسیر فایل اجرایی php را به Environment Variables اضافه کنید. در ابتدا با اجرای دستور زیر در یک مسیر دلخواه (که ترجیحا یکی از فولدرهای web server) باشد فایل نصبی سیمفونی را دانلود می کنیم:
    کد:
    php -r "readfile('http://symfony.com/installer');" > symfony
    در مرحله بعد با اجرای دستور زیر در مسیر جاری سیمفونی را دانلود و نصب خواهید کرد:
    کد:
    symfony new itlogs_project
    پس از پایان یافتن دانلود و آماده سازی فایل ها سیمفونی شما آماده است و با پیام زیر از موفقیت عملیات اطلاع پیدا می کنید:
    [تصویر:  symfony-install-complate-1174226147.gif]
    با اجرا کردن فایل itlogs_project/web/app_dev.php/ در مرورگر صفحه زیر مشاهده خواهد شد:
    [تصویر:  symfony-install-1771633560.png]
    همان طور که در قسمت اول آموزش سیمفونی بیان کردیم، پوشه src متعلق به فایل های پروژه هستند. سیمفونی به صورت پیش فرض یک پروژه برای آشنایی با سیمفونی در این مسیر قرار داده است که در اینجا قصد داریم یک فایل جدید به آن اضافه کنیم. به مسیر itlogs_project\src\AppBundle\Controller فایل itlogsController.php را اضافه می کنیم. در این فایل خط های زیر را درج می کنیم:
    کد PHP:
    namespace AppBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use 
    Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use 
    Symfony\Component\HttpFoundation\Response;
     
    class itlogsController extends Controller
    {
         /**
         * @Route("/itlogs/hello")
         */
        public function helloAction()
        {
         return new Response("first hello world in symfony");
        }

    این فایل یک کنترلر جدید است؛ همانطور که در پست اول بیان کردیم کنترلر مهم ترین بخش یک برنامه در سیمفونی است. در خط 10 از این برنامه مسیر اجرای برنامه را مشاهده می کنید. مسیر اجرای برنامه itlogs/hello است، این مسیر به معنای رجوع به کنترلر itlogs و اجرای تابع helloAction است. با اجرای این درخواست متن "first hello world in symfony" نمایش می یابد. مسیر url در سیستم من به شکل زیر است:
    کد:
    http://localhost/itlogs_project/web/app_dev.php/itlogs/hello
    این اولین برنامه ما در سیمفونی بود. در پست های بعدی شما را با راه اندازی پروژه های پیچیده تر آشنا می کنیم.

    منبع: http://itlogs.ir/article/install-symfony...ello-world
    (آخرین ویرایش در این ارسال: ۱۳۹۴ شهريور ۱۹ ۱۲:۳۹ عصر، توسط esmahdi.)
    ۱۳۹۴ شهريور ۱۹ ۱۲:۲۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Y.P.Y shgninc
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS