میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

معرفی و آشنایی اولیه PDO (1)

۶۶ / ۱۰۰

سلام به شما همراهان و دوستان محترم سایت آموزشی و فروشگاهی مدرسه کدنویسی به دوره ی آموزش PDO خوش آمدید. در این دوره قصد داریم شما را با معرفی و آشنایی اولیه PDO (1) (مخفف PHP Data Object – به معنی شیء داده ی PHP) به صورت کامل آشنا کرده و نحوه استفاده از آن را به شما آموزش دهیم پس با من همراه باشید.

 

این دوره برای افراد مبتدی در نظر گرفته نشده است. برای استفاده ی واقعی از مطالب این دوره علاوه بر آشنایی قبلی با مباحث پایگاه داده (مانند MySQL) باید آشنایی کلی با مباحث برنامه نویسی شیء گرای PHP نیز داشته باشید.


چرا از mysql یا mysqli استفاده نکنیم؟

سوالی که اکثر توسعه دهندگان هنگام برخورد با تکنولوژی های جدید میپرسند این است که “چرا باید از فلان تکنولوژی استفاده کنم؟” یا “چرا سختی یادگیری فلان تکنولوژی را تحمل کنم و روش خودم را تغییر دهم؟” این سوالات نه تنها سوالات بدی نیستند بلکه سوالات بسیار خوبی محسوب می شوند. پرسش گری هنگام مواجهه با هر موردی در برنامه نویسی از بهترین عادات برنامه نویسان خوب است. من سعی می کنم با ذکر چند مورد به این سوالات جواب بدهم:

رابط PDO شیء گرا است

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

زمانی که بحث به PHP می رسد، می گوییم PHP بهتر یعنی PHP شیء گرا.

یعنی هر چه بیشتر از اشیاء استفاده کنید، کد های مرتب تر و با قابلیت تست آسان تر دارید. اولین قدم برای برنامه نویسی شیء گرا در سمت پایگاه داده استفاده از رابط PDO است.

انتزاعی بودن PDO

انتزاعی بودن یا استفاده ی PDO از یک لایه ی انتزاعی در تصویر زیر به خوبی دیده می شود:

 

لایه ی انتزاعی رابط PDO
لایه ی انتزاعی رابط PDO

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

  • PDO provides a data-access abstraction layer
  • PDO does not provide a database abstraction

وقتی می گوییم PDO یک لایه ی دسترسی به داده ی انتزاعی (data-access abstraction layer) دارد، یعنی لایه ای که مسئول ارتباط با پایگاه های داده است، انتزاعی است و مخصوص یک نوع پایگاه داده ی خاص نیست. این بدان معنی است که PDO از شما پارامتر هایی ثابت را می گیرد (مثلا نام پایگاه داده، آدرس سرور و …) و با همین پارامتر ها و یک دستور واحد می تواند به پایگاه های داده ی بسیاری متصل شود.

از طرفی زمانی که می گوییم PDO پایگاه داده را انتزاعی نمی داند (database abstraction) یعنی با اینکه می تواند با یک دستور به پایگاه های داده ی مختلف متصل شود و از لحاظ اتصال به پایگاه داده انتزاعی است، اما برای کار با پایگاه داده (مثلا نوشتن query ها یا SQL statement ها) هیچ لایه ی انتزاعی ندارد. بنابراین باید query های مخصوص هر پایگاه داده را با زبان خودش بنویسید.

فرض کنید کارفرما از شما پروژه ای خواسته است و شما این پروژه را با MySQL و به بهترین شکل و فرم نوشته اید. حالا چند وقت گذشته است و کارفرما به شما می گوید به هر دلیلی مدیران شرکت تصمیم گرفته اند که پروژه باید با PostgreSQL پیاده سازی شود. در چنین حالتی می خواهید چه کار کنید؟

بهترین کاری که می توانید انجام دهید جایگذاری های پی در پی و شلخته و شلوغ است، مانند تبدیل mysqli_connect به pg_connect. همچنین باید تمامی توابعی را که برای اجرای query ها و دریافت داده نوشته اید را تصحیح یا بازنویسی کنید و این داستان حالا حالا ها تمام شدنی نبود اما اگر از PDO استفاده کرده بودید کافی بود چند پارامتر را در فایل configuration تغییر دهید!

نکته: شما هنوز هم مجبور خواهید بود که query های MySQL را به query های PostgreSQL تبدیل کنید. در بعضی از وب سایت ها به اشتباه نوشته شده است که اگر از PDO استفاده کنید همه چیز خود به خود و به طور جادویی کار می کند! خیر، مزیت استفاده از PDO این است که به جز بازنویسی query ها نیازی به تغییر زیادی در سورس کد خود نخواهید داشت.

قابلیت استفاده از parameter binding

قابلیت parameter binding (به معنی متصل کردن پارامتر ها) به شما اجازه می دهد تا به جای placeholder ها در query خود، مقادیر متغیر ها را قرار دهید. اگر بخواهم به زبان ساده تر بگویم، می گویم به جای نوشتن query کامل در سورس کد، می توانید قسمت هایی از آن را با placeholder (به معنی جا گیرنده) ها پر کنید.

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

دو دلیل عمده برای استفاده از پارامتر های متصل (bind parameters) وجود دارد:

  • امنیت: bind parameter ها بهترین راه برای جلوگیری از SQL injection هستند.
  • کارایی و بهره وری: پایگاه های داده ای که برای اجرا از کش پشتیبانی می کنند، می توانند از کش قبلی برای اجرای چندباره ی یک statement استفاده کنند که باعث سرعت بخشیدن به کار می شود.

قابلیت fetch کردن داده ها در اشیاء

اگر از ORM هایی مثل Doctrine استفاده کرده باشید می دانید قابلیت ارائه ی داده در جدول ها به صورت یک شیء چقدر اهمیت دارد. اگر دوست دارید از این قابلیت استفاده کنید اما دوست ندارید به سراغ یادگیری ORM بروید، استفاده از PDO این قابلیت را به شما می دهد.

رابط mysql دیگر پشتیبانی نمی شود!

رابط mysql از PHP7 حذف شده است! بنابراین اگر بخواهید از PHP7 استفاده کنید (که حتما پیشنهاد می کنم چنین کاری را انجام دهید) باید تمامی دستورات mysql را به mysqli تغییر دهید. بنابراین حالا که قرار است از mysql مهاجرت کنید چرا مستقیما به PDO مهاجرت نکنید؟ اگر قرار باشد در کشور دیگری زندگی کنید و قصد دارید از خانه ی خود دور شوید، چرا کشور ثروتمند و مرفه ای را انتخاب نکنید و به سیبری بروی!؟

همچنین بر اساس روند پیشرفت زبان PHP احتمال اینکه mysqli هم از بین برود غیر ممکن نیست و حتی اگر این اتفاق نیوفتند، مطمئن باشید که در آینده اکثر کارفرمایان از شما درخواست استفاده از رابط های شیء گرا را خواهند داشت.

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

شروع کار با PHP و PDO (آموزش PDO)

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

 


امیدواریم آموزش معرفی و آشنایی اولیه PDO (1) نیز برای شما مفید واقع شده باشد و ادامه سری آموزش اتصال شیء گرا به پایگاه داده ( PDO ) را دنبال کنید . برای مطالعه پست‌ها بیشتر ، ما را در مدرسه کدنویسی تلگرام  و یا در تی جوان اینستاگرام دنبال کنید.

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.
ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟