campaign-Ghorban-to-Ghadir

PHP چیست و چه کاربردی دارد ( بهمراه تاریخچه پی اچ پی )



visibility  
mode_comment   ۵

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

بنابراین اگر قصد دارید با اطمینان و آگاهی کامل دست به انتخاب زبان برنامه نویسی PHP بزنید و آموزش آن را شروع کنید، تا انتهای مسیر همراه شما خواهیم بود. همچنین به شما این اطمینان را می دهیم در انتهای این مقالات جواب سوال های خود را در مورد زبان PHP با زبانی ساده دریافت خواهید کرد.

تاریخچه زبان برنامه نویسی PHP چیست

همه چیز در مورد PHP

همه چیز از زمانی شروع شد که Rasmus Lerdorf دانمارکی در سال ۱۹۹۴ تعدادی اسکریپت به منظور مدیریت یک سری از کارها در سایت شخصی خود با زبان برنامه نویسی Perl نوشت. Lerdorf با استفاده از این اسکریپت ها که بر اساس استاندارد اسکریپت‌نویسی (Common Gateway Interface) نوشته شده بودند، آمار افرادی که در حال خواندن رزومه اش بودند محاسبه و ذخیره کرد. با این کار توجه افراد زیادی را به اسکریپت هایش جلب کرد و از اون درخواست کردند تا اسکریپت ها را برای آن ها هم ارسال کند. بنابراین Lerdorf تصمیم گرفت که نام اسکریپت های خود را PHP گذارد که مخفف عبارت Personal Home Page بود.

Lerdorf در سال 1997 زبان PHP را به نسخه دوم ارتقا داد و توانست نظر توسعه دهنده های زیادی را به خودش جلب کند. با این حال هنوز این زبان برنامه نویسی دچار ضعف ها و مشکلاتی در موتور پردازشی خود بود. به همین دلیل Zeev Suraski و Andi Gutmans از اسرائیل داوطلب شدند تا برای بازنویسی موتور پردازشی PHP به کمک Lerdorf بیایند. در نهایت تصمیم آن ها بر این شد که این تغییرات را در نسخه سوم PHP اعمال کنند.

بازنویسی موتور پردازشی PHP در سال 1998 به پایان رسید و به عنوان نسخه سوم PHP عرضه شد. البته در همین سال تصمیم گرفتند که به کلمه PHP مفهومی جدید دهند.(حتما می پرسید یعنی چی؟) یعنی آن ها تصمیم گرفتند که دیگر دو حرف میانی کلمه PHP برگرفته از عبارت Home Page نباشند و به عنوان مخففی از عبارت Hypertext Preprocessor در نظر گرفته شوند. منظور از این دو حرف به زبان ساده این است که زبان PHP اطلاعات را قبل از اینکه به صورت HTML به کاربر نمایش دهد، پردازش می کند و سپس آن را در قالب HTML به کاربر نمایش می دهد.(منظور از Hypertext ابر متن یا متن های بزرگ و طولانی است که احتمال دارد در آن تصویر، جدول و... به کار رفته باشد که در حقیقت همان فایل HTML است که کاربر در قالب صفحات وب مشاهده می کند).

به تدریج با گذشت زمان به تعداد توسعه دهندگان اولیه زبان PHP به منظور توسعه بخش های دیگر این زبان اضافه شد و به این ترتیب بود که زبان برنامه نویسی PHP به یک پروژه متن باز یا Open Source تبدیل شد. در سال 2000 Zeev Suraski به همراه همکارش Andi Gutmans تصمیم به تاسیس شرکتی با نام Zend گرفتند. در آن شرکت هسته اصلی زبان PHP دوباره زیر تیغ جراحی توسعه دهندگان قرار گرفت و بازنویسی شد. در این بازنویسی تغییرات زیادی بر روی PHP اعمال شد که هسته آن را Zend Engine نامیدند و به عنوان نسخه چهارم از این زبان ارائه کردند.

PHP در سال 2004 به نسخه پنج بروزرسانی شد. در این بروزرسانی تغییر و تحولات زیادی را در این زبان شاهد بودیم که مهمترین تغییرات آن می توان به پشتیبانی از کدنویسی شی گرا و ارتباط بهتر با پایگاه داده اشاره کنیم. بنابراین می توان نسخه پنجم از زبان PHP را نقطه عطف این زبان در دنیای برنامه نویسی بدانیم، چرا که در این بروزرسانی قابلیت ها و امکانات زیادی به این زبان برنامه نویسی اضافه شد که کدنویسی با این زبان را بیش از پیش برای برنامه نویسان لذت بخش تر کرد.

می دانیم انتظار دارید بعد از نسخه پنجم PHP نسخه ششم آن را به شما معرفی کنیم، اما نکته جالب درمورد زبان PHP این است که به جای این که نسخه ششم آن عرضه شود، در یک اقدام جالب بعد از نسخه 5.6 ، نسخه هفتم آن عرضه شد. زیرا تیم توسعه زبان PHP تصمیم داشتند در نسخه ششم، قابلیت پشتیبانی از Unicode را به این زبان اضافه کنند تا قادر باشد از کارکترهای همه زبان های دنیا پشتیبانی کند. اما آن ها نتوانستند این قابلیت را به خوبی پیاده سازی کنند و به همین دلیل تصمیم گرفتند تا توسعه این نسخه از PHP متوقف شود.

سال 2015، با عرضه نسخه هفتم PHP، این زبان دوست داشتنی دوران جوانی خود را پشت سر گذاشت و به دوران بلوغ و پختگی خودش وارد شد. به تعبیری این نسخه از PHP را می توانیم به عنوان یکی از بزرگترین و بهترین بروزرسانی های یک زبان برنامه نویسی به حساب آوریم. از جمله تغییرات مهم این نسخه می توان به بهبود عملکرد، کاهش استفاده از حافظه تا حدود 50% و افزایش چشمگیر سرعت (حدودا دو برابر) اجرای آن اشاره کرد. PHP این افزایش سرعت و بهبود عملکرد را مدیون استفاده از نسخه سوم Zend Engine است.

زبان برنامه نویسی PHP چیست

زبان php برای طراحی وب

حالا که با یکدیگر تاریخچه زبان برنامه نویسی PHP را مرور کردیم و فهمیدیم این زبان چگونه ساخته شده است و تا به امروز دستخوش چه تغییراتی بوده است، نوبت می رسد تا برگردیم به اولین سوال خود تا بدانیم PHP چیست و یک تعریف کامل و جامع از آن داشته باشیم.

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

از نقاط قوت این زبان می توان به وجود فریمورک های بسیار قدرتمند و محبوبی هم چون لاراول و سیمفونی، دارا بودن بیش از 80% از سهم بازار وب ، متن باز و رایگان بودن ، جامعه بزرگ و پشتیبانی خوب اشاره کرد. از طرفی PHP توانسته است خودش را به عنوان یکی از محبوب ترین زبان های برنامه نویسی در حوزه طراحی وب معرفی کند.

ساختار کلی و مبانی PHP

می دانیم شما هم مانند هر برنامه نویس دیگری شور و اشتیاق زیادی برای شروع کدنویسی دارید ولی در این بخش از مقاله قصد ورود به آموزش پیشرفته PHP را نداریم ، چون هنوز قصد داریم در مورد PHP با شما صحبت کنیم. ولی خالی از لطف نیست اگر برنامه Hello World نوشته شده با PHP را ببینید تا یک دید کلی در مورد آن در ذهنتان داشته باشید. کد زیر با استفاده از زبان PHP که درون کدهای HTML  قرار گرفته، نوشته شده است:

از آنجایی که PHP نیازی ندارد که الزاما در درون کدهای HTML به کار رود، کوتاه‌ترین برنامه Hello World آن به صورت زیر است:

مفسر PHP فقط کدهایی که داخل جداکننده‌های PHP قرار گیرند را تفسیر می کند و تمامی دستوراتی که خارج از جداکننده‌ های آن قرار گیرند، تفسیر نمی شوند. معروف‌ترین جداکننده‌ زبان PHP علامت <? و ?php> است.

نام متغیرها در زبان PHP حتماً باید با نماد دلار یا $ شروع شود و برخلاف بسیاری از زبان های برنامه نویسی دیگر نیازی به مشخص کردن نوع آن ها نمی باشد. نام متغیرها در این زبان به بزرگ و کوچک بودن حروف حساس است. از طرفی دیگر در PHP خطوط جدید و فاصله‌ها نادیده گرفته می شوند (به جز فاصله‌هایی که در درون رشته‌ها قرار داشته باشند) و همه دستورهای آن باید با علامت سمی‌کولن (;) تمام شوند.

زبان مفسری چیست؟

زبان PHP تفاوت زبان مفسری با زبان کامپایلری

شاید بهتر باشد این موضوع را این چنین مطرح کنیم که تفاوت بین زبان های برنامه نویسی مفسری با زبان های کامپایلری چیست؟ در یک جمله باید گفت کار هر دو مدل این زبان ها ترجمه و پردازش است! ولی هر کدام با روشی متفاوت این کار را انجام می دهند که مزایا و معایب خاص خود را دارند. در ادامه قصد داریم شما را بیشتر با نحوه کارکرد هر کدام از آن ها آشنا کنیم.

آشنایی با زبان های مفسری

به طور کلی به زبان هایی تفسیرشونده یا Interpreted می گوییم که سورس کد آن ها به صورت یکباره کامپایل (پردازش، ترجمه و اجرا) نمی شود بلکه هرخط از کد آن توسط برنامه های مفسر یا تفسیرکننده (Interpreter) به صورت خط به خط بررسی و سپس تفسیر و اجرا می شوند.

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

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

همانطور که اشاره شد، زبان PHP به صورت مفسری کدها را ترجمه و اجرا می کند. زبان های مفسری نسبت به زبان های کامپایلری کندتر می باشند ولی در عوض عملیات دیباگ کردن یا خطایابی آن ها راحت تر صورت می گیرد. از طرفی محصول نهایی زبان های مفسری برخلاف زبان های کامپایلری که یک خروجی واحد ارائه می دهند سورس کد نوشته شده است.

آشنایی با زبان های کامپایلری

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

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

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

آشنایی با تفاوت زبان های سمت سرور و سمت کاربر

به زبان هایی سمت کاربر یا Client-side می گوییم که در مرورگر کاربر پردازش و اجرا می شوند. برای مثال جاوا اسکریپت در مرورگر کاربر اجرا می شود بنابراین جزو زبان های سمت کاربر محسوب می شود. از آنجایی که این نوع زبان های برنامه نویسی در سیستم کاربر پردازش می شوند، سخت افزار و نوع سیستم کاربر می تواند در سرعت اجرای آن ها تاثیرگذار باشد.

اما زبان هایی مانند PHP در سرور (مربوط به سایت) پردازش و اجرا و در نهایت خروجی آن به سوی کاربر ارسال می شود. به همین دلیل به زبان هایی مانند PHP سمت سرور یا Server-Side می گوییم. از آنجایی که پی‌اچ‌پی در سمت سرور اجرا می شود، برای برقراری ارتباط بین کاربر و سرور نیاز نرم افزاری دارد که به آن وب سرور می گوییم.

info نکته :

سرور یک سیستم سخت افزاری است که یک وب سایت روی آن اجرا می شود ولی وب سرور نرم افزاری است که وظیفه مدیریت درخواست ها و اطلاعات را در این سیستم سخت افزاری بر عهده دارد. همچنین اصطلاح اپ سرور به معنای نرم افزار یا وب سایتی است که توسط ما نوشته شده است.

آشنایی با تفاوت زبان های سطح بالا و سطح پایین

زبان های برنامه نویسی به دو دسته زبان های سطح بالا یا High-level و سطح پایین یا Low-Level تقسیم می شوند. و از آن جا که زبان برنامه نویسی PHP یک زبان سطح بالا محسوب می شود، قصد داریم شما را با این دو نوع زبان آشنا کنیم تا تفاوت ها و ویژگی های آن ها را بشناسید.

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

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

شناخت تفاوت سایت های استاتیک و دینامیک

زبان PHP سایت استاتیک و سایت دینامیک

همانطور که در تعریف PHP چیست؟ اشاره شد، اساس و بنیان ساخت این زبان به منظور ایجاد سایت های دینامیک بوده است. بنابراین اگربخواهیم بررسی کنیم که چرا به زبان های برنامه نویسی مانند PHP در دنیای وب نیاز پیدا خواهیم کرد و ضرورت ایجاد آن ها چه عاملی بوده است، باید ابتدا تفاوت بین سایت های استاتیک و دینامیک را به خوبی درک کنیم.

قبل از اینکه زبان هایی مانند PHP ، JavaScript و... ایجاد شوند، صفحات وب به صورت ایستا طراحی می شدند. منظور از طراحی به صورت ایستا، این است که صفحات وب فقط با استفاده از کدهای Css و Html ایجاد می شدند که طراحی وب سایت را با محدودیت های فراوانی همراه می کرد. برای مثال اگر کارفرما و یا صاحب سایت از طراح آن برای ایجاد تغییری در  سایت درخواستمی کرد، طراح می بایست به صورت دستی و یک به یک این تغییرات را در سایت اعمال کند و دیگر خبری از پنل های تنظیمات پیشرفته و یا داشبورد های مدیریتی در سایت های استاتیک نبود.

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

نتیجه گیری

در این مقاله مروری داشتیم بر اینکه PHP چیست و چه مسیری را تا به امروز طی کرده است که بتواند جزو برترین زبان های برنامه نویسی برتر دنیا به شمار بیاید. همچنین تفاوت های این زبان با سایر زبان های برنامه نویسی را بررسی کردیم. سپس با مفاهیم مورد نیاز برای ورود به دنیای وب از جمله " تفاوت زبان های مفسری با زبان های کامپایل شونده "، " تفاوت سایت های دینامیک و استاتیک "، " تفاوت بین زبان های سطح بالا با سطح پایین " و در نهایت " تفاوت زبان های سمت سرور و سمت کاربر " با زبانی ساده آشنا شدیم.

متخصص PHP
دوست داری از طریق برنامه نویسی کسب درآمد کنی؟ اگر می خوای با برنامه نویسی وب و موبایل کسب درآمد کنی، جایی استخدام شی و یا حتی اینکه درامد ارزی داشته باشی، حتما دوره های متخصص سون لرن رو یه نگاه بنداز : متخصص شو arrow_back
7Learn Experts
comment دیدگاه کاربران
Roohollah Taeb replyپاسخ

از ما که خیلی وقته گذشته! ولی قطعا زمانی که برنامه نویسی رو شروع می کردم خوشحال میشدم اگر چنین مقاله ای رو در اختیار داشتم.
ممنون!

مهدی علامه

خوشحالم که این مقاله تونسته مفید واقع بشه…البته نظر شخصی من اینه که ماهی و هر موقع از آب بگیری تازس و هیچ موقع برای یادگیری دیر نشده

چگینی

فقط وقتی بمیری دیره
ز گهواره تا گور دانش بجوی
هر کار سختی با آهسته و پیوسته رفتن آسون میشه

TiTAN replyپاسخ

ممنون خوب بود
در مورد سایت ها ایستا و پویا یا همون static و dynamic بیشتر توضیح بدید
که چجوری قالب ایستا رو تبدیل کنیم به پویا ، یا پویا قالب بنویسیم

مهدی علامه

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

add_circle ارسال دیدگاه

خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :