آموزش شی گرایی در PHP – اعتبارسنجی داده های ورودی type hinting

آموزش شی گرایی در PHP

با type hinting می توانیم نوع داده ورودی (آرایه, آبجکت, اینترفیس و..) آرگومان های تابع را مشخص کنیم.

این کار می تواند بسیار مفید باشد چرا که باعث سازماندهی بهتر کدها می شود و پیام های خطا را بهبود می بخشد.

 

در این سری از آموزش شی گرایی در PHP در مورد type hinting با تعریف آن در آرایه و آبجکت ها ورژن ۵ و ۷ php شروع می کنیم.

همچنین نوع داده های ساده ای مثل عددی,(integer) اعشاری,(double)  رشته ها,(strings)  بولین,(Boolean/true/false)  که فقط درPHP 7  پشتیبانی می شود را یاد می گیرید.

 

اعتبارسنجی داده های ورودی (type hinting) در آرایه ها

اگر بخواهیم یک تابع را مجبور به دریافت آرگومان هایی از نوع آرایه (array) کنیم نیاز است از کلمه کلیدی array قبل از نام آرگومان استفاده بهره ببریم:

 

در مثال زیر, تابع calcNumMilesOnFullTank() میزان مسافتی که یک مدل خاص از خودرو می تواند با باک پر طی کند را بر اساس مایل برگشت می دهد.

این تابع فقط آرگومان از نوع آرایه را می پذیرد, که همانطور که می بینید با کلیدواژه array مشخص کردیم:

 

ابتدا یک مقدار غیر از آرایه را به تابع پاس می دهیم تا نتیجه را ببینید:

 

error
Catchable fatal error: Argument 1 passed to calcNumMilesOnFullTank() must be of the type array, string given
این ارور نوشته که آرگومان اول تابع ما انتظار نوع داده آرایه را داشت ولی یک رشته پاس دادید.

 

نتیجه
Toyota : 528
BMW : 533

حالا کد خود را دوباره می نویسیم و اینبار آرایه را با آیتم هایی که نیاز است پاس می دهیم که شامل مدل ماشین, حجم باک و سوخت بر اساس مایل است.

 

چطور نوع داده ورودی را آبجکت تعیین کنیم؟

Type hinting می تواند تابع را مجبور به دریافت آرگومان از نوع آبجکت کند. برای همین, نام کلاس را قبل آرگومان قرار میدیم.

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

 

آیا PHP از type hinting برای نوع داده های ساده پشتیبانی می کند؟

php 7 پشتیبانی می کند اما php 5 از مفهوم type hinting برای داده های ساده مثل عدد, اعشار, رشته ها و بولین ها پشتیبانی نمی کند

چون php 5 از اعتبارسنجی داده های وروردی مثل integers, Booleans, strings پشتیبانی نمی کند می توانیم از خانواده توابع “is_”  استفاده کنیم:

 

  • is_bool –تشخیص مقدار بولین (true یا false)
  • is_int –تشخیص مقدار عدد صحیح
  • is_float –تشخیص عدد اعشاری
  • is_null  –تشخیص مقدار NULL
  • is_string  –تشخیص رشته

 

ولی برای PHP7‌ به راحتی می توانید از مفهوم type hinting بصورت زیر استفاده کنید:

 

جمع بندی آموزش شی گرایی در PHP – اعتبارسنجی داده های ورودی type hinting

در این بخش از سری آموزش شی گرایی در PHP با موضوع type hinting به منظور اعتبارسنجی داده های ورودی توابع و متدها آشنا شدید

هر سوالی در مورد این بخش از آموزش داشتید حتما کامنت کنید خوشحال میشم به سوالات و مشکلات شما در مورد اعتبارسنجی داده در php کمک کنم

موفق و پیروز باشید

حسن شفیعی علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندورید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید
مطالب زیر را حتما بخوانید
دیدگاه کاربران

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

دوره های آموزشی