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

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

در این مقاله قصد داریم تا متغیر ها در php رو بررسی کنیم :

  • Declaring PHP Variables
  • Variables scope
  • Call by value & Call by reference
  • PHP symbol

تعریف یک متغیر – Declaring PHP Variables

برای تعریف یک متغیر نکات زیر را در نظر داشته باشید :

  • متغیر در php با علامت $ شروع می گردد.
  • نام متغیر در php حساس به حروف بزرگ و کوچک هستند.(case sensitive)
  • کاراکتر های مجاز برای تعریف متغیر در php برابر با حروف کوچک [a-z] و حروف بزرگ [A-Z] و اعداد [0-9] و علامت _ (underscore) می باشد. غیر این کاراکترهای مذکور سایر کاراکتر ها غیر مجاز هستند.
  • نام متغیر در php نباید با اعداد شروع شوند.

منطقه یک متغیر – Variables Scope

هر متغیر در هر جایی از script قابل تعریف هستند. منطقه ای که متغیر قابل referenced/used باشد scope گفته می شود. به عبارت دیگر منطقه ای از متغیر که متغیر قابل دسترسی باشد.

در php سه نوع scope برای متغیر ها وجود دارد:

  • local (محلی)
  • global (جهانی)
  • static (ایستا)

متغیر های محلی و جهانی – local / global

<?php
$x = 5; // global scope
function myTest() {
    // using x inside this function will generate an error
    echo "<p>Variable x inside function is: $x</p>";
}
myTest();
echo "<p>Variable x outside function is: $x</p>";

همون طور که در مثال بالا می بینید فقط متغیر هایی که تابع تعریف شده باشند در تابع قابل دستیابی هستند. به همین دلیل است که ما پارامتر ورودی برای توابع تعریف می کنیم.

« در خط ۵ وقتی متغیر x رو فراخوانی می کنیم با خطای Notice مواجه می شویم. چون متغیر خارج از تابع تعریف شده است »

در خط ۸ متغیر به درستی فراخوانی شده (فراخوانی و چاپ).

<?php
function myTest() {
    $x = 5; // local scope
    echo "<p>Variable x inside function is: $x</p>";
}
myTest();
// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";

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

« در خط ۸ وقتی متغیر x رو میخوایم چاپ کنیم خطای Notice داریم چون در منظقه ما متغیر x وجود نداره »

در خط ۴ متغیر به درستی فراخوانی شده.(درون تابع ساخته شده و در تابع فراخوانی)

کلمه کلیدی global : وقتی یک متغیر رو خارج از یک تابع تعریف کنید در منطقه global اون رو تعریف کردیم. با این حال هنوز درون توابع قابل استفاده نیستند مگر اینکه با استفاده از کلمه کلیدی global اون رو فراخوانی کرده باشیم.

<?php
$x = 5;
$y = 10;
function myTest() {
    global $x, $y;
    $y = $x + $y;
}
myTest();
echo $y; // outputs 15

آرایه GLOBALS : به صورت پیش فرض در php تمامی متغیر های global در آرایه اندیس دار $GLOBALS[index] ذخیره می شود. index همون نامی از متغیر هست که باهاش متغیر global رو فراخوانی می کنیم.

<?php
$x = 5;
$y = 10;
function myTest() {
    $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15

خط ۵ نحوه فراخوانی متغیر های جهانی x , y است که همچنین متغیر جهانی y مجددا مقدار دهی شده است.

متغیر های ایستا – static variables

وقتی یک تابع اجرا میشه تمامی متغیر های داخل اون پاک میشه و مقدارش در فراخوانی بعدی تابع reset میشه . کاربرد متغیر های ایستا اینه که در توابع ثابت هستند و بعد از اجرا و اتمام تابع از بین نمیرن.

<?php
function myTest() {
    static $x = 0;
    echo $x;
    $x++;
}
myTest(); // 0
myTest(); // 1
myTest(); // 2

فراخوانی با ارجاع و فراخوانی با مقدار – Call by value & Call by reference

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

فراخوانی با ارجاع ( Call by reference ) : در این روش عین متغیر رو به تابع میدید و هر تغییری که در متغیر ایجاد بشه روی نسخه اصلی هم ایجاد میشه . مثلا یه تابع می نویسید که متغیر رو بگیره و مقدارش رو نصف کنه . هر بار که متغیری به عنوان ورودی به این تابع داده بشه بدون در نظر گرفتن خروجی خود متغیر نصف میشه.در این روش معمولا قبل از پارامتر ورودی علامت & گذاشته میشه.

فراخوانی با مقدار ( Call by value ) : در این روش تابع تنها از value یا همان مقدار متغیر پارامتر ورودی استفاده می کنه. حال میتونه از این متغیر در اهداف مختلفی مثل پارامتری از یک Query استفاده کنه. بیشتر توابع معمولا از روش فراخوانی با مقدار استفاده می کنند.

function increment_value($y) {
    $y++;
    echo $y;
}

function increment_reference(&$y) {
    $y++;
    echo $y;
}

$x = 1;
increment_value($x); // '2'
echo $x; // '1'
increment_reference($x); // '2'
echo $x; // '2'

در توابع بالا increment_value فراخوانی با مقدار است و increment_reference فراخوانی با ارجاع . می بینید که پس از اجرای تابع increment_reference مقدار متغیر تغییر کرده است.

علائم متغیر ها – PHP symbol

یه سری علائم در php وجود داره که هر کدوم کاربرد خاص خودشون و دارن . به مهم ترین آن ها می پردازیم :

& : این علامت برای فراخوانی با ارجاع کاربرد داره که در بند قبل توضیحاتش رو دادیم.

$$ : این علامت به متغیری از متغیر یا variable variable یا متغیر پویا گفته میشه .

<?php
$foo = "bar";
$$foo = "baz";
echo $bar; // outputs 'baz'

این علامت زمانی کاربرد پیدا می کنه که مقدار متغیر متغیر رشته ای باشه. همون طور که می بینید متغیر متغیر foo میشه متغیر bar

@ : علامت کنترل خطا یا Error Control Operators زمانی کاربرد دارد که قصد چشم پوشی از خطاهای ناشی از مقدار دهی متغیر ها داشته باشیم. به مثال زیر توجه کنید.

<?php 
$username = @$_COOKIE['username'];
is_login(@$username);

علامت @ قبل از متغیر به کار میره تا از E_NOTICE ناشی از set نشدن مقدار متغیر جلوگیری کنه. مثال در مثال بالا اگر از آرایه COOKIE اندیس username وجود نداشته باشه خطای Notice نمیده .

نکته : شما می تونید با قرار دادن خط کد زیر در ابتدای اسکریپتتون از نمایش خطاهای Notice جلوگیری کنید.

<?php
error_reporting(E_ALL ^ E_NOTICE);

مطالب مشابه

strings-function in php

رشته ها در PHP

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

امنیت و رمزنگاری در پی اچ پی

امنیت و رمزنگاری در php

امنیت و رمز نگاری دو مبحث مهم در برنامه ها به شمار میره. به طور کلی ما باید برای حفاظت باید برنامه هامون در برابر حملات...

composer یک ابزار رابط خط فرمان (command line interface) برای مدیریت و نصب پروژه های PHP می باشد. بوسیله آن می توان روی پروژه خود پکیج هایی (پروژه ها یا کتابخانه ها) را نصب کنید یا بالعکس پروژه خود را قابل نصب بر روی پروژه های دیگر کنید.

Composer (قسمت اول)

composer یک ابزار رابط خط فرمان (command line interface) برای مدیریت و نصب پروژه های PHP می باشد. بوسیله آن می توان روی...

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

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

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

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

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