آموزش جدید PHP
در این بخش آموزشی ، به آموزش زبان PHP به عنوان قدرتمند ترین زبان برنامه نویسی و طراحی صفحات وب اپن سورس پرداخته ایم
نکات کلیدی PHP
در این دوره آموزشی به شرح تعدادی نکته و تکنیک بسیار کاربردی که می توان برای افزایش کارایی و بهینه سازی کد PHP مورد استفاده قرار داد، می پردازیم.
در این بخش از نکات آموزشی PHP با مباحثی در مورد دیتابیس آشنا می شویم
برای پرهیز از هرگونه اشتباه می توان از این نکات استفاده کرد
برای پرهیز از هرگونه اشتباه می توان از این نکات استفاده کرد
در آموزش حاضر نحوه ی ساخت یک اپلیکیشن تحت وب با زبان PHP را از 0 تا 100 به شما می آموزیم. این اپلیکیشن تحت وب دارای قابلیت هایی نظیر ورود / خروج (login / logout) به سایت، ایجاد (درج)، خواندن، بروز رسانی یا حذف (CRUD) رکورد در دیتابیس خواهد بود. تمامی مفاهیم را به تفصیل شرح خواهیم داد. چنانچه تازه پا به عرصه ی برنامه نویسی تحت وب سمت سرور (backend) گذاشته اید، این آموزش ویژه ی شما می باشد. لازم به ذکر است که در مبحث جاری از فریم ورک و چارچوب نرم افزاری تحت وب استفاده نمی کنیم و همه چیز را با php خالص از 0 می نویسیم. همچنین تمرکز بر روی پیاده سازی قابلیت ها و رفتار سایت خواهد بود و طراحی ظاهر آن در این آموزش تحت پوشش قرار نمی گیرد. ظاهر اپلیکیشن شما صرفا یک لیست ساده از آیتم ها می باشد که به هنگام ورود کاربر به سایت، این لیست از آیتم ها را نمایش می دهد.
برنامه نویسی شی گرا، به اختصارOOP، یک روش یا سبک برنامه نویسی است که در آن توسعه دهنده تمامی متغیرها و توابعی که در کنار هم عملیاتی را انجام می دهند را در قالب یک کلاس واحد سازمان دهی می کند. لازم به توضیح است که تکنیک برنامه نویسی شی گرا به مراتب کارا و پیچیده تر از سبک برنامه نویسی مبتنی بر تابع (procedural) است.
در مبحث قبلی با مفهوم سازمان دهی کدهای مرتبط که با همکاری وظیفه ی خاصی را به انجام می رسانند، داخل واحد کلاس آشنا شدیم. همچنین یک کلاس به نام Car ایجاد کردیم که کدهای مربوط به ماشین از جمله ویژگی های ظاهری آن و رفتاری که از خود نشان می دهد را دربر می گرفت.
در مبحث حاضر به شرح نحوه ی فراخوانی دستورات به صورت پشت سرهم در php می پردازیم. در این آموزش خواهید دید هنگامی که متد یک کلاس $this را با استفاده از دستور return در انتهای بدنه (تابع) برمی گرداند، چگونه می توان دستورات را به صورت پشت سرهم در یک خط صدا زده و کد اپلیکیشن مورد نظر را به صورت روان و کاراتر نوشت.
همان طور که در آموزش های قبلی مشاهده کردید، در کد خود از کلیدواژه ی public به وفور استفاده کرده اما دلیل آن را شرح ندادیم. این کلیدواژه از جمله تنظیم کنندگان سطح دسترسی است که می توانیم در کد شی گرا php خود از آن استفاده کنیم. در مبحث حاضر به شرح تنظیم کننده ی سطح دسترسی private می پردازیم.
علاوه بر magic method ها، زبان PHP تعدادی زیادی ثوابت با مقادیر از پیش تعیین شده به نام magic constants در اختیار توسعه دهنده قرار می دهد. به طور مثال، می توان با استفاده از ثابت __CLASS__ (مقادیر ثابت بین دو زیر خط محصور شده و با حروف بزرگ نوشته شده است) اسم کلاس میزبان (ثابت مورد نظر) را بازیابی کرد.
یکی از مزایای استفاده از تکنیک برنامه نویسی شی گرا برای توسعه ی اپلیکیشن های PHP، کاهش کدهای تکراری و اجتناب از نوشتن منطقی است که قبلا پیاده سازی شده. این کار با بهره گیری از مفهومی به نام inheritance امکان پذیر می باشد. code duplication زمانی رخ می دهد که برنامه نویس کدی که قبلا نوشته را برای بار دوم یا سوم پیاده سازی کرده و تکرار کند. Inheritance بر آن است تا همین معضل را برطرف نماید. در ارث بری، یک کلاس پدر (parent class) داریم که تعدادی متد و property دارد و یک کلاس فرزند یا مشتق (child) که قادرند از کد (اعضای) کلاس پدر استفاده کنند. در وراثت توسعه دهنده یک قطعه کد کارا با قابلیت استفاده ی مجدد تعبیه کرده و آن را در سطح کلاس پدر قرار می دهد. سپس از آن کد بارها (در بخش های مختلف پروژه) در قالب کلاس های فرزند یا مشتق شده از کلاس پدر بهره می گیرد.
از کلاس های abstract زمانی استفاده می کنیم که بخواهیم برنامه نویس را مجاب به پیاده سازی متد خاصی در کلاس مشتق بکنیم. در استفاده از کلاس های انتزاعی، می خواهیم توسعه دهنده متدی با نام معین را پیاده سازی کند ولی درباره ی منطق و کد داخل بدنه ی آن اطمینانی نداشته و در واقع آن را به خود توسعه دهنده واگذار می کنیم. لازم به ذکر است که در کلاس abstract تنها تعریف متد وجود داشته و پیاده سازی آن در کلاس مشتق شده از کلاس انتزاعی، انجام می شود. به عنوان مثال می توان به اشکال مختلف نظیر دایره، مستطیل، هشت گوش و غیره که هر یک یک کلاس است اشاره کرد.
Interface در تکنیک برنامه نویسی شی گرا یک الگوی پیاده سازی برای توابع بوده و از جهاتی شبیه کلاس های انتزاعی (abstract class) محسوب می شود. بدین معنی که interface نیز مانند کلاس های انتزاعی میزبان تعدادی متد abstract است که توسعه دهنده باید آن ها را در بدنه ی کلاس ارث برنده از interface، پیاده سازی کند. از آنجایی که interface ها کلاس های ارث برنده را مجاب به پیاده سازی متد مورد نظر می کنند، به سازمان دهی و خوانایی هرچه بیشتر کد اپلیکیشن کمک شایانی می نمایند.
Type hinting در PHP این امکان را به ما می دهد تا نوع پارامترهای ورودی مورد انتظار (و مجاز) را به هنگام اعلان تابع مشخص کرده و به عبارت دیگر پارامترهای ارسالی به تابع را اعتبارسنجی نماییم. بنابراین به وسیله ی قابلیت TYPE HINTING در PHP برنامه نویس می تواند نوع داده ی مقادیری که به هنگام فراخوانی تابع به آن فرستاده می شوند را مشخص و چنانچه از نوع مورد انتظار نبود آن را نپذیرد. استفاده از این روش می تواند در سازمان دهی هرچه بهتر کد موثر بوده و پیغام خطاها را بهینه نماید.
همیشه لازم نیست برای دسترسی به متدها و property های یک کلاس از روی آن آبجکت بسازید. در واقع توسعه دهنده می تواند با تعریف متدها و property های کلاس به صورت static، به راحتی بدون ساخت آبجکت از روی کلاس میزبان به این متدها و property ها دسترسی داشته باشد. اگرچه در کل استفاده از متدهای static و property های static توصیه نمی شود، با این حال مواردی پیش می آید که در آن این امکان می تواند بسیار کارا باشد.
ابتدا درباره ی روش های ناصحیح ذخیره ی گذرواژه و علت ناکارامد بودن این روش ها خواهیم پرداخت.
php.ini یک فایل مربوط به اپلیکیشن های تحت وب php است که تنظیمات اپلیکیشن از جمله کنترل و تنظیم اختصاصی رفتار php در زمان اجرا را دربرمی گیرد. به عبارت دیگر php.ini فایل تنظیمات و پیکربندی اپلیکیشن های php در لینوکس است.
PHP تعدادی تابع درون ساخته و از پیش تعریف شده جهت انجام عملیات مختلف بر روی آرایه و دستکاری مقادیر آن ها به روش های مختلف دارد و همان طور که می دانید آرایه یک ساختار داده ای کارامد برای ذخیره، مدیریت و انجام عملیات بر روی متغیرها می باشد.
افزونه ی calendar تعدادی یک سری تابع کارا جهت آسان سازی عملیات تبدیل بین فرمت های مختلف تقویم و نمایش تاریخ و زمان ارائه می دهد. استادنداردی که افزونه ی calendar بر آن پایگذاری شده، گاهشماری روزهای جولیان می باشد. مبدا این گاه شماری به طور دقیق از ظهر روز دوشنبه اول ژانویه سال4713 قبل از میلاد است. جهت تبدیل بین سیستم های گاهشماری، بایستی ابتدا تاریخ و زمان مربوطه را به سیستم گاهشماری روزهای جولیان تبدیل و سپس خروجی را به سیستم گاه شماری دلخواه خود تبدیل نمایید.
افزونه ی ctype تعداد زیادی تابع کاربردی در اختیار برنامه نویس قرار می دهد که تعلق یا عدم تعلق یک کاراکتر یا رشته به رده خاصی را بر اساس تنظیمات زبان محلی (زبان کشور مورد نظر) بررسی می کند.
این توابع به شما امکان می دهند تا اطلاعاتی درباره ی کلاس ها و آبجکت های ساخته شده از روی کلاس بدست بیاورید. در واقع توسعه دهنده می تواند با استفاده از این توابع، علاوه بر اسم کلاسی که آبجکت از روی آن ساخته شده، property ها و توابع عضو آن را نیز بازیابی کند.
این توابع به توسعه دهنده امکان می دهند تا مقدار تاریخ و زمان سرویس دهنده/سروری که اسکریپت PHP بر روی آن اجرا می شود را بازیابی نماید. با استفاده از توابع Date و Time توسعه دهنده می تواند تاریخ و زمان سرویس دهنده را به روش های مختلف فرمت دهی کرده و نمایش دهد.
توسعه دهنده می تواند با استفاده از این توابع اطلاعات پوشه ها و محتوای درون آن ها که بر روی سرویس دهنده مستقر هستند را بازیابی و در خروجی نمایش دهد. لازم است برای فعال سازی و قابلیت فراخوانی تابعchroot()، PHP را با –enable-chroot-func تنظیم نمایید.
با استفاده از توابع گزارش گیری که در آموزش جاری با آن ها آشنا می شوید، قادر خواهید بود پیغام هایی را به طور مستقیم به کامپیوترهای دیگر، به یک ایمیل، به گزارشات سیستم (system logs) ارسال نمایید و از این طریق بر مهمترین بخش های اپلیکیشن ها و وب سایت های خود نظارت داشته و از آن ها به صورت گزینشی گزارش گیری نمایید.
توابع کار با سیستم فایل در PHP به توسعه دهنده این امکان را می دهند تا به Filesystem دسترسی داشته و در صورت نیاز آن را دستکاری نماید. هسته ی PHP تعداد زیادی تابع درون ساخته و آماده جهت ویرایش سیستم فایل در اختیار برنامه نویس قرار می دهد که در آموزش حاضر به شرح آن ها می پردازیم.
PHP تعداد زیادی تابع کاربردی برای دسترسی و کار با سرویس دهنده های دیتابیس MySQLi فراهم می کند که در مبحث جاری آن ها را فهرست کرده و شرح مختصری از هر یک ارائه می دهیم. PHP با ویرایش 4.1.13 دیتابیس MySQLi و نسخه های جدیدتر آن کار می کند.
توابع کار با رشته PHP بخشی از core و هسته ی PHP بوده و جهت فراخوانی آن ها نیازی به نصب و تنظیمات خاص نیست.
PHP Filter جهت اعتبارسنجی و فیلتر داده هایی که از منابع نامطمئن و غیرایمن (مانند ورودی کاربر) به سمت سرور می آیند بکار می رود.