فرض کنید برای گردشگری به شهری در جنوب آفریقا سفر کردهاید، شهری بسیار بزرگ، قدیمی و البته شلوغ و پرهیاهو، بعد از گردش و تفریح لذتبخش میخواهید عازم هتل محل اقامتتان شوید، اما آن را گم کردهاید. کوچههای تنگ و باریک و مشابه کلافهتان کرده و نمیتوانید مسیر درستی را برای رسیدن به هتل بیابید، احتمالاً خیلی سریع گوشی خود را بیرون میآوردید و برای خروج از این سردرگمی نگاهی به Google Map میاندازید؛ با درج محل هتل (مقصد) و استفاده از مسیریابی هوشمند گوگل بهراحتی هتل خود را پیدا میکنید و به مقصد میرسید. مطمئن هستیم که دیگر هیچگاه در این مسیر گم نخواهید شد، چراکه شما در طول این مسیر یک راهنمای دقیق و سریع داشتهاید که بهترین مسیر ممکن را برای شما انتخاب کرده و تا رسیدن به مقصد شما را همراهی کرده است. ما قصد داریم در این مقاله برای شما همانند Google Map در سفرها عمل کنیم، در واقع بنا داریم تا به شما مسیر آموزشی تبدیلشدن به یک برنامهنویس حرفهای PHP را آموزش دهیم و تمامی نکاتی احتمالی که در طول مسیر به آن برخورد خواهید داشت را به همراه راهکار آنها، به شما متذکر شویم. مطمئن هستیم که شما با خواندن این مقاله، با سرعت بیشتری میتوانید مسیر تبدیلشدن به یک برنامهنویس حرفهای PHP را طی کنید و تجربیات 15 ساله ما به شما کمک خواهد کرد تا در طول مسیر از موانع بهراحتی عبور کنید و به مقصد برسید؛ تنها دقت داشته باشید که، اگرچه ما برای شما مسیریابی دقیقی را انجام خواهیم داد و در طیکردن این مسیر با شما همراه خواهیم بود اما طیکردن آن برعهده شماست. در انتهای این مقاله به پرسشهای زیر پاسخ خواهیم داد:
ابتدا بیایید با زبان برنامه نویسی PHP آشنا شویم، سپس به سراغ مراحل یادگیری آن میرویم.
اگر به هیچ عنوان با برنامه نویسی آشنایی نداشته باشید و به سراغ چند برنامه نویس بروید تا شما را راهنمایی کنند که سفر ماجراجویی برنامه نویسی خود را با چه زبانی شروع کنید، هر کدام از آنها زبان برنامه نویسی خودشان را به شما پیشنهاد میدهند و اصرار هم دارند که انتخاب آنها بهترین است! اما چگونه میتوانیم تشخیص دهیم که کدام یک از آنها درست میگویند؟ و چه چیزی باعث میشود PHP بهترین زبان برای شما باشد؟ آمارها نشان میدهد که 81.3 درصد از کل وب سایتهای دنیا از PHP به عنوان زبان برنامه نویسی سمت سرور استفاده میکنند. این یعنی اگر به برنامه نویسی تحت وب علاقهمند باشید، PHP انتخاب مناسبی برای شماست؛ چراکه این تقاضای بالا برای استفاده از زبان PHP و تعداد کم برنامه نویسان حرفهای این زبان، شما را به یاقوتی کمیاب تبدیل میکند و به همین دلیل میتوانید درآمد بالایی کسب کنید. اما چه چیزی باعث میشود که PHP زبان خوبی برای شما نباشد؟ اگر قصد دارید برنامههایی توسعه دهید که روی موبایل، دسکتاپ و... قابلیت پیادهسازی داشته باشند، بهتر است به سراغ گزینههای دیگر بروید. بنابراین ابتدا باید هدف خودتان را تعیین کنید. اگر تصمیم به یادگیری PHP گرفتید، باید مسیر صحیحی که در ادامه برای شما آوردهایم را بپیمایید تا در این راه پر پیچ و خم سردرگم نشوید.
هر وب سایتی دارای دو بخش فرانتاند (Front End) و بکاند (Back End) است. فرانتاند همان بخش گرافیکی وب سایت است که کاربر آن را میبیند و با زبانهای HTML و CSS توسعه داده میشود. بکاند در واقع پشت صحنه یک وب سایت است. دقیقا همانند یک فیلم سینمایی که ما بازیگران و دکور (فرانتاند) را میبینیم و نتیجه کار کارگردان، نویسنده، صدابردار و... (بکاند) به طور مستقیم به ما نشان داده نمیشود. بکاند از 3 بخش سرور، برنامه اصلی و پایگاه داده تشکیل میشود. سرور کامپیوتری بسیار قدرتمندتر از کامپیوترهای معمولی است که همیشه روشن و در دسترس میباشد. برخلاف رایانههای خانگی، قطعات مورد استفاده در ساخت آنها از کیفیت بالاتری برخوردار هستند و برای کار با سختی و مدت زمان طولانیتر طراحی شدهاند. آنها همچنین اغلب دو یا چند قسمت مهم دارند؛ بنابراین اگر یکی از کار بیفتد دیگری میتواند جای آن را بدون اینکه کامپیوتر آفلاین شود، بگیرد. مقایسه سرور با کامپیوتر شما همانند مقایسه اتومبیل سواری با کامیونهای بزرگ دیزلی است که میتوانند روزانه صدها کیلومتر مسافت را طی کنند. در حالیکه اتومبیل سواری برای طی چنین مسافتی اصلاً دوام نخواهد آورد، زیرا این چیزی نیست که برای آن ساخته شده است. توضیحات اضافه دارد و خلاصه تر بیان شود پایگاه داده بخشی است که تمامی اطلاعات در آن ذخیره میشود. اگر برای اولین بار در یک فروشگاه اینترنتی ثبت نام کنید، تمامی اطلاعات شما در پایگاه داده آن سایت ذخیره میشود و در دفعات بعدی با وارد کردن رمز عبور، وارد حساب کاربری خودتان میشوید. فرد برنامه نویسی که بتواند بین سرور و پایگاه داده ارتباط برقرار کند و برنامهای را توسعه دهد که نیازهای کاربران و کارفرما را برطرف کند، برنامه نویس بکاند نامیده میشود. زبان PHP یکی از محبوبترین زبانها برای برنامه نویسی بکاند است. دلیل اینکه ما نیاز داریم پیش از یادگیری PHP، زبانهای HTML و CSS را فرا بگیریم، این است که کدهای PHP در سمت سرور پردازش و اجرا میشوند و برای اینکه بتوانیم نتایج را به کاربر نشان دهیم باید از این دو زبان استفاده کنیم.
برای یادگیری زبان PHP ابتدا از مبانی برنامه نویسی و مباحثی همچون الگوریتم و فلوچارت شروع کنید. با این کار شما قدم محکمی در زمینه برنامه نویسی برمیدارید و پس از آن یادگیری سایر زبانهای برنامه نویسی برایتان به راحتی آب خوردن میشود؛ چراکه اولین قدم را به درستی برداشتهاید. پس از آن میتوانید به سراغ مباحث پیشرفته و تخصصی زبان PHP همچون شیگرایی بروید و با تکرار و تمرین آموختههای خود، در این زبان حرفهای شوید. در واقع یادگیری یک زبان برنامه نویسی درست همانند یادگیری رانندگی است. کافیست تا با تکرار و تمرین زیاد آن را یک بار بیاموزید، پس از آن میتوانید راندن هر خودرویی را در مدت زمان بسیار کوتاهی یاد بگیرید.
شما به عنوان یک برنامه نویس وب، با پایگاه داده یا Database سروکار زیادی دارید. پایگاه دادهها در سازماندهی اطلاعات، حذف فرآیندهای تکراری و پشتیبانگیری از دادهها به ما کمک زیادی میکنند و بدون آنها زندگی ما بهعنوان یک برنامه نویس، بسیار سخت و دشوار خواهد بود. پایگاه دادهها انواع و ساختارهای متفاوتی دارند و هر کدام برای اهداف مختلفی استفاده میشوند. ما در مقاله سیستم مدیریت پایگاه داده (DBMS) چیست؟ از سیر تا پیاز هر آنچه که برای شناخت پایگاه دادهها نیاز دارید را بصورت کامل بررسی کرده ایم، همچنین در مقاله NoSQL چیست؟ نیز شما را با دو نوع پایگاه داده SQL و NoSQL توضیحات کاملی از این دو پایگاه داده ارائه کردهایم؛ توصیه میکنیم حتما پس از مطالعه کامل این مقاله نگاهی به آنها داشته باشید تا به درک مناسبی از این مفاهیم برسید.
زمانی که کار خود را به عنوان یک برنامه نویس شروع میکنید، آرزو میکنید که ای کاش میشد پکیجها و کتابخانههای نوشته شده توسط سایر برنامه نویسان را در پروژههای خود بارگذاری کنید تا در زمان خود صرفه جویی کنید و به اصطلاح چرخ را دوباره اختراع نکنید. خوشبختانه آرزوی شما برآورده شده و ابزار کامپوزر (Composer) برای همین منظور توسعه داده شده است. دوستان برنامه نویس ما از سراسر دنیا کتابخانهها و فریمورکهای پروژههای خود را در وب سایت packagist بارگذاری میکنند و ما از طریق کامپوزر میتوانیم به آنها دسترسی داشته باشیم. اینجاست که میفهمیم برنامه نویسی چقدر دلچسب و لذتبخش است! اگر علاقهمند به آموزش نصب کامپوزر و نحوهی استفاده از این ابزار کاربردی هستید، آموزش نصب کامپوزر (Composer) را از دست ندهید.
وب سرویسها ارتباط میان نرم افزارها با یکدیگر و کلاینت با نرم افزار را امکان پذیر میسازند. به این صورت که هنگام استفاده از وب سرویس، یک API در سایت مبدا ایجاد میشود که سایر سایتها میتوانند با ارسال درخواست به آن API، به دادههای مورد نیاز خود دسترسی پیدا کنند. حال این سوال پیش میآید که API چیست و چرا به آن نیاز داریم؟ فرض کنید که در خانه نشستهاید و قصد دارید برای خودتان اسپاگتی درست کنید. برای این کار کافیست تا مواد لازم را از کابینت و یخچال بیرون بیاورید و غذایتان را آماده کنید. این کار را به تنهایی میتوانید انجام دهید. اما موقعیتی را تصور کنید که میخواهید پیتزا بپزید اما مواد لازم آن برای پخت را ندارید. در عوض به یک پیتزافروشی میروید. رو به روی پیشخوان میایستید و منو را بررسی میکنید. روی منو نوشته شده است که چه پیتزاهایی را میتوانید سفارش دهید و چه مواد اضافی یا گزینههای دیگری را میتوانید انتخاب کنید. این یک API است.
وقتی شما میخواهید در یک وب سایت ثبت نام کنید، به غیر از گزینه ثبت نام معمولی، گزینههایی همچون ثبت نام با جیمیل یا فیسبوک و... به شما نشان داده میشود و شما میتوانید تنها با کلیک کردن روی ایمیلی که با آن در این وب سایتها ثبت نام کردهاید، در سایت جدید نیز ثبت نام کنید. سایت جدید نمیتواند به سراغ ایمیلها یا پیامهای شما در فیسبوک برود و در آنها کاوش کند. در واقع گوگل و یا فیسبوک یک API، یک منوی محدود از دستورات با پارامترهای مختلف را در اختیار سایتهای گوناگون قرار میدهند. بنابراین سایتها میتوانند با این API محدود، اطلاعات اندکی که برای ثبت نام شما نیاز دارند را بهدست آورند. برای آشنایی عملی با API در PHP و نحوهی استفاده از آن، میتوانید از آموزش Rest API در PHP به همراه ویدئوی آموزشی استفاده کنید.
پس از اینکه پروژه خود را به پایان رساندید ممکن است از شما خواسته شود بخشی از کد را تغییر دهید و یا بخش جدیدی را اضافه کنید. حتی ممکن است بخواهید روی پروژه فرد دیگری که او را نمیشناسید، کار کنید. در این صورت اگر اصول کدنویسی تمیز رعایت نشده باشد، نه تنها همه متوجه میشوند که شما حرفهای نیستید، بلکه تغییر کد و افزودن بخشی جدید، کاری سخت، عذابآور و حتی غیرممکن خواهد بود. پس اگر میخواهید جلوی کارفرما آبرویتان نرود باید اصول کدنویسی تمیز را یاد بگیرید.
الگوهای طراحی یا Design Patterns زمانی به کار شما میآیند که به یک برنامه نویس حرفهای تبدیل شده و با چالشهای پیچیدهتری مواجه میشوید. حال بیایید با یک مثال، مفهوم الگوهای طراحی را برای همیشه درک کنیم.
هنگامی که بشریت برای اولین بار شروع به ساختن ساختمان کرد، معمولاً از چوب و برگ برای این کار استفاده میکرد. این روش برای مدت طولانی خوب کار میکرد و به نوعی محافظ مردم در برابر محیط زیست بود. در بسیاری از نقاط جهان، مردم بومی هنوز خانههای خود را به این روش میسازند و این کاملاً خوب است.
اگر به سمت ظهور تمدنهای بزرگتر حرکت کنید، متوجه خواهید شد که کلبههای ساخته شده از چوب و برگ و چادرهای قدیمی دیگر کارایی ندارند. فرض کنید افراد زیادی در یک منطقه بسیار کوچک زندگی میکنند. اگرچه ساختن یا بازسازی کلبه برای یک خانواده تنها ممکن است آسان باشد، اما نگه داشتن نظم شهری پر از کلبه و چادر بسیار دشوار است.
جلوتر که برویم، به آسمان خراشهای امروزی میرسیم که از فولاد و بتن ساخته شدهاند، نه از چوب و سنگ، که باعث میشود آنها حتی از مقاومت بیشتری برخوردار شوند و قادر به صعود بالاتر و حمایت از افراد بیشتری نسبت به گذشته هستند. اگرچه برای رسیدن به این نقطه ممکن است هزاران سال از فناوری مهندسی گذشته باشد، اما الان و در این زمان، آسان است که آسمان خراش دیگری بسازیم، زیرا همه سخت افزارها توسط شخص دیگری مشخص شده است. اکنون که الگوهای موجود در مورد چگونگی ساخت یک آسمان خراش خوب را فهمیدیم، فقط باید به ساخت آن بپردازیم.
هدف از الگوهای طراحی مانند MVC ،MVVM ،MVP ،Clean / Onion Architecture و بسیاری دیگر نیز همین است. الگوهای طراحی به هیچ وجه برای پروژههای کوچک ضروری نیستند و هنگام توسعه کد یک پروژه کوچک، تلاش برای پیروی از الگوی طراحی میتواند حتی دست و پا گیر باشد. شما برای یک روستای 20 نفره احتمالاً نیازی به ساختن آسمان خراش ندارید و حتی خانههایی ساخته شده با سنگ و الوار نیز ممکن است کافی باشد. با این حال، اگر انتظار دارید که دهکده (پروژه) شما به طور قابل توجهی رشد کند، ارزش آن را دارد که یک الگوی طراحی را به کار بگیرید. زیرا ساخت آسمان خراش از یک پایه تمیز بسیار آسانتر از آن است که کلبههای چوبی و گلی را خراب کنید و سپس شروع به ساخت خانههای جدید کنید. مقالهی دیزاین پترن چیست؟ شما را با تاریخچه و انواع الگوهای طراحی آشنا میکند.
ممکن است گاهی اوقات مشکلاتی را در پروژه خود ببینید اما در رفع کردن آنها تنبلی کنید و آن را به زمان دیگری موکول کرده و نهایتا فراموش کنید! زمانی که نوبت به تحویل پروژه به کارفرما فرا میرسد، ناگهان یک خطای احمقانه روی صفحه به نمایش در میآید! اینجاست که کارفرما از شما ناامید میشود و شما را فردی ناکارآمد و غیرحرفهای میپندارد. اما اگر میخواهید که چنین اتفاقی هرگز رخ ندهد باید تستهای مختلفی را برای کد خود بنویسید تا تمامی حالات ممکن بررسی شوند و پروژهای کامل را به کارفرما تحویل دهید. خوشبختانه روشها، ابزارها و فریمورکهای متنوعی برای تست برنامههایی که با PHP توسعه داده شدهاند، وجود دارد که میتوانید از آنها استفاده کنید.
فریمورک، مجموعهای از کتابخانهها، استانداردها، الگوهای طراحی و قوانین کدنویسی است که در بستر یک چارچوب نرم افزاری در اختیار توسعه دهندگان قرار میگیرد. تصور کنید که در حال ساخت یک ساختمان با مصالح پیشساخته هستید. شما با در کنار هم قرار دادن این مصالح در جای مناسب، ساختمان را میسازید. اگر این مصالح را در اختیار نداشتید، مجبور بودید همه چیز را از ابتدا بسازید. فریمورکها نیز چنین کاربردی دارند؛ بنابراین نیازی نیست که از ابتدا شروع به ساخت همه اجزا کنید. دقیقاً همانند مصالح پیشساخته، فریمورکها کاملاً قابل تنظیم و شخصیسازی هستند، شما مجبور نیستید آن را همانطور که هستند استفاده کنید، میتوانید قسمتهایی از آن را که نیازی ندارید یا دوست ندارید تغییر دهید.
زمانی که در مورد فریمورکهای توسعه وب اپلیکیشن با PHP صحبت میشود، همیشه نام لاراول به میان میآید. از Laravel میتوان به عنوان یکی از محبوبترین فریمورکهای PHP یاد کرد. این فریمورک توانسته است در زمانی کوتاه، به اولین گزینه توسعه دهندگان برای توسعه برنامههای پیچیده تحت وب تبدیل شود. البته فریمورکهای دیگری هم وجود دارند که شما میتوانید از آنها استفاده کنید.
شما با یادگیری زبان برنامه نویسی PHP میتوانید در زمینههای متنوعی از جمله توسعه وبسایت، توسعه قالب و افزونههای وردپرس، ساخت ربات تلگرام و... فعالیت داشته باشید. علاوه براین، در صورتی که تجربهی بالایی در استفاده از این زبان، در کنار سایر زبانها همچون HTML، CSS و JavaScript داشته باشید، به راحتی میتوانید درآمد بالایی کسب کنید. در مقاله روش های کسب درآمد از PHP بیشتر به این موضوع پرداخته شده است.