راهنمای جامع برای آشنایی با PHP و دنیای طراحی وب
مطمئنا PHP مثل گذشته در اوج نیست، اما اینطور نیست که PHP کاملا منسوخ شده باشد. در فرومهایی مثل StackOverFlow بعضی از برنامهنویسها دائما میگویند که PHP دیگر کاربردی ندارد؛ اما واقعا نظر آنها درست است یا صرفا به خاطر این است که PHP را دوست ندارند؟
اگر اولین قدمهای خود را در دنیای توسعهٔ وب برمیدارید، چه به عنوان یک برنامهنویس با آیندهای درخشان، یا به عنوان یک کارفرمای بالقوه، طولی نمیکشد که با PHP رو به رو خواهید شد. عجیب نیست؛ چون PHP یکی از محبوبترین زبانهای برنامهنویسی وب است. مهمتر از آن تقریبا ۷۹ درصد تمامی وبسایتها با استفاده از PHP ساخته شدهاند که ابزارهای مبتنی بر وبی که روزانه از آنها استفاده میکنید مانند فیسبوک، ویکیپدیا، یاهو، میلچیمپ و پینترست هم جزو آنها هستند.
اگر به یادگیری زبان برنامهنویسی PHP علاقهمند هستید، پیشنهاد میکنیم سری هم به دوره جدید کوئراکالج، یعنی «آموزش پروژهمحور برنامهنویسی وب با PHP» بزنید. در این دوره با پروژههای واقعی از شرکت دیجیکالا و تمرینهای مختلف سر و کار خواهید داشت.
زبان برنامهنویسی PHP چیست؟
زبان PHP یک زبان برنامهنویسی سمت سرور و منبع باز (Open Source) برای توسعهٔ برنامههای وب است که میتواند در کد HTML جاسازی (تعبیه یا embed) شود. PHP با سیستم عاملهای اصلی و مطرح (macOS, Windows, Linux, Unix) سازگار است و توسط سرورهای وب مختلف (Apache, nginx, IIS, lighttpd) پشتیبانی میشود. این زبان برنامهنویسی محدود به HTML نیست و میتواند فایلهای متنی و تصویری با ساختارهای متفاوت را ایجاد کرده و خروجی دهد.
به علاوه آن، PHP از یک روش موثر در گزینش بانکهای اطلاعاتی پشتیبانی میکند که روند توسعهٔ وب را ساده و آسان میکند. PHP با توجه به انعطافپذیر بودنش، محدودیتهای کمی برای توسعهدهندگان، طراحان و کارفرمایان ایجاد میکند و آزادی فراوانی را در انتخاب و خلاقیت در اختیارشان میگذارد.
زبان PHP چهکاری میتواند انجام دهد؟
دفترچهٔ راهنمای رسمی PHP جواب کوتاهی برای این سوال دارد: هر چیزی که با حقیقت فاصله ندارد.
سه حوزه اصلی از کاربردهای PHP اینها هستند: اسکریپتنویسی خط فرمان (Command-line scripting)، اسکریپتنویسی سمت سرور (Server-side scripting)، و توسعهٔ برنامههای دسکتاپ (Desktop application). این آخری به صورت تئوری امکانپذیر است، اما خیلی کم عملی میشود. به زبان ساده، هر چیزی که باید با یک وبسرور اجرا شود، میتواند با PHP ساخته شود: یک وبلاگ، یک فروشگاه آنلاین، یک اسکریپت پردازش داده، یک SaaS (اجاره نرمافزار) (۱) پیچیده و سطح بالا و هر چیز مشابهی که به فکرتان میرسد.
- در اصل PHP محتوایی از نوع HTML را بر اساس شروطی تعیین شده، برای بازدیدکنندگان وبسایت ایجاد میکند. با استفاده از مجموعهای از متغیرها، PHP دادههای مورد نیاز را از پایگاه داده استخراج کرده و محتوای متناظر را به صورتی پویا ارائه میکند؛ مثل زمانی که مشتریان یک فروشگاه آنلاین از فیلتر «جدیدترین محصولات» موقع جستجوی محصول استفاده میکنند.
- جدای از این، PHP به توسعهدهندگان اجازه میدهد که صفحات وب را ایجاد، منتشر و ویرایش کنند؛ بدون اینکه هر بار نیاز به سر و کله زدن با HTML داشته باشند. به جای آن، میتوان با استفاده از سیستمهای مدیریت محتوای کاربرپسند که بر پایهٔ PHP ساخته شدهاند (مانند WordPress) تغییرات لازم را ایجاد کرد تا پایگاه دادهٔ محتوا به صورت خودکار بهروزرسانی شود.
- زبان PHP را میتوان در همهٔ سیستم عاملهای اصلی، از جمله لینوکس، بسیاری از انواع یونیکس، ویندوزِ مایکروسافت، MacOS، RISC OS و احتمالا موارد دیگر استفاده کرد. همچنین در حال حاضر، PHP از بیشتر سرورهای وب شامل IIS و Apache پشتیبانی میکند. به علاوه اینکه شما میتوانید از برنامهنویسی رویهای (Procedural Programming) یا برنامهنویسی شیگرا (OOP) یا ترکیبی از هر دو استفاده کنید.
- همانطور که میدانید، PHP برای داینامیک کردن صفحات ساخته شده با HTML و CSS کاربرد دارند. ولی با استفاده از PHP شما فقط محدود به ارسال خروجی بصورت HTML نیستید. بلکه میتوانید خروجی اجرای کدهای PHP را به صورت تصویر، فایل pdf و حتی فایل فلش ارسال کنید. همچنین می توانید به راحتی هر متنی مانند XHTML و هر پرونده XML دیگر را به راحتی در خروجی چاپ کنید. پی اچ پی می تواند این فایل ها را به صورت خودکار تولید کند و به جای چاپ کردن ، آنها را در سیستم بصورت فایل ذخیره کند و یک حافظه نهان سمت سرور را برای محتوای پویای شما تشکیل می دهد. که بدون نیاز به ذخیره کردن در جایی (اصطلاحا به صورت On the fly) ساخته میشوند.
- یکی از پرقدرتترین و مهمترین ویژگیهای PHP، پشتیبانی آن از طیف گستردهای از پایگاههای داده است. نوشتن یک صفحهٔ وب با قابلیت اتصال به پایگاه داده با استفاده از افزونههای اختصاصی پایگاه داده (به عنوان مثال برای mysql)، استفاده از یک لایهٔ abstraction مانند PDO یا اتصال به هر پایگاه دادهای که از استاندارد اتصال پایگاه دادهٔ باز (Open Database Connection Standard) با بهکارگیری افزونهٔ ODBC پشتیبانی میکند، در PHP بسیار ساده است.
- تکنولوژی PHP همچنین از گفتگو (۲) با سایر سرویسها با استفاده از پروتکلهایی مانند LDAP، IMAP، SNMP، NNTP، POP3، HTTP، COM (بر روی ویندوز) و موارد بیشمار دیگری پشتیبانی میکند. همچنین میتوانید سوکتهای شبکه را مستقیما باز کرده و با بهکارگیری هر نوع پروتکل دیگری ارتباط برقرار کنید. PHP از تبادل دادههای پیچیدهٔ WDDX مابین تقریبا همهٔ زبانهای برنامهنویسی هم پشتیبانی میکند. در زمینهٔ ارتباط، PHP از نمونهسازی آبجکتهای JAVA و بهکارگیری آنها به عنوان آبجکتهای PHP هم پشتیبانی میکند.
- زبان PHP دارای امکانات مفیدی برای پردازش متن است، که شامل RegEx (عبارات منظم) سازگار با PERL یا به صورت اختصار (PCRE)، و بسیاری از افزونهها و ابزارها برای تجزیه و دسترسی به اسناد XML است.
فریمورک (چارچوب) PHP چیست؟
فریمورک PHP بستری برای ساخت برنامههای وب PHP است. این فریمورک شامل کتابخانههایی با توابع و کلاسهای از پیش آماده شده و همچنین در بیشتر موارد، المانهایی برای اجرای الگوی طراحی نرمافزار (Design Pattern) است. این دومی، یک اسکلتبندی آماده یا به اصطلاح بیرون از جعبه (۳) (out-of-the-box) از پروژهای که ساخته خواهد شد را بر پایهٔ رشتهکدهای توسعهدهنده تشکیل میدهد؛ چه برای کدهای به ارث برده شده از کلاسهای کتابخانهای یا کدهایی که از ابتدا نوشته شدهاند.
فریمورکهای PHP به دلیل اهمیت دادن به جنبههای معمول و تکرارشونده در توسعهٔ وب رواج پیدا کردهاند. همچنین، توابع کتابخانهای و کلاسها در این فریمورکها، از شیوههای استاندارد توسعهٔ وب پیروی میکنند و به خوبی تست شدهاند. با استفاده از آنها، علاوه بر آنکه هر بار مجبور به اختراع دوبارهٔ چرخ نخواهید بود، احتمال بروز خطاهایی که میتوانند دائما اتفاق بیفتند و باعث خرابی برنامه شوند را نیز بهطور قابل ملاحظهای کاهش میدهید.
آخرین، اما نه کماهمیتترین مزیت استفاده و تکیه بر این فریمورکها، این است که کدِ شما را برای دیگر همکاران توسعهدهنده قابل خواندن و درک میسازند.
بهترین فریمورک PHP کدام است؟
این روزها، توسعهدهندگان PHP به هیچوجه از کمبود فریمورکهای برنامهنویسی نگران نیستند. برعکس، احتمال زیادی وجود دارد که به خاطر تنوع زیاد فریمورکها، برای انتخاب از بین آنها سردرگم شوند. برای راهنمایی شما در مسیر درست، خلاصهای از پنج فریمورک PHP که بهترین عملکرد را دارند و ارزشمندتر و محبوبتر هستند را بررسی میکنیم.
۱. فریمورک Laravel
لاراول این روزها داغترین فریمورک PHP است. به عنوان فریمورکی برای (۴) Web Artisans، طبق ادعای سازندگانش، به توسعهدهندگان اجازه میدهد که طراحیهای مدرن و زیبایی را انجام دهند. Laravel به دلیل شیب کم منحنی یادگیری (۵) (Shallow learning curve)، سادگی و منابع یادگیری فراوان و برتر، مورد استقبال توسعهدهندگان جوان قرار گرفته است. از طرف دیگر هم مهندسان باتجربهٔ PHP، محیط توسعهٔ داخلی، موتور الگومحور و سیستم مسیریابیِ (۶) RESTful آن را ستایش میکنند.
۲. فریمورک Symfony
فریمورک Symfony مجموعهٔ چشمگیری از امکانات و در کنار آن ویرایشهای با پشتیبانی بلندمدت را ارائه میدهد، اما در عوض نیاز به سطح مناسبی از تخصص دارد. این موضوع، هرچند باعث کمتر شدن محبوبیت آن نمیشود، اما باعث میشود توسعهدهندگان تازهکار در مورد آن محتاط باشند. Symfony یکی از بزرگترین جامعههای توسعهدهندگان را دارد. SensioLab، مالک این فریمورک، با منتشر کردن محتوای آموزشی مفید، پستهای وبلاگ و بحثهای فنی از آن پشتیبانی میکند.
۳. فریمورک Zend
به دلیل ماهیت مبتنی بر مولفه (Component-based)، این فریمورک در جامعهٔ توسعهدهندگان PHP به عنوان فریمورک چسبان (a glue framework) لقب گرفته است. فریمورک zend از معماری MVC پشتیبانی میکند و کاملا از اصول شیگرایی در ساختار خود پیروی میکند و همین ویژگی باعث قدرتمند شدن این فریمورک شده، به طوری که به برنامهنویسها این اجازه را میدهد تا در صورت نیاز از هر جزئی که در برنامهشان استفاده کردهاند در هر کجای دیگر نیز استفاده کنند. در واقع، با استفاده از Zend، میتوانید آزادانه فقط آن دسته از کامپوننتهایی که نیاز دارید را فراخوانی کنید. این فریمورک نه تنها دارای یک کتابخانهٔ داخلی پر و پیمان و گرانبهاست، بلکه میتواند آزادانه با مقدار زیادی از کتابخانههای بیرونی یکپارچه شود.
۴. فریمورک Phalcon
فالکون اساسا با دیگر فریمورکهای PHP تفاوت دارد؛ زیرا در واقع یک افزونهٔ PHP است که با زبان C نوشته شده است. این افزونه، به منابع کمی نیاز دارد، فریمورک MVC را میپذیرد و سرعت و کارایی چشمگیری دارد. با تمام اینها، در نبود یک موتور تست خودکار و ماهیت عجیب و غریب این فریمورک، یافتن اشکالات برنامهها، به تلاشی تبدیل میشود که حتی توسعهدهندگان باتجربه را هم از کار با Phalcon دلسرد میکند.
۵. فریمورک CakePHP
با انتخاب CakePHP، مجموعهٔ کاملی از کارکردهای اساسی مورد نیاز برای توسعهٔ PHP را به دست میآورید: پشتیبانی از MVC، انتخابی عالی از افزونهها و مولفههای (Components) سودمند، قابلیت استفادهٔ دوباره از کد، و پشتیبانی از AJAX بیرون از جعبه (out-of-the-box*). آنچه CakePHP را متمایز میکند، تاکید آن بر قراردادهای کدنویسی است که از سویی به روند توسعه سرعت میبخشد و از سویی دیگر ممکن است خلاقیت و نوآوری را در شما فرو بنشاند.
آیندهٔ PHP
بروزرسانی جدید: PHP7
از زمان انتشار PHP7، امکانات تازه و بهبودهای فراوانی معرفی شدهاند. قابل توجهترین پیشرفتها بهبود سرعت و استفادهٔ بهتر از حافظه است. این به آن معناست که وبسایتهایی که از PHP7 استفاده میکنند سریعتر از وبسایتهایی که از ویرایش قدیمی PHP استفاده میکنند بارگذاری میشوند و میتوانند همزمان کاربران بیشتری را نیز هندل کنند. Code wise، اعلامیههای نوع (Type declarations) و عملگرهای (Operators) تازهای معرفی شدهاند. ادارهکنندهٔ خطاها نیز بهبود یافته است.
زبان PHP هنوز بر دنیای وب مسلط است.
یکی از دلایلی که PHP به وسیلهٔ بسیاری از وبسایتها استفاده میشود، این است که WordPress از PHP استفاده میکند. سهم بازار WordPress تقریبا ۳۴ درصد از کل وبسایتهای دنیا است. این یعنی ۷۵ میلیون وبسایت از WordPress استفاده میکنند.
علاوه بر این، برخی از CMSهای دیگر مانند Drupal و Joomla نیز وجود دارند که سهم قابل توجهی در بازار دارند. از طرف دیگر بعضی سیستمهای مدیریت فروشگاهِ محبوب، مانند Magento نیز بر پایه PHP هستند. همین موضوع، PHP را مهم و برای یادگیری و استفاده مناسب میسازد.
بازار کار
از آنجایی که ۷۵ درصد وب با استفاده از PHP نوشته شده است، مشخص است که بازار خوبی در انتظار برنامهنویسان آن است. همهٔ این وبسایتها باید پشتیبانی شوند و برای این کار به توسعهدهندگان PHP نیاز دارند. سهم بزرگی از بازار PHP در یک شب از بین نخواهد رفت، بنابراین مشاغل مربوط به PHP در آینده نیز وجود خواهند داشت.
نتیجهگیری
اگرچه بحثهای فراوانی در مورد آیندهٔ PHP وجود دارد، اما روشن بودن آینده PHP تقریبا مشخص است. این زبان هنوز هم پراستفادهترین زبان برنامهنویسی برای وبسایتها است. نظر شما چیست؟ شما هنوز به آینده PHP امیدوارید؟
(۱) Software as a Service:
نرمافزار به عنوان سرویس یک مدل توزیع نرمافزار است که در آن یک ارائهدهنده میزبان برنامه بوده و خدمات برنامه را از راه اینترنت در دسترس مشتریان قرار میدهد. SaaS در کنار زیرساخت به عنوان سرویس (IaaS) و بستر خدمات به عنوان سرویس (PaaS)، یکی از سه دستهٔ اصلی محاسبات ابری یا همان Cloud Computing است.
(۲) گفتگو:
در دانش کامپیوتر به معنای برقراری ارتباط به منظور تبادل داده است. برای تبادل داده به گونهای که برای هر دو طرف (منظور از دو طرف معمولا دو دستگاه یا دو برنامه است) قابل درک و استفاده باشد، از پروتکلهای ارتباطی استفاده میشود.
(۳) out-of-the-box:
ویژگی یا کارکرد خارج از جعبه (که به آن Off the shelf هم گفته میشود)، به خصوص در نرمافزار، ویژگی یا کارکردی است که بدون نیاز به هیچگونه نصب یا تنظیم و اصلاحی کار میکند. همچنین به این معنا نیز هست که بهطور پیشفرض برای همهٔ کاربران در دسترس است و برای استفاده از یک چنین کارکردی، نیاز به پرداخت هزینهٔ اضافی یا پیکربندی و تنظیمات خاص نیست.
(۴) Web Artisans:
یک رابط خط فرمان است که همراه فریمورک Laravel عرضه میشود.این برنامه دستورات مفیدی ارائه میدهد که میتوانند در ساخت برنامهها به شما کمک کنند.
(۵) Shallow learning curve:
منحنی یادگیری کمعمق به معنای روند سریع یادگیری یک موضوع است. در نقطهٔ مقابل اصطلاح منحنی یادگیری با شیب تند یا steep learning curve وجود دارد که به معنای روند کند و مدت زمان طولانی برای یادگیری یک موضوع میباشد.
(۶) RESTful:
یک سبک معماری نرمافزار است که مجموعهای از محدودیتها را برای استفاده از سرویسهای وب تعریف میکند.
ترجمه بر اساس:
What can PHP do? - The Future of PHP - PHP Frameworks Explained in 5 Simple Questions
کوئرامگ مجلهای تخصصی برای توسعهدهندگان است که هر هفته با مطلبهایی در زمینه تکنولوژی، رشد فردی و آینده برنامهنویسی بهروزرسانی میشود. برای اطلاع از آخرین مطلبهای ما، میتوانید توئیتر یا کانال تلگرام کوئرا را دنبال کنید.
مطلبی دیگر از این انتشارات
پنجمین دوره مسابقات برنامهنویسی کشوری کدکاپ در راه است
مطلبی دیگر از این انتشارات
بهترین زبانهای برنامهنویسی جدید برای یادگیری کدامند؟
مطلبی دیگر از این انتشارات
یادگیری ماشین به زبان ساده: عملیترین راهنمای دنیا!