تعداد بازدید: 108

متغیر ها در php قسمت دوم

مباحثی که در این مقاله در رابطه با متغیر ها قصد بررسی شون رو داریم :

  • Type Juggling
  • Variable Funcions
  • Predefined Variables

تبدیل نوع متغیر – Type Casding

علی رغم این که در php ما پس از مقدار دهی به متغیر نوع آن را تعیین می کنیم باز هم متغیر ها در php از انواع مشخصی برخوردارند که گاها نیاز پیدا می کنیم تا آن ها را به هم تبدیل کنیم. مثلا در تابعی نیاز هست تا پارامتر ورودی به int داده بشه حال اگر به اشتباه کاربر به جای عدد 25 رشته “25” رو به تابع داده باشه ما نیاز پیدا می کنیم تا برای جلوگیری از خطا این مقدار رو تبدیل کنیم.

نکته : عملیات های ریاضی روی داده هایی از نوع int انجام می شود.

نکته : مرتب سازی بر اساس داده عددی نیاز به نوع int دارد و اگر به صورت رشته ای داده شود این عملیات انجام پذیر نخواهد بود. مثال عدد 99 از 100 کمتره ولی از نظر کد اسکی رشته “99” بزرگتر از رشته “100” است.

تبدیل نوع با استفاده از تعریف نوع متغیر :

برای این نوع تبدیل زمانی که متغیر رو داریم از مقادیر زیر برای تبدیل به نوع مورد نظر خودمون استفاده می کنیم. مثلا رشته “22” تبدیل به عدد 22 :

دیدید که چطور با چه فرمتی مقدار رشته ای “1” را به مقدار عددی 1 تبدیل کردیم. برای متغیر های دیگر از همین نوع از مقادیر زیر استفاده کنید :

  • (int), (integer) – تبدیل نوع به int
  • (bool), (boolean) – تبدیل نوع به boolean
  • (float), (double), (real) – تبدیل نوع به float
  • (string) – تبدیل نوع به string
  • (array) – تبدیل نوع به array
  • (object) – تبدیل نوع به object
  • (unset) – تبدیل نوع به NULL

توابع مربوط به تبدیل نوع متغیر

gettype : این تابع ورودی متغیر می گیرد و خروجی نوع آن را مشخص می کند.

خروجی های این تابع به شرح زیر است :

  • “boolean”
  • “integer”
  • “double”
  • “string”
  • “array”
  • “object”
  • “resource”
  • “resource (closed)” در ورژن PHP 7.2.0
  • “NULL”
  • “unknown type”

♣ در این زمینه ما توابعی داریم که تشخیص میده که متغیر ورودی ما از نوع خاصی هست یا خیر ورودی این سری از توابع متغیر هست و خروجی اون با توجه به نوع تابع و نوع متغیر ورودی true یا false است :

  • is_​array :‌ آیا متغیر از نوع آرایه است.
  • is_​bool : آیا متغیر از نوع boolean است.
  • is_​float : آیا متغیر از نوع اعشاری یا float است.
  • is_​int : آیا متغیر از نوع عدد صحیح یا integer است.
  • is_​null : آیا مقدار متغیر از نوع NULL است . این تابع برعکس تابع isset است.
  • is_​numeric : آیا مقدار متغیر عددی است . حال این عدد از هر نوع (عدد صحیح ، منفی ، اعشاری … ) می تواند باشد.
  • is_​object : آیا متغیر ما حاوی یک شی است.
  • is_​string : آیا متغیر از نوع رشته ای است.

settype : برای تغییر نوع متغیر استفاده می شود. ساختار کلی آن به شکل زیر است :

پارامتر های این تابع :

  • var : متغیر مربوطه . این متغیر به شکل فراخوانی با ارجاع به تابع داده می شود. یعنی عملیات روی این پارامتر به درستی انجام می شود. البته نیازی نیست در زمان استفاده از این تابع شما علامتی & رو قبل از پارامتر var بزارید و این تابع به صورت پیش فرض این کار رو میکنه.
  • type : نوعی که قراره متغیر به اون تبدیل بشه.

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

  • “boolean” or “bool”
  • “integer” or “int”
  • “float” or “double”
  • “string”
  • “array”
  • “object”
  • “null”

در مثال بالا نوع داده های متغیر ها را تبدیل کردیم . به مقدار نهایی متغیر ها توجه کنید. خروجی این تابع بنا به موفقیت آمیز بودن عملیات تبدیل true , false خواهد بود.

♣ در این زمینه ما توابع دیگری هم داریم که مستقیما تبدیل نوع را انجام می دهند :

  • intval : بازگشت مقدار با نوع int
  • boolval : بازگشت مقدار از نوع boolean
  • strval : بازگشت مقدار از نوع string

نکته مهم : ورودی این تابع یک متغیر است و خروجی اون مقدار متغیر ورودی با توجه نوع داده ای که تابع تعیین می کنه هست. نکته ای که وجود داره اینه که این با فراخوانی با مقدار است و بعد اجرای تابع مقدار متغیر ورودی تغییری نمی کنه.

نکته مهم : ما به وسیله تلفیقی از تابع array_map و توابع تبدیل نوع تمامی اعضای یک آرایه را به نوع دلخواه تبدیل کنیم.

مثلا در مقدار بالا ما در متغیر array_int آرایه array_str را ریختیم به شکلی که تمامی اعضای آن از نوع int بودند. ( با تلفیق تابع array_map و intval )

سایر توابع مربوط به متغیر

empty : این تابع پر کاربرد چک می کند که مقدار متغیر شما خالی است یا خیر .

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

نکته : حتما باید به عنوان پارامتر ورودی به این تابع متغیر بدید . اگر مقدار مستقیم یا رشته بدید خطاست.

isset : چک می کنه که آیا مقدار متغیر set شده و همچنین برابر با NULL نباشه. به عنوان پارامتر ورودی باید متغیر بهش بدید و از دادن مقدار مثل رشته خودداری کنید.

unset : مقدار متغیر را برابر با NULL می کند و اصطلاحا متغیر را تخریب می کند.

نکته : عملکرد تابع unset درون توابع تنها در ناحیه محلی تابع عمل می کنه :

حتی اگر به صورت فراخوانی با ارجاع انجام شده باشه :

متغیر های از پیش تعریف شده – Predefined Variables

یه سری متغیر از پیش تعریف شده در php داریم که مهم ترین اون ها عبارتست از :

$GLOBALS : تمامی متغیر های جهانی را در خود دارد. متغیر های global در درون یک آرایه انجمنی قرار دارند.

$_POST : این متغیر آرایه ایست از متدهای post شده توسط یک فرم یا وب سرویس در یک صفحه .

$_GET : این متغیر حاوی آرایه انجمنی از متد های ارسال شده توسط get در یک صفحه html.

$_REQUEST : تمامی مقادیر ارسال شده چه با متد post و یا get در یک صفحه در آرایه انجمنی با این نام قرار می گیرند.

$_FILES : متغیر شامل اطلاعات فایل آپلود و ارسال شده توسط یک فرم که شامل مقادیر زیر است :

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

برای اطلاعات بیشتر به مقاله کار با فایل ها در php مراجعه کنید.

$_SERVER : شامل اطلاعاتی در رابطه با اسکریپت و مسیر و سرور می باشد.

$_SERVER['PHP_SELF'] آدرس فایل مربوطه ای که اسکریپت توی اون اجرا شده. از این برای action فرم هایی استفاده می شه که قراره به همون صفحه post بشه. مثلا ما در فایل index.php اسکرپتمون هست مقدارش میشه از ریشه host مربوطه تا فایل index.php که یه همچین شکلی داره : string(10) "/index.php"
$_SERVER['SERVER_ADDR'] آی پی آدرس سرور . مثلا یه عددی به شکل 185.126.212.69
 $_SERVER['SERVER_NAME']  نام سرور که معمولا با نام آدرس دامنه ای که اسکپریپت توش اجرا شده برابره . مثلا : gnutec.ir
 $_SERVER['REQUEST_SCHEME'] نوع درخواست که میتونه http یا https باشه.
 $_SERVER['HTTP_HOST'] آدرس هاستی که پروژه روش اجرا شده که میتونه آدرس دامنه باشه مثلا :‌ gnutec.net
 $_SERVER['HTTP_USER_AGENT']  اطلاعات مرورگر و سیستم عامل کاربری که درخواست رو به اسکریپت داده . مثلا برای من میشه :
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0
 $_SERVER['QUERY_STRING']  query string که به لینک داده شده باشه. مثلا اگر لینک به شکل http://checkip.gnutec.ir/?name=abolfazl باشه مقدارش برابر با name=abolfazl میشه.
$_SERVER['REMOTE_ADDR'] آدرس آی پی کاربر بازدید کننده رو بر میگردونه . مثلا : 188.158.117.137 همون طور که می بینید این آی پی کسی است که remote زده و با آی پی سرور متفاوته.
$_SERVER['REQUEST_URI'] مقداری که بعد از domain میاد . مثلا اگر درخواست برابر https://gnutec.net/contact باشه مقدار این متغیر برابر با contact خواهد بود.

نکته : برای پیدا کردن application directory uri که میشه همون آدرس شروع نرم افزار می تونید از روش زیر استفاد کنید. به طور مثلا نرم افزار من در دامنه gnutec.ir و در دایرکتوری gwa هست .

مطالب مشابه

آرایه ها در php

در این مقاله قصد داریم تا آرایه ها رو در php بررسی کنیم و همچنین توابع مرتبط با آرایه ها رو بررسی کنیم. انواع آرایه در...

strings-function in php

رشته ها در PHP

توابع مربوط به رشته ها در php کاربردهای زیادی دارند از جمله ساخت رشته های رمزنگاری شده و همچنین ساخت خلاصه متن و تبدیل...

اشتراک گذاری :

ابوالفضل صباغ

برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای متغیر ها در php قسمت دوم

دیدگاهتان را بنویسید

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