طراحی وب سایت کتابخانه

طراحی وب سایت کتابخانه

۳۹ مطلب با موضوع «پی اچ پی (PHP)» ثبت شده است

     ساختار if یکی از مهم ترین ویژگی های هر زبان برنامه نویسی است. این ساختار به شما اجازه می دهد قسمتی از یک کد را با بررسی یک یا چند شرط، اجرا کنید. ساختار if در پی اچ پی مانند ساختار if در زبان برنامه نویسی c است. هنگام برنامه نویسی ممکن است در بسیاری از موارد شرایطی پیش آید که شما بخواهید بنابر شرایط مختلف کارهای متفاوتی را انجام دهید. این کار را با استفاده از ساختارهای کنترلی انجام می دهیم. با استفاده از ساختار if اگر فقط یک شرایط خاص صدق کند، کد مورد نظر ما اجرا می گردد. ساختار کلی if به این شکل است:


if (expr)
  statement

     همانگونه که می دانید، در زبان پی اچ پی یک عبارت بر اساس مقدار بولی (TRUE or FALSE) خود مورد ارزیابی قرار می گیرد. در قطع کد بالا اگر مقدار expr برابر با TRUE باشد عبارت statement اجرا می شود و اگر مقدار expr برابر با FALSE باشد عبارت اجرا نخواهد شد. در مثال پایین چنانچه متغیر a از متغیر b بزرگ تر باشد، عبارت "متغیر a از متغیر b بزرگتر است" نمایش داده خواهد شد.


<?php
if ($a > $b)
  echo "متغیر a از متغیر b بزرگتر است.";
?>

     البته در بیشتر موارد تمایل دارید که بیشتر از یک عبارت را اجرا کنید. برای این کار لازم نیست که هر عبارت را به صورت جداگانه در داخل یک ساختار مجزای if قرار دهید. در این حالت چندین عبارت را به صورت یک گروه عبارت، گروه بندی می کنیم. یعنی پس از بررسی شرط مورد نظر، می توان چندین عبارت را اجرا نمود. به عنوان مثال، در زیر عبارت "متغیر a از متغیر b بزرگ تر است" نمایش داده می شود و پس از آن مقدار متغیر a را به متغیر b نسبت می دهیم: 


<?php
if ($a > $b) {
  echo "متغیر a از متغیر b بزرکتر است.";
  $b = $a;
}
?>

     توجه داشته باشید که عبارت های if را می توان در بی نهایت عبارت if دیگر به صورت تودرتو استفاده کرد. که این ویژگی انعطاف پذیری فراوانی را برای اجرای شرطهای مختلف در قسمت های گوناگون کد شما فراهم می کند. 

۰ نظر موافقین ۱ مخالفین ۰ ۲۳ اسفند ۹۳ ، ۱۳:۳۴
مهرداد یوسفی فرد

     منظور از عملگر چیزی است که یک یا چند مقدار (یا به اصطلاح برنامه نویسان، عبارت) را می گیرد و یک مقدار دیگر را بر می گرداند. در واقع با استفاده از عملگرها عملیاتی را بر روی متغیرها و مقادیرشان انجام می دهیم. می توانیم عملگرها را بر اساس تعداد مقادیری که می گیرند به سه گروه تقسیم بندی کنیم. عملگرهای یگانی (Unary) عملگرهایی هستند که فقط یک مقدار را می گیرند، به عنوان مثال عملگر ! (نه منطقی) یا ++ (عملگر افزایش). دسته دوم، عملگرهای دوتایی هستند؛ این عملگرها همانطور که از نامشان پیداست، دو مقدار را می گیرند، مثل عملگرهای معمول ریاضی شامل بعلاوه، منها و ... که البته اکثر عملگرها در پی اچ پی تاز این نوع هستند. دسته سوم، عملگرهای سه تایی هستند که در واقع باید بگوییم عملگر سه تایی، چون در پی اچ پی از این نوع عملگر فقط یکی وجود دارد و آن عملگر ? است (که در اصل یک عملگر شرطی است).  

اولویت عملگرها

     تقدم (اولویت) یک عملگر مشخص می کند که یک عملگر چگونه دو عبارت را به هم پیوند می دهد. مثلا به این عبارت توجه کنید:2+3*4 مقدار این عبارت 20 خواهد بود نه 24. این نتیجه به خاطر این مساله به دست می آید که عملگر ضرب (*) نسبت به عملگر جمع (+) از تقدم بیشتری برخوردار است و لذا اول عملگر ضرب محاسبه می شود. در هنگام نوشتن کدها حتما باید به این مساله توجه داشت. اگر نیاز بود، می توانید با استفاده از پرانتز اولویتها را کنترل کنید؛ هر عبارتی که در داخل پرانتز قرار می گیرد دارای تقدم بیشتر است. 

     اگر چند عملگر داشته باشید که دارای تقدم یکسان باشند، در این حالت ترتیب اجرای آنها مشخص می کند که عملگرها چگونه دسته بندی شوند. به عنوان مثال در مورد عملگر منها (-) ترتیب از سمت چپ است، یعنی عملوندها از سمت چپ به راست محاسبه می شوند. مثلا عبارت1-2-3 به صورت (1-2)-3 محاسبه می شود که نتیجه آن -4 خواهد بود. اما مثلا در عملگر مساوی (=) ترتیب از راست به چپ است. بنابراین در عبارتی مانند $a=$b=$c گروه بندی از سمت راست و به شکل $a=($b=$c) انجام می شود.

     همانطور که قبلا هم گفته شد، بهترین راه برای اینکه دقیقا مطمئن شویم عملگرها چگونه عمل می کنند استفاده از پرانتز است؛ چون با این کار حتی اگر ندانیم کدام عملگر بر دیگری مقدم است، خودمان مشخص می کنیم که کدام عملگر زودتر عمل کند. البته با این کار قابلیت خوانایی کدهای نوشته شده را نیز بسیار افزایش می دهیم. 

     انواع عملگرهای مورد استفاده در پی اچ پی به شرح زیر می باشند:

عملگرهای ریاضی
      همانطور که از نام این عملگرهای معلوم است، از آنها برای انجام اعمال ریاضی بر روی مقادیر عددی استفاده می شود؛ یعنی همان محاسبات معمول ریاضی که از دوره دبستان آنها را فراگرفته ایم.
     جدول زیر این نوع از عملگرها را نشان می دهد:
عملگر نام مثال نتیجه
+ جمع $x + $y جمع $x و $y
- منهی $x - $y تفاوت $x و $y
* ضرب $x * $y حاصلضرب $x و $y
/ تقسیم $x / $y تقسیم $x و $y
% باقیمانده تقسیم $x % $y باقیمانده تقسیم $x بر $y
** به توان رساندن $x ** $y نتیجه به توان رساندن $x به $y (از نسخه 5.6 به بد معرفی شده است)

     
عملگرهای نسبت دهی
      مهمترین عملگر نسبت دهی (مقدار دهی) عملگر = است. به احتمال زیاد ممکن است در نگاه اول تصور کنید که این عملگر به معنی برابری است؛ که البته در پی اچ پی به این معنی نیست. این عملگر مقدار سمت چپ خود را به عملوند سمت راست نسبت می دهد. یک مثال جالب از کاربرد این عملگر را مشاهده کنید:
<?php

$a = ($b = 2) + 6; //مقدار متغیر a
                   //8
                   // در همین حال متغیر b نیز مقدار دهی شده است

?>
     توجه داشته باشید که در هنگام کار کردن با آرایه ها برای نسبت دادن یک مقدار به یک کلید نامگذاری شده از عملگر => استفاده می شود.
     علاوه بر عملگر اصلی مقدار دهی، عملگرهای ترکیبی نیز برای تمامی عملیات زیاضی باینری، اتحادهای آرایه ای و عملگرهای رشته ای وجود دارد که به شما اجازه می دهد یک مقدار را در یک عبارت استفاده کنید و سپس مقدار آن را بر اساس نتایج آن عبارت تنظیم کنید. مثال زیر مطلب را بهتر روشن می کند:
<?php

$a = 2;
$a += 4; // => $a = $a + 4;
$b = "طوک";
$b .= ": طراحی وب سایت کتابخانه"; // => $b = $b . ": طراحی وب سایت کتابخانه";

?>
      توجه کنید که با استفاده از عملگرهای مقدار دهی (نسبت دهی)، مقدار متغیر اصلی را به داخل متغیر جدید کپی می کنیم (نسبت دهی با مقدار)، بنابراین تغییر دادن یکی از متغیرها، تاثیر در مقدار دیگری نخواهد داشت.
     مطالب و مثال ذکر شده در بالا را می توان به این شکل خلاصه کرد:
نسبت دهی عبارت مشابه توضیح
x = y x = y مقدار عملوند سمت چپ با مقدار عبارت سمت راست برابر می شود.
x += y x = x + y اضافه کردن
x -= y x = x - y کم کردن (منها)
x *= y x = x * y ضرب
x /= y x = x / y تقسیم
x %= y x = x % y باقیمانده تقسیم
عملگرهای مقایسه ای
      عملگرهای مقایسه ای همانطور که از نامشان مشخص است به شما این امکان را می دهند که دو مقدار را مقایسه کنید. 
عملگر نام مثال نتیجه
== برابری $x == $y اگر مقدار x برابر مقدار y باشد مقدار صحیح(TRUE) را برمی گرداند.
=== یکسان بودن $x === $y اگر مقدار x برابر مقدار y باشد و نوع دو متغیر با یکدیگر مشابه باشد، مقدار صحیح (TRUE) را بر می گرداند.
!= عدم برابری $x != $y اگر مقدار x برابر با مقدار y نباشد مقدار صحیح(TRUE) را بر می گرداند.
<> عدم برابری $x <> $y اگر مقدار x برابر مقدار y نباشد مقدار صحیح (TRUE) را برمی گراند.
!== عدم یکسان بودن $x !== $y Returns true if $x is not equal to $y, or they are not of the same type
> بزرگ تر بودن $x > $y اگز x بزرگ تر از y باشد مقدار صحیح را برمی گرداند.
< کوچک بودن $x < $y اگر x کوچک تر از y باشد مقدار صحیح(TRUE) را برمی گرداند.
>= بزرگ تر یا مساوی بودن $x >= $y اگر x بزرگتر یا مساوی مقدار y باشد مقدار صحیح(TRUE) را برمی گرداند.
<= کوچک تر یا مساوی بودن $x <= $y اگر مقدار x کوچکتر یا مساوی مقدار y باشد مقدار صحیح(TRUE)را بر می گرداند.
     اگر شما یک عدد را با یک رشته مقایسه می کنید یا در عبارتی که عملیات مقایسه را بر روی آن انجام می دهید یک رشته عددی وجود دارد، در این شرایط هر رشته به یک عدد تبدیل می شود و فرایند مقایسه به صورت عدد انجام می شود. این قانون در مورد عبارت های switch هم صدق می کند. البته واضح است که در هنگام استفاده از عملگرهای مقایسه ای === و ==! عمل تبدیل انجام نمی شود، به خاطر اینکه این عملگرها نوع مقادیر را نیز بررسی می کنند. 
عملگر کنترل خطا

پی اچ پی از یک عملگر کنترل خطا نیز پشتیبانی می کند: این عملگر @ می باشد. هنگامی که در پی اچ پی این عملگر را قبل از یک عبارت قرا می دهیم، هرنوع خطایی که ممکن است توسط آن عبارت بروز کند نایده گرفته می شود. 

     اگر شما یک تابع شخصی متصدی خطا (custom error handler function) را با استفاده از تابع set_error_handler() ایجاد کرده باشید، در این شرایط تابع شما فراخوانی نمی شود. 

     اگر ویژگی track_error فعال شده باشد، هر پیغام خطایی که توسط عبارت ایجاد می شود در متغیر $php_errormsg ذخیره می شود. این متغیر در هنگام بروز هر خطای جدید، بازنویسی می شود؛ پس اگر می خواهید از آن استفاده کنید، زود این کار را انجام دهید. 

     

عملگرهای افزایش دهنده و کاهش دهنده

     پی اچ پی همانند زبان سی (c) از عملگرهای کاهش دهنده و افزایش دهنده (که قبل یا بعد از متغیر قرار می گیرند) پشتیبانی می کند. همانطور که از نام این عملگرها پیداست، با استفاده از آنها می توان مقدار یک متغیر را افزایش یا کاهش داد. توجه داشته باشید که این عملگرها بر روی آرایه ها، اشیاء، و منابع تاثیر ندارند. 

عملگر نام توضیح
++$x پیش افزایش
(Pre-increment)
مقدار متغیر x را یکی افزایش می دهد، سپس x را بر می گرداند
$x++ پس افزایش
(Post-increment)
متغیر x را بر می گرداند و سپس مقدار x را یکی افزایش می دهد.
--$x پیش کاهش
(Pre-decrement)
مقدار متغیر x را یکی کم می کند و سپس متغیر x را بر می گرداند.
$x-- پس کاهش
(Post-decrement)
متغیر x را بر می گرداند و سپس از مقدار آن، یکی کم می کند.

مثال زیر همه چیز را به خوبی نشان می دهد:

<?php
echo "<h3>Postincrement</h3>";
$a = 5;
echo "Should be 5: " . $a++ . "<br>\n";
echo "Should be 6: " . $a . "<br>\n";

echo "<h3>Preincrement</h3>";
$a = 5;
echo "Should be 6: " . ++$a . "<br>\n";
echo "Should be 6: " . $a . "<br>\n";

echo "<h3>Postdecrement</h3>";
$a = 5;
echo "Should be 5: " . $a-- . "<br>\n";
echo "Should be 4: " . $a . "<br>\n";

echo "<h3>Predecrement</h3>";
$a = 5;
echo "Should be 4: " . --$a . "<br>\n";
echo "Should be 4: " . $a . "<br>\n";
?>
عملگرهای منطقی

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

عملگرهای منطقی
مثال نام نتیجه عبارت
$a and $b And اگر هر دو متغیر a و b درست باشند مقدار TRUE را بر می گرداند.
$a or $b Or اگر یکی از متغیرهای a یا b درست باشند مقدار TRUE را بر می گرداند.
$a xor $b Xor اگر یکی از متغیرهای a یا b صحیح باشند و هر دو صحیح نباشند مقدار TRUE را بر می گرداند.
! $a Not اگر متغیر a درست نباشد مقدار TRUE را بر می گرداند.
$a && $b And اگر دو متغیر a و b درست باشند مقدار TRUE را برمی گرداند.
$a || $b Or اگر یکی از متغیرهای a یا b درست باشد مقدار TRUE را بر می گرداند.
عملگرهای رشته ای

     در زبان پی اچ پی دو عملگر رشته ای وجود دارد. اولین آن عملگر الحاق (concatenation) است، که باعث الحاق عبارت سمت راست و عبارت سمت چپ این عملگر می شود. عملگر دوم، عملگر نسبت دهی و الحاق (concatenating assignment) است، که عبارت سمت راست عملگر را به عبارت سمت چپ عملگر اضافه می کند. 

عملگر نام مثال نتیجه عبارت
. الحاق (Concatenation) $txt1 . $txt2 مقدار متغیر text1 را به مقدار متغیر text2 اضافه می کند.
.= نسبت دهی و الحاق (Concatenation assignment) $txt1 .= $txt2 مقدار متغیر tex2 را به مقدار متغیر text1 اضافه می کند.

     برای درک بهتر موضوع به مثال زیر توجه کنید:


<?php
$a = "سلام ";
$b = $a . "کاربر گرامی!"; // now $b contains "سلام کاربر گرامی!"

$a = "سلام ";
$a .= "کاربر گرامی!";     // now $a contains "سلام کاربر گرامی!"
?>
عملگرهای آرایه ای
عملگر نام مثال نتیجه عبارت
+ Union $x + $y Union of $x and $y
== تساوی $x == $y اگر آرایه های x و y جفت های یکسال کلید/مقدار داشته باشند، مقدار TRUE را باز می گرداند.
=== برابری $x === $y اگر آرایه های xو y جفت های یکسال کلید/مقدار داشته باشند و با ترتیب مشابه و انواع مشابه باشند، مقدار TRUE را بر می گرداند.
!= عدم تساوی $x != $y اگر آرایه x با آرایه y برابر نباشد مقدار TRUE را بر می گرداند.
<> عدم تساوی $x <> $y اگر آرایه x با آرایه y برابر نباشد، مقدار TRUE را بر می گرداند.
!== عدم برابری $x !== $y اگر آرایه x با آرایه y مساوی و برابر نباشد، مقدار TRUE را بر می گرداند.

     عملگر + آرایه سمت راست را به آرایه سمت چپ پیوست می کند؛ برای کلیدهایی که در هر دو آرایه وجود دارد، المان های موجود در آرایه سمت چپ مورد استفاده قرار می گیرد، و المانهایی که در آرایه سمت راست تطبیق می کند، نادیده گرفته می شوند. 

۰ نظر موافقین ۱ مخالفین ۰ ۱۷ اسفند ۹۳ ، ۱۳:۴۴
مهرداد یوسفی فرد

    ثابت یک شناسه (نام) برای یک مقدار خاص است. حتما از نام آن نیز می توان فهمید که مقدار یک ثابت را در طول اجرای برنامه نمی توان تغییر داد. به صورت پیش فرض، ثابت ها به کوچکی و بزرگی حروف حساس هستند. طبق قرارداد، شناسه (نام) یک ثابت را همیشه با حروف بزرگ می نویسند.

     در نامگذاری ثابت ها در پی اچ پی از قوانین نامگذاری برچسب ها پیروی می شود؛ یعنی همانطور که قبلا گفته شد یک نام معتبر با یک حرف یا علامت زیرخط (_) شروع می شود و پس از آن هر تعداد حرف یا عدد یا علامت زیر خط (_) می توان قرار داد. این قوانین را با استفاده از قوانین عبارت های رایج می توان به این شکل نوشت:

[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
    دامنه (حوزه) کاری ثابت ها، سراسری است. به همین دلیل در هر نقطه از کد خود بدون هیچ محدودیتی می توانید به ثابت تعریف شده دسترسی داشته باشید.
شیوه تعریف کردن یک ثابت
      برای اینکه بتوانید ثابت مورد نظر خود را تعریف کنید باید از تابع define() استفاده کنید. البته از نسخه 5.3.0 به بعد می توان با استفاده از کلمه کلیدی const در خارج از تعریف یک کلاس، ثابت مورد نظر خود را تعریف کرد. وقتی که یک ثابت را تعریف می کنید هرگز نمی توان آن را تغییر داد.
     ساختار نحوی تابع define به صورت زیر است:
define(name, value, case-insensitive)
     همانطور که می بینید این تابع سه پارامتر دارد: 
  • name: منظور نام ثابت است. 
  • value: مقدار ثابت را در این قسمت می نویسیم.
  • case-insensitive: این پارامتر مشخص می کند که آیا نام ثابت به بزرگی و کوچکی حروف حساس باشد یا نه. در حالت پیش فرض مقدار آن false است. 
     اگر نام یک ثابت را بدانید، به راحتی می توانید به مقدار آن دسترسی پیدا کنید. برخلاف متغیرها که قبل از نامشان یک علامت $ قرار می گیرد، قبل از نام یک ثابت هیچ علامتی قرار ندارد.
     اگر یک ثابت را قبلا تعریف نکرده باشید و در داخل کد خود بخواهید آن را فراخوانی کنید، پی اچ پی فرض می کند که نام خود ثابت منظور نظر شما است، به عبارت دیگر نام ثابت را به عنوان یک رشته در نظر گرفته و همان نام را نمایش می دهد (ONSTANTC دربرابر "CONSTANT"). البته در این حالت یک خطا در سطح  E_NOTICE نیز رخ می دهد اگر شک دارید که یک ثابت وجود دارد یا نه، می توانید با استفاده از تابع defined() این موضوع را بررسی کنید.
    حالا به یک مثال توجه کنید:
<?php
define("CONSTANT", "به طوک خوش آمدید.");
echo CONSTANT; // outputs "به طوک خوش آمدید."
echo Constant; // خروجی خود اسم خواهد بود، چون چنین ثابتی تعریف نشده
               // یک خطا در سطح E_NOTICE هم ایجاد می شود.
?>
     
۰ نظر موافقین ۲ مخالفین ۰ ۱۵ اسفند ۹۳ ، ۱۹:۲۱
مهرداد یوسفی فرد

     برای نشان دادن یک متغیر ابتدا یک علامت ($) و سپس نام متغیر را می آورید. در نظر داشته باشید که نام متغیر به بزرگی و کوچکی حروف حساس است. 

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

[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

     در واقع منظور از حروف این حروف می باشد: a-z و A-Z و منظور از بایت ها: 127 الی 255 (0x7f-0xff)

     به طور کلی قواعد زیر را در مورد نامگذاری متغیرها رعایت کنید: 

  1. یک متغیر با علامت $ شروع می شود و پس از آن نام مورد نظر خود را می آورید.
  2. نام متغیر باید با علامت زیرخط (_) یا یک حرف آغاز شود. 
  3. نام متغیر نباید با یک عدد شروع شود.
  4. نام متغیر فقط باید شامل حرف و عدد باشد (حروف a تا z - کوچک یا بزرگ).
  5. نام متغیر به بزرگی و کوچکی حروف حساس است. 

     برای روشن تر شدن مطلب، به چند مثال زیر توجه کنید: 

<?php
$var = 'touk';
$Var = 'Mehrdad';
echo "$var, $Var"; // outputs "touk, Mehrdad"

$4you = 'not yet'; // invalid; نام متغیر نباید با عدد شروع شود
$_4you = 'not yet'; // valid; نام متغیر نباید با علامت زیرخط شروع شود
$täyte = 'mansikka'; // valid; 'ä' is (Extended) ASCII 228.
// استفاده از کدهای اسکی که معتر است
?>

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

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

     البته پی اچ پی راه دیگری را نیز برای نسبت دادن مقدار به یک متغیر ارائه می کند. به این شیوه نسبت دادن با مرجع می گویند (Assign by Reference). در این حالت متغیر جدیدی که ایجاد می کنیم به متغیر اصلی ارجاع می دهد؛ در واقع این متغیر به یک نام مستعار یا اشاره کننده به متغیر اولیه تبدیل می شود.

     اگر می خواهید یک متغیر را به صورت با مرجع تعریف کنید، قبل از متغیری که نسبت داده شده است یک علامت & قرار دهید.

     مثال زیر خروجی "نام این سایت طوک است" را دوبار ایجاد می کند:

<?php
$name = 'طوک';              // Assign the value 'طوک' to $name
$site = &$name;              // Reference $name via $site.
$site = "نام این سایت $site است";  // Alter $site...
echo $site;
echo $name;                 // $name is altered too.
?>
     همانطور که در بالا نیز اشاره شد در پی اچ پی لازم نیست قبل از استفاده از متغیرها آنها را تعریف کرد. هرچند بهتر است عادت کنید این کار را انجام دهید چون در اینصورت کدهای شما خواناتر شده و اصول برنامه نویسی را نیز بهتر رعایت کرده اید. اما اگر این کار را هم نکنید، پی اچ پی خودش کارها را روبه راه می کند! متغیرهایی که مقداردهی اولیه نشده اند بسته به نوع آنها و محیطی که در آن مورد استفاده قرار می گیرند یک مقدار پیش فرض دارند. مقدار پیش فرض برای نوع بولی FALSE است، دو نوع عدد صحیح و شناور صفر (0) است، در نوع رشته یک مقدار رشته خالی به آن نسبت داده می شود و مقدار پیش فرض برای یک آرایه، یک ارایه خالی می باشد.
دامنه (حوزه) متغیرها
      منظور از دامنه (حوزه) یک متغیر (Scope) محدوده ای است که متغیر در آن تعریف شده است. در اکثر موارد، متغیرهایی که در پی اچ پی تعریف می کنیم فقط در یک دامنه (حوزه) معتبر هستند. این دامنه (حوزه)، شامل فایلهایی نیز می شود که در داخل فایل خود فراخوانی می کنید. به مثال زیر توجه کنید:
<?php
$number = 1;
include 'file.inc';
?>
      همانطور که در مثال بالا مشاهده می کنید، متغیر number را در داخل این فایل پی اچ پی تعریف کرده ایم و سپس یک فایل دیگر را نیز به داخل فایل اصلی فراخوانی کرده ایم؛ متغیری که در فایل اصلی تعریف کرده ایم در داخل فایلی که آن را فراخوانی کرده ایم نیز معتبر است و در دسترس می باشد.
     اگر یک تابع را تعریف کنید و در داخل تابع یک یا چند متغیر را ایجاد کنید، این متغیرها در داخل حوزه محلی تابع تعریف و ایجاد شده اند و فقط در داخل همان تابع قابل دستری می باشند. برای درک بهتر قضیه به مثال زیر توجه کنید:
<?php
$number = 1; /* global scope */ 

function sample()
{ 
    echo $number; /* این یک مغیر محلی در داخل تابع است */ 
} 

sample();
?>
      تابع sample در مثال بالا هیچ خروجی نمایش نمی دهد، به خاطر اینکه متغیر number اول به صورت سراسری تعریف شده اما همین متغیر در داخل تابع به صورت محلی تعریف شده و یک متغیر مجزاست. به همین خاطر استفاده از تابع echo در داخل تابع تعریف شده هیچ نوع خروجی ایجاد نمی کند. اگر می خواهید یک متغیر سراسری در داخل تابع نیز در دسترس باشد باید آن متغیر را با استفاده از عبارت global به صورت سراسری تعریف کنید.
     به مثال زیر در مورد استفاده از کلمه global و نحوه تاثیر آن بر روی مقدار متغیرها را مشاهده می کنید:
<?php
$number1 = 1;
$number2 = 2;

function Sum()
{
    global $number1, $number2;

    $number2 = $number1 + $number2;
} 

Sum();
echo $number2;
?>
      خروجی مثال بالا عدد 3 خواهد بود. می بینید که نتیجه با مثال قبلی کاملا متفاوت است؛ و این تفاوت به خاطر استفاده از کلمه global در داخل تابع است. در این مثال، متغیرهای number1 و number2 را به صورت سراسری (global) تعریف کرده ایم، به همین خاطر این متغیرها، مقادیری را که در خطوط اول کد به آن نسبت داده ایم به خود می پذیرد و بر روی نتجیه تابع تعریف شده عمل می کند.
     با استفاده از آرایه خاص $GLOBALS نیز می توان برای متغیرها دامنه سراسری تعریف کرد. این آرایه یک آرایه انجمنی است. البته درنظر داشته باشید که آرایه مذکور یک آرایه فوق سراسری است (Super Global) یعنی متغیری که به این طریق تعریف شده است در هر حوزه ای در دسترس است. بنابر این مثال قبلی را می توان به این صورت نیز نوشت:
<?php
$number1 = 1;
$number2 = 2;

function Sum()
{
    $GLOBALS['number2'] = $GLOBALS['number1'] + $GLOBALS['number2'];
} 

Sum();
echo $number2;
?>
    
۰ نظر موافقین ۲ مخالفین ۰ ۱۱ اسفند ۹۳ ، ۱۳:۴۳
مهرداد یوسفی فرد

     در واقع NULL یک مقدار ویژه است که بیانگر یک متغیر با مقدار هیچ می باشد. تنها مقدار ممکن برای نوع nul، همان NULL است. 

       یک متغیر تنها در موارد زیر به عنوان null شناخته می شود:

  • مقدار ثابت NULL به آن اختصاص داده شده باشد
  • هنوز هیچ مقداری برای آن در نظر گرفته نشده باشد
  • مقدار آن با استفاده از تابع unset() لغو شده باشد.
     نسبت دادن مقدار تهی به یک متغیر کار ساده ای است؛ همانطور که گفته شد نوع تهی تنها یک مقدار دارد: NULL. این مقدار نسبت به بزرگی و کوچکی حروف حساس نیست. به مثال زیر توجه کنید: 

<?php
$var = NULL;       
?>

۱ نظر موافقین ۲ مخالفین ۰ ۱۱ اسفند ۹۳ ، ۱۲:۳۸
مهرداد یوسفی فرد

     منظور از منبع (Resource) یک متغیر خاص است که یک ارجاع به یک منبع خارجی را در خود ذخیره می کند. با استفاده از توابع خاص می توان منابع را ایجاد کرد یا مورد استفاده قرار داد. در واقع یک منبع، دستگیره های (Handler) خاصی را در خود ذخیره می کند، چیزهایی مانند دستگیره های مربوط به فایلها باز، ارتباطات مربوط به پایگاه اطلاعاتی، و چیزهایی شبیه به آن ... . 

۰ نظر موافقین ۲ مخالفین ۰ ۱۱ اسفند ۹۳ ، ۱۲:۱۴
مهرداد یوسفی فرد

     برای اینکه بتوانید یک شی را ایجاد کنید از عبارت new استفاده نمایید. 

     در مثال زیر ابتدا یک کلاس ایجاد می کنیم و سپس با استفاده از عبارت new یک نمونه از شی مربوط به آن کلاس را بوجود می آوریم:

<?php
class touk
{
    function do_first()
    {
        echo "Doing sth."; 
    }
}

$obj = new touk;
$obj->do_first();
?>

ب

۰ نظر موافقین ۲ مخالفین ۰ ۱۱ اسفند ۹۳ ، ۱۱:۵۹
مهرداد یوسفی فرد

     منظور از یک آرایه مجموعه از جفت های کلید/ مقدار می باشد (در واقع آرایه ها یک فهرست هستند). به عبارت دیگر هر مقدار یک کلید مخصوص به خود (نمایه - index) دارد. نمایه در یک آرایه می تواند یک عدد صحیح یا یک رشته باشد اما مقادیر می توانند از هر نوع اطلاعات که پی اچ پی از آن پشتیبانی می کند باشد.

چگونه یک آرایه را ایجاد کنیم؟

    با استفاده از ساختار دستوری array() می توان یک آرایه را ایجاد کرد. در این تابع می توان به هر تعداد پارامترهای جفتی key=>value را استفاده کرد. این پارامترها را با استفاده از علامت ویرگول از یکدیگر جدا می کنیم:

array(
    key1  => value1,
    key2 => value2,
    key3 => value3,
    ...
)
// کلید فقط می تواند عدد صحیح یا رشته باشد
// integer or string

     علامت ویرگول که بعد از آخرین مقدار آمده است، اختیاری است و می توان آن را حذف کرد. 

     در هنگام تعریف کردن یک آرایه، نوشتن کلید اختیاری است. اگر کلید نوشته نشود، پی اچ پی کلید را از عدد صفر (0) شروع می کند.

     توجه داشته باشید که اگر برای یک مقدار (value)، کلید (key) را مشخص نکنید، بیشترین مقدار صحیح نمایه (index) در نظر گرفته می شود و برای ایجاد کلید جدید، این مقدار با عدد یک جمع می گردد. اگر کلیدی را تعریف کنید که از قبل مقداری برای آن وجود داشته باشد، مقدار جدید جایگزین مقدار قبلی خواهد شد. 

ایجاد کردن و تغییر دادن یک آرایه با استفاده از قلابهای مربعی ([])

     اگر آرایه ای داریم که از قبل آن را ایجاد کرده ایم به راحتی می توانیم مقادیر مربوط به هر کلید خاص را تغییر دهیم. برای اینکه بتوانیم مقادیر مورد نظر را به یک کلید خاص نسبت دهیم، نام کلید را در داخل قلابهای مربعی می نویسیم. مثال زیر موضوع را روشن تر می کند: 

$arr[key] = value;
$arr[] = value;
// همانطور که می دانید کلید می تواند یک عدد صحیح یا رشته باشد.
// مقدار می تواند از هر نوعی باشد

     همانطور که در خط دوم مثال بالا مشاهده می کنید، در داخل قلاب های مربعی هیچ کلیدی نوشته نشده است؛ اگر آرایه وجود نداشته باشد با استفاده از این روش هم می توان یک آرایه را معرفی کرد. در نظر داشته باشید که برای حذف کردن یک جفت کلید/مقدار باید از تابع unset() استفاده کرد. 

یک مثال دیگر

<?php
$arr = array(2 =>1, 3 =>2);

$arr[] = 56; // This is the same as $arr[3] = 56;
// at this point of the script

$arr["x"] = 42; // This adds a new element to
// the array with key "x"

unset($arr[3]); // یک عضو از آرایه با نمایه مشخص شده را حذف می کند

unset($arr); // تمام آرایه را حذف می کند
?>

     اگر هیچ نمایه (index) صحیح وجود نداشته باشد، مقدار صفر (0) به عنوان اولین نمایه انتخاب خواهد شد. 

۰ نظر موافقین ۲ مخالفین ۰ ۰۸ اسفند ۹۳ ، ۲۲:۳۹
مهرداد یوسفی فرد

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

یک رشته را می توان به 4روش معرفی کرد:

نقل قول تکی

     آسان ترین راه برای معرفی کردن یک مقدار به صورت رشته آن است که آن را در داخل نقل قول تکی (') قرار دهیم. 

     در این حالت اگر می خواهید خود علامت نقل قول تکی در داخل رشته نمایش داده شود باید قبل از آن یک علامت / قرار دهید. برای نمایش دادن علامت / نیز باید قبل از آن یک / دیگر قرار دهید، یعنی به این صورت: // . غیر از دوکاراکتر ذکر شده، هر نوع کاراکتر دیگری که بعد از علامت / قرار گیرد هیچ مفهومی نخواهد داشت و همان کاراکتر نمایش داده خواهد شد (به همراه /). 

     با نگاه کردن مثال های زیر مطلب رو بهتر متوجه خواهید شد: 

<?php
echo 'یک رشته ساده را نمایش می دهد';

//برای نمایش دادن نقل قول تکی اینگونه عمل کنید
//خروجی اینچنین خواهد بود:
//Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"';

// خروجی: You deleted C:\*.*?
echo 'You deleted C:\\*.*?';

// خروجی: You deleted C:\*.*?
echo 'You deleted C:\*.*?';

// خروجی: This will not expand: \n a newline
echo 'This will not expand: \n a newline';

// خروجی: Variables do not $expand $either
echo 'Variables do not $expand $either';
?>
نقل قول دوتایی

     با استفاده از نقل قول دوتایی (") نیز می توان رشته ها را مشخص کرد. در این حالت پی اچ پی کاراکترهای بیشتری را برای استفاده از قواعد نادیده گرفتن (با استفاده از /) می پذیرد.

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

ساختار heredoc
     سومین روش برای مشخص کردن یک رشته استفاده از ساختار heredoc می باشد. این ساختار با عبارت<<< آغاز می شود. بلافاصله بعد از این عملگر باید یک شناساگر (identifier) ایجاد کنیم. سپس به خط بعدی می رویم و رشته مورد نظر خود را می نویسیم. پس از آن دوباره همان شناساگر را می آوریم.
     توجه داشته باشید که شناساگر انتخاب شده باید از قواعد نام گذاری مربوط به برچسب های پی اچ پی پیروی کند، یعنی این برچسب باید فقط شامل کاراکتر، عدد، و علامت زیر خط (_) باشد و نباید با کاراکتر عددی یا علامت زیرخط (_) شروع شود.
نکته
     حتما در نظر داشته باشید که شناساگر پایانی باید در یک خط قرار گیرد و در آن خط هیچ کاراکتر دیگری وجود نداشته باشد، به استثنای علامت نقطه ویرگور (;) که در انتهای خط قرار می گیرد. یعنی این شناساگر نباید دارای فرورفتگی باشد و همچنین قبل از علامت نقطه ویرگول هیچ گونه فضای خالی وجود نداشته باشد.
     متن قرار گرفته در داخل ساختار heredoc دقیقا مانند رشته قرار گرفته در داخل نقل قولهای دوتایی است. در داخل این ساختار برای نمایش علامت نقل قول دوتایی (") نیاز به استفاده از بک اسلش نیست. سایر ساختار نادیده گرفتن نیز مانند ساختار ذکر شده در نقل قول دوتایی است.
به مثال زیر توجه کنید:
<?php
<<<THE_END
متن مورد نظر خود را در این قسمت می نویسیم. 
متن می تواند شامل چند خط و طولانی باشد.
THE_END
>

     ساختار heredoc از نسخه 4 به بعد پی اچ پی اضافه شده است.

ساختار nowdoc
     ساختار nowdoc مانند ساختار نقل قول تکی عمل می کند در حالی که ساختار heredoc مانند نقل قول دوتایی عمل می کند. ساختار nowdoc را مانند ساختار heredoc تعریف و مشخص می کنیم. اما در ساختار nowdoc هیچ گونه پردازشی بر روی متغیرها انجام نمی شود.
     ساختار nowdoc نیز همانند ساختار heredoc است و برای قرار دادن رشته از طریق ساختار nowdoc، ابتدا کاراکترهای <<< قرار می گیرد، سپس شناساگر مورد نظر خود را قرار می دهیم، البته در این ساختار، شناساگر حتما در داخل علامت نقل قول تکی قرار داده می شود. تمامی قوانین مربوط به شناساگرها در heredoc در مورد شناساگرهای استفاده شده در ساختار nowdoc نیز استفاده می شود.
     برای درک بهتر این ساختار به مثال زیر توجه کنید:
<?php
$str = <<<'THE_END'
یک مثال از کاربرد ساختار nowdoc
می توان رشته را در چند خط درج کرد
THE_END;
>
     ساختار nowdoc از نسخه 5.3.0 به بعد اضافه شده است.
تجزیه تحلیل متغیرها
      همانطور که در بالا نیز ذکر شد، هنگامی که یک رشته را در داخل علامت نقل قول های دوتایی قرار می دهیم یا اینکه رشته را با استفاده از ساختار heredoc ایجاد می کنیم، چنانچه متغیر (هایی) در داخل رشته وجود داشته باشد، آن متغیرها مورد تجزیه و تحلیل قرار می گیرند.
     برای قرار دادن متغیرهای در داخل رشته (رشته هایی که با یکی از دو روش بالا معرف شده اند)، دو روش وجود دارد: یکی روش ساده، و دیگری روش پیچیده. روش ساده، همانطور که از نامش نیز برمی آید، بیشتر مورد استفاده قرار می گیرد؛ در این روش یک متغیر، مقدار یک آرایه، یا ویژگی (property) یک شی را به راحتی و با کمترین تلاش در داخل یک رشته قرار می دهیم.
     ساختار پیچیده نیز از نسخه 4 به بعد پی اچ پی معرفی شده که با استفاده از علامت آکولاد می توان متغیرها را در داخل رشته استفاده کرد.
ساختار ساده
      پردازشگر پی اچ پی هنگامی که در داخل رشته با علامت $ مواجه می شود به دنبال یک نام متغیر معتبر می گردد. اگر می خواهید پایان نام متغیر را صریحا به پردازشگر پی اچ پی معرفی کنید باید نام آن را در داخل علامت آکولاد قرار دهید.
     به مثال پایین توجه کنید:
<?php
$name = "Mehrdad";

echo "Dear user $mehrdad, welcome to TOUK.";
?>
      خروجی مثال بالا اینچنین خواهد بود:
Dear user Mehrdad, welcome to TOUK.
      با این روش می توان به نمایه های یک آرایه و همچنین به ویژگی های (property) یک شی دسترسی پیدا کرد.
ساختار پیچیده (استفاده از آکولاد)
      شاید فکر کنید منظور از پیچیده این است که استفاده از این ساختار پیچیده و پردردسر باشد، اما در واقع از این جهت آن را ساختار پیچیده نامیده اند که بوسیله آن می توان عبارتهای پیچیده را در داخل رشته ها قرار داد.
     هر نوع متغیر اسکالر (Scalar)، آرایه یا یک ویژگی(property) از شی را که به صورت متنی ارائه می شود می توان با استفاده از این ساختار در داخل یک رشته قرار داد. خیلی راحت، عبارت را همانطور که در خارج از ساختار متن به کار می برید در داخل دو علامت آکولاد باز و بسته قرار دهید ({}).
۰ نظر موافقین ۲ مخالفین ۰ ۰۶ اسفند ۹۳ ، ۱۱:۳۸
مهرداد یوسفی فرد

     اعداد اعشاری تحت عنوان float یا double یا اعداد حقیقی شناخته می شوند. این نوع از اعداد را با یکی از ساختار های زیر می توان نشان داد: 

<?php
$a = 1.234; 
$b = 1.2e3; 
$c = 7E-10;
?>

     اندازه یک مقدار اعشاری به نوع سیستم عامل بستگی دارد. 

۰ نظر موافقین ۱ مخالفین ۰ ۰۶ اسفند ۹۳ ، ۱۱:۳۶
مهرداد یوسفی فرد