تبلیغات
تبلیغات

دوره H آموزش PHP: درس 2: متغیرها در PHP

دوره H آموزش PHP

دوره H آموزش PHP
درس 2 – متغیرها در PHP


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

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

تعریف متغیر در PHP

در php، بر خلاف زبان‌هایی مثل جاوا، سی شارپ و … و همانند JavaScript، نیازی به تعریف نوع متغیر نیست! یعنی شما در هنگام تعریف متغیر، مشخص نمی‌کنید که از چه نوعی است و بنابراین، نوع متغیر در زمان مقداردهی آن مشخص می‌شود.

یک متغیر در PHP با علامت دلار ($) شروع شده و سپس نام آن نوشته می‌شود.

قوانین متغیرهای PHP

موارد زیر حتما باید رعایت شوند، در غیر این صورت خطا رخ می‌دهد:

  • نام متغیر باید با یک حرف یا علامت _ شروع شود.
  • نام متغیر نمی‌تواند با یک عدد شروع شود.
  • نام متغیر تنها می‌تواند شامل حروف الفبای انگلیسی و اعداد و علامت _ باشد.
  • نام متغیر به حروف بزرگ و کوچک حساس است.
    مثلا FullKade با fullkade فرق دارد.

نکته 1: از علامت‌های // برای نوشتن توضیحات برای خود برنامه نویس استفاده می‌شود و تاثیری در کد ندارد.
نکته 2: در PHP، یک متغیر زمانی که مقداری به آن اختصاص داده شود، ایجاد می‌شود.

در کد بالا، ما متغیری به نام name و age تعریف کرده‌ایم؛ و هردو را مقداردهی و در انتها فقط متغیر name را چاپ کرده‌ایم.

Constants (ثابت ها)

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

برای تعریف یک ثابت در php از تابع define استفاده می‌کنیم.

پارمترهای ورودی تابع:

  • name: نام ثابت
  • value: مقداری که باید نگه دارد
  • case-insensitive: حساس به حروف بزرگ و کوچک باشد یا نباشد.
    مقدار true یا false می‌گیرد که به صورت پیش فرض false بوده و به حروف بزرگ و کوچک حساس است.
    (بنابراین در ثابت‌ها می‌توان کاری کرد که آن متغیر با آن نام به حروف بزرگ و کوچک حساس نباشد.)

یک مثال که به حروف بزرگ و کوچک حساس نیست:

یک مثال که به حروف بزرگ و کوچک حساس است:

همانطور که می‌بینید، اولا موقع استفاده نیازی به نوشتن $ نیست و همچنین در مثال دوم به حروف بزرگ و کوچک حساس نیست!

کاربرد ثابت‌ها

به احتمال خیلی زیاد شاید بپرسید وقتی نمی‌شود مقدار آن را بعدا عوض کرد چه فایده ای دارد!

شما فرض کنید می‌خواهید رمز عبور دیتابیس را در هزار جای برنامه خود استفاده کنید آیا باید در هزار جا رمز عبور خود را وارد کنید؟
تنها لازم است یک ثابت تعریف کنید و آن ثابت را در هزار جا قرار دهید و اگر یک موقع رمزتان را تغییر دادید، تنها در تعریف کردن ثابت باید آن را عوض کنید.

انواع داده ها (Data Types)

همانطور که دیدید، متغیرها می‌توانند انواع داده‌ها را در خود ذخیره کنند.

پس نوع داده توسط PHP پشتیبانی می‌شود که می‌توانیم به نوع های String, Integer, Float, Boolean, Array, Object, NULL, Resource اشاره کنیم.

String (رشته)

یک متغیر از نوع String شامل دنباله‌ای از کاراکترها می‌باشد. مثلا: “Welcome to FullKade”
همچنین یک String می‌تواند شامل هر متنی بین دو علامت نقل قول ” یا یک علامت نقل قول ‘ باشد.

  • به ” میگوییم double quotes (دابل کوتیشن)
  • به ‘ میگوییم single quotes (تک یا سینگل کوتیشن)

نکته: شما می‌توانید دو متغیر یا دو مقدار رشته‌ای را با استفاده از علامت نقطه (.) به هم وصل کنید. مثل:

Integer (عدد صحیح)

یک عدد صحیح، یک عدد کامل بدون ممیز یا اعشار است. همچنین می‌تواند هم مثبت باشد و هم منفی؛ مانند: 1 و 0 و 20 و 5 و -10و -100 و …

Float (عدد شناور یا اعشاری)

عددی است که برخلاف عدد صحیح، اعشار یا ممیز نیز دارد.

Boolean (نوع بولی)

این یک مقدار منطقی است که تنها می‌تواند یکی از دو حالت یا مقدار true و false را در خود نگه دارد.

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

ترکیب داده ها با یکدگیر

اکثر انواع داده‌ها را می‌توان در ترکیب با  یکدیگیر استفاده کرد. به مثال زیر توجه کنید:

همانطور که می‌بینید، خروجی کد بالا مقدار 30 خواهد بود!

نکته 1: اگر بخواهیم یک رشته و یک عدد را با علامت . به هم ارتباط دهیم، آن دو در کنار هم قرار می‌گیرند! همانطور که می‌بینید در مثال بالا خروجی  برابر با 1020 شده است و عدد 30 به ما داده نشده است.
نکته 2: اگر بخواهیم یک رشته و یک عدد را با علامت + به هم ارتباط دهیم، آن دو باهم جمع می‌شوند! ولی توجه داشته باشید که رشته حتما باید مقدار عدد در خود داشته باشد و اگر شامل کاراکتر غیرعددی باشد، مفدار آن 0 خواهد شد! هم‌چنین، اگر ابتدای رشته عدد باشد، php فقط آن را حساب می‌کند و در نتیجه اگر نتواند عددی به دست بیاورد، مقدار آن را 0 در نظر می‌گیرد.

قلمرو متغیرها

همانطور که می‌دانید، ما در هرجایی از اسکریپت PHP می‌توانیم متغیری را تعریف کنیم. اما:

قلمروی متغیر، بخشی در اسکریپت است که آن متغیر می‌تواند فقط در آن جا مورد استفاده قرار گیرد؛ ولاغیر، در جاهای دیگر یا نمیتوان از آن استفاده کرد و یا این‌که باید از روش‌هایی برای دسترسی به آن استفاده کرد.

  • متغیری که بیرون از یک تابع تعریف شده باشد، متغیر سراسری (global) است.
  • متغیری که در داخل یک تابع تعریف شده باشد، متغیر محلی (local) است که تنها از درون آن تابع قابل دسترسی می‌باشد.

نکته: با تابع در بخش‌های آینده آشنا خواهیم شد؛ اما فعلا به صورت کلیشه ای جلو می‌رویم:

در این‌جا ما تابعی به نام getName داریم که درون آن مقدار متغیر name را چاپ کرده‌ایم. این متغیر در بیرون از تابع تعریف شده و همچنین مقدار Hadi به آن اختصاص یافته است.
در ادامه تابع getName را فراخوانی یا اجرا کرده‌ایم.

انتظار می‌رود که در خروجی عبارت Hadi را مشاهده کنیم، اما در حقیقت چنین چیزی رخ نخواهد داد و ما یک ارور دریافت خواهیم کرد که می‌گوید این متغیر درون تابع تعریف نشده است؛ اما چرا؟! مگر نگفتیم که متغیرهای بیرون تابع سراسری هستند؟!

کلید واژه global

برای استفاده از متغیرهای سراسری در داخل توابع می‌توان از کلیدواژه‌ی global به صورت زیر استفاده کرد.

همانطور که می‌بینید، با کلید واژه global اعلام کرده‌ایم که می‌خواهیم از متغیری با این نام که در بیرون از تابع تعریف شده است استفاده کنیم.

سوال: همانطور که در بالا هم گفتیم، چه نیازی به استفاده از global هست و چرا php به راحتی امکان دسترسی به متغیر بیرون تابع را برایمان قرار نداده است؟!
دلیل آن ساده است! به دلیل ایجاد نشدن تداخل!

نکته: البته به جای روش بالا می‌توانید با روش زیر هم از متغیر سراسری استفاده کنید.

در این‌جا از متغیری به نام GLOBALS استفاده کرده‌ایم که از نوع آرایه می‌باشد.
درمورد آرایه‌ها در آینده توضیح خواهیم داد؛ اما چیزی که باید بدانید این است که این متغیر از قبل در خود PHP با این نام تعریف شده است و هر متغیری که به صورت سراسری تعریف می‌شود داخل این آرایه ریخته می‌شود.

پس به این صورت توانستیم به متغیرهای سراسری از داخل توابع دسترسی داشته باشیم.

Variable Variables (متغیرهای متغیر)

در php می‌توانیم از یک متغیر برای مشخص کردن نام یک متغیر دیگر استفاده کنیم! بنابراین، یک متغیرِ متغیر، مقدار متغیر دیگر را به عنوان نام آن تلقی می‌کند! گیج شدید؟! 😀

توضیح سختی است، ولی اجازه دهید در مثالی آن را درک کنیم:

در بالا

  • مقدار متغیری با نام x برابر name است.
  • مقدار متغیری با نام name برابر یک رشته با نام Hadi است.
  • وقتی دوباره علامت $ را بنویسیم، سپس نام متغیر را بنویسیم. PHP به دنبال متغیری خواهد بود که نام آن برابر مقدار متغیری است که ذکر کرده‌ایم.

متغیرها درون رشته

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

برای استفاده از این قابلیت، حتما باید از دابل کوتیشن استفاده کنید. با تک کوتیشن کار نمی‌کند و خود اسم متغیر به همراه $ نمایش داده خواهد شد!

درس بعدی (اپراتورها)درس قبلی (مفاهیم پایه)
کانال تلگرام فول کده
تبلیغات

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

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک‌گذاری اطلاعات در هر زمینه‌ای
برنامه‌نویس فول استک

پاسخ دهید

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

نظرات ثبت شده 2 دیدگاه

    1. parsa کاربر مهمان گفت:

      سلام اگر بخواهیم مقدار متغیر توسط کاربر تنظیم بشه چی؟ برای مثال میخواهیم داده ی متغیر مثلا $name و $age را از کاربر دریافت کنیم بعد برای خودش نمایش داده بشه
      با تشکر از سایت خوبتون هیچ جا اینقدر دقیق و مفصل توضیح نمیده

      00
      1. هادی اکبرزاده مدیر سایت گفت:

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