PDA

View Full Version : کتاب مرجع PHP - قسمت دوم : عبارات (statements)



tabib_m
دوشنبه 28 آذر 1384, 22:14 عصر
بسم الله الرحمن الرحیم

با سلام.

قسمت دوم: عبارات (statements)

درون جداسازی های PHP میتوانید هر تعداد عبارت را بنویسید. دو نوع عبارت وجود دارند: تک خطی (single-line) – چند خطی (multi-line).
عبارات تک خطی باید با یک سمی کالون پایان یابند، مگر اینکه آخرین عبارت پیش از جداساز انتهایی، یک بلاک PHP باشد، که در این حالت سمی کالون میتواند حذف گردد. از این رو هر دو عبارت زیر مجازند:


Two plus two is <?php echo(2+2); ?>

Two plus two is <?php echo(2+2) ?>

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


<?php
Echo(2+2);
Echo(3*2);
Echo("Hello");
?>



<?php
Echo(2
+
2); echo(3
*2
); echo(
"Hello") ;
?>

عبارات چند خطی از ساختاری به نام یک بلاک کد (code block) استفاده میکنند. یک بلاک کد شامل چندین عبارت PHP است که درون براکت ها ({...}) قرار میگیرند:


{
Echo("Hello");
Echo(2+2);
}

با وجود این که میتوانید از بلاک های کد نظیر مثال بالا در کد PHP خود استفاده کنید، هیچ تاثیری روی کد نخواهند داشت (به طور اخص، بر خلاف C یا جاوا، هیچ تاثیری روی اسکوپ متغیر نخواهند داشت). بلاک های کد تنها زمانی به کار میروند که با ساختار های کنترلی نظیر حلقه ها یا عبارات if به کار میروند:


If(3>2){
Echo("Hello");
Echo(2+2);
}

در این حالت ما یک عبارت چند خطی داریم. عبارت متشکل از ساختار کنترلی و بلاک کد است. از آنجا که نقطه ی پایانی عبارت معلوم است، هیچ سمی کالونی در انتهای عبارت وجود ندارد – تنها در آخر عبارات درون بلاک کد سمی کالون قرار داده میشود. توجه داشته باشید که همچنین ممکن است که از PHP درون یک بلاک کد، خارج نشوید (url-escape) ، (و نه درون یک عبارت تک خطی)، که میتوانید مجددا به PHP باز گردید و بلاک را پایان دهید. مانند زیر:


<?php
If(3>2){
Echo("Hello");
}
?>

این خط به عنوان کد PHP تفسیر نمیگردد و تنها در صورتی که بلاک کد اجرا شود، چاپ میگردد:


<?php
Echo(2+2);
}
?>

پایان

Ariyan
چهارشنبه 30 آذر 1384, 00:32 صبح
Than you
اگر این مطالب را در یک تاپیک رائه دهید قابل استفاده تر و جمع و جور خواهد بود.

tabib_m
چهارشنبه 30 آذر 1384, 23:56 عصر
باشه اگه دوستان بخوان همین کار رو میکنم.
ولی وقتی گفتم میخوام شروع کنم ، گفتن موضوع موضوعش کن. منم فکر کردم منظور اینه که توی تاپیک های جداگانه بنویسم.
اگه میخواید همینجا ادامه میدم.

tabib_m
پنج شنبه 01 دی 1384, 00:06 صبح
بسم الله الرحمن الرحیم

با سلام

قسمت سوم: توضیحات (Comments)

در PHP روشهای گوناگونی برای لحاظ کردن توضیحات در کد وجود دارند. ساده ترین روش ، وارد کردن یک ممیز دوتایی (double slash) است، که به PHP میگوید تا همه چیز را تا سر خط بعدی نادیده بگیرد:


<?php
Echo("This is Motortown"); //Print a Message to the user
?>

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


<?php
Echo("This is Motortown"); #Print a Message to the user
?>

البته، میتوانید توضیحات را در جاهای دیگر نیز وارد نمایید – نه تنها در انتهای یک عبارت. میتوانید توضیحات را در هر جا که PHP به شما اجازه میدهد فضای خالی (white space) وارد کنید، اضافه نمایید.
تمامی موارد زیر مجازند:


<?php
//Print out number of limbs
Echo(2 //number of legs
+
2 #number of arms
);
# Number if limbs printed out
?>

همچنین PHP از توضیحات چند خطی نوع جاوا / C++ پشتیبانی به عمل می آورد و از جداسازهای /*...*/ برای این منظور استفاده میکند:


$Calculation=(($x/$y) * 7.5) / $z;
/* The above calculation takes the price
Differential, x and divides it by the
number of customers, y. We multiply this
figure by the current interest rate (7.5)
and then divide it by the decimal figure
stored in z */

بخاطر بسپارید که این روش های توضیحات، تنها درون جداسازهای PHP کار خواهند کرد. اگر PHP با این علامتها در خارج از جداسازها مواجه شود، با آنها همانند هر متن دیگری عمل خواهد کرد و در خروجی آنها را لحاظ خواهد کرد. از این روشها میتوانید به دلخواه خود در هنگام استفاده از PHP برای اسکریپت نویسی وب و با لحاظ کردن توضیحات HTML درون خروجی مانند زیر استفاده نمایید:


<?php
Echo("This is Motortown"); //This PHP comment will be ignored
?>

//this PHP comment will show up in the browser – oops

<!-- this HTML comment will show up in HTML source, but not in the browser -->

این عمل میتواند برای اشکال زدایی یا قابل تفهیم ساختن سورس کد HTML تولید شده، به کار رود.

پایان.

tabib_m
پنج شنبه 01 دی 1384, 00:31 صبح
بسم الله الرحمن الرحیم
با سلام

قسمت چهارم : لیترال ها (Literals)

تا به حال در مثالهایمان از لیترال های زیادی استفاده کرده ایم. PHP سه نوع اصلی لیترال را میشناسد: لیترالهای متنی (رشته اها)، لیترالهای عددی (اعداد صحیح و ممیز شناور)، و لیترالهای بولی (true و false).

لیترالهای متنی:

میتوانید رشته ها را به یکی از سه روش مشخص کنید: کوتیشن دوبل، کوتیشن تکی، یا دستور زبان 'here document'.
هنگامی که لیترال رشته ای را درون کوتیشن های دوبل قرار میدهید، PHP آن را برای یافتن انواع متعدد کاراکترها تجزیه میکند. به دنبال نامهای متغیر ها میگردد و مقدار آنها را در حین پردازش جایگزین مینماید. بدنبال کاراکتر های backslash میگردد و کاراکتر زیر را میخواند تا تصمیم گیری نماید تا کد کاراکتری را با چه چیزی جایگزین نماید. مقادیر مجاز عبارتند از:

n ----> (سطر جدید) (LF) Linefeed

r ----> (سر سطر) (CR) Carriage return

t ----> (تب)Tab

\ ----> Backslash (ممیز وارونه)

$ ----> Dollar sign (علامت دلار)

" ----> کوتیشن دوبل

عدد اکتال تا 3. ----> کاراکتری که کد ASCII آن به عدد اکتال (عدد در مبنای هشت) مربوط است.

x پس از آن یک عدد هگزادسیمال تا دو رقم می آید. ----> کاراکتری که کد ASCII آن به عدد هگزادسیمال مربوط است.

بنابراین، کد زیر:


<?php
Echo("This text goes\nacross several\nlines\n\t\"and this quotation is indented\" );
?>

به صورت زیر خواهد بود:

This text goes
Across several
Lines
"and this quotation is indented"
اگر خروجی اسکریپت به صورت زیر باشد، هیچ فایده ای نخواهد داشت:
This text goes across several lines "and this quotation is indented"
مرورگر ها کاراکتر های سر خط و فاصله خطوط (whitespace) دیگر (نظیر space و tab) را هنگام render نمودن (پردازش کردن) نادیده میگیرند. برای این که به یک مرورگر بگویید که یک line break را لحاظ کند، باید از تگ <br> (یا <br /> به زبان XHTML) استفاده کنند. در حالت دیگر، میتوانید از تابع nl2br() استفاده کنید که فاصله های خط HTML را پیش از همه ی کاراکتر های newline در یک رشته وارد می کند.
هنگامی که از کوتیشن های تکی استفاده میکنید، تنها کد های escape ی که کار میکنند، عبارتند از \' و \\ که به ترتیب برای کارکتر کوتیشن و یک ممیز وارونه (backslash) بکار می روند. هر کاراکتر دیگری، به صورت لیترال مجددا تولید میگردد. از این رو اگر علامت های کوتیشن را به سادگی در مثال پیشین خود با یک کوتیشن تکی جایگزین نماییم:


<?php
Echo('This text goes\nacross several\nlines\n\t\"and this quotation is
Indented\" ');
?>

خروجی به ترتیب زیر خواهد بود:

This text goes\nacross several\nlines\n\t\"and this quotation is indented\"
چنانکه میبینید، تمامی کاراکترها به صورت لیترال مجددا تولید میشوند، از جمله ممیز های وارونه (backslashes).

Here Document ها:

Here document ها راهی برای لحاظ نمودن بلاک های بزرگی از متن قالب بندی شده در یک رشته ، بجای استفاده از عبارات echo متعدد می باشند. یک here document به صورت زیر بکار می رود:


<?php
$hereText=<<<end_delimiter
All of the text of the here document is included, starting on this line,
and spanning multiple lines if necessary,
until, once it finishes, we include thi final delimiter on the next line
end_delimiter;

echo($hereText);
?>

پس از کاراکتر های <<< ، که به PHP میگویند یک here document در حال آغاز است، ما یک جداساز نهایی را تامین میکنیم. این میتواند هر ترتیبی از کاراکتر های الفبایی و عددی و / یا زیر خطها (underscore) باشد، اگرچه نباید با یک عدد یا یک underscore آغاز گردد. متن here document در خط بعدی آغاز میگردد. برای این که به PHP بگوییم که به انتهای here document رسیده ایم، به سادگی خطی را درج میکنیم که با جداساز نهایی آغاز میگردد که در ابتدا تعریف کرده بودیم.
متن درون یک here document ، طبق همان قواعد جایگزینی تفسیر میگردند که یک رشته ی کوتیشن دوبل تفسیر میشد، از این رو میتوانید متغیرها و کاراکترهای escape را وارد نمایید.

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


<?php
Echo(255);
Echo(0xff);
Echo(0377);
?>

اعداد هگزادسیمال بوسیله ی صفر و x پس از آن شناخته میشوند. اعداد اکتال فقط با یک صفر شروع میشوند. دستور echo همیشه اعداد صحیح را با استفاده از قالب دهدهی به خروجی میفرستد، حتی اگر به عنوان hex یا octal مشخص شده باشند، پس کد بالا عدد 255 را سه مرتبه می نویسد.
شما میتوانید اعداد صحیح منفی را با قرار دادن یک علامت منفی قبل از هر یک از آنها تعریف کنید. برای تعریف اعداد ممیز شناور، میتوانید از decimal point یا نماد توانی (exponential notation) استفاده کنید. آن چه در زیر آمده است ، همگی معتبر هستند:


<?php
Echo(0.001);
Echo(1e-3);
Echo(-3.8716E32);
?>

کاراکتر e یا E ، در دو نسخه ی قبلی «توان» معمولی است.

لیترال های بولین
PHP کلمات true و false را نیز میفهمد، و میتوانید از آنها در عملیات خاصی که به یک مقدار بولین احتیاج دارند، بکار ببرند. همانند تمامی کلمات کلیدی PHP ، اینها غیر حساس به متن (case insensitive) هستند و میتوانید از true ، TRUE و True بجای یکدیگر استفاده کنید.

پایان.

oxygenws
جمعه 02 دی 1384, 12:18 عصر
سپاسگذاریم :)

aakh1361
جمعه 02 دی 1384, 16:31 عصر
سلام
ممنون
مقالتون چند قسمته ؟

tabib_m
شنبه 03 دی 1384, 21:23 عصر
بسم الله الرحمن الرحیم

با سلام.
ببخشید از تاخیر

قسمت پنجم : متغیرها

یک متغیر در PHP همانند اکثر زبانهای دیگر ، به سادگی محفظه ی چند داده است. می توانید متغیرهای خود را نامگذاری کنید، در آنها داده وارد کنید، و در یک نقطه در برنامه ی خود، برای دسترسی به داده ی ذخیره شده، مجددا به آنها مراجعه کنید.
PHP متغیرها را با استفاده از علامت $ شناسایی میکند. نام یک متغیر همیشه در هنگامی که بر آن مراجعه میکنید با این کاراکتر آغاز میگردد. پس از علامت $، نام متغیر شما میتواند متشکل از هر تعداد از کاراکتر های الفبایی عددی و underscore ها باشد، اگر چه اولین کاراکتر نمی تواند یک عدد یا یک underscore باشد.
از این رو، موارد زیر همگی نامهای معتبر متغیر هستند:


$a
$a2
$my_name
$height_in_metres_above_sea_level

موضوع دیگری که باید به خاطر بسپارید این است که ، نام متغیر های PHP (بر خلاف کلمات کلیدی) حساس به متن هستند، از این رو تمامی موارد زیر به متغیرهای مختلف اشاره دارند:


$my_name
$MY_NAME
$My_Name

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

اختصاص مقدار به یک متغیر (Assignment)
جهت اختصاص یک مقدار به یک متغیر، از یک عبارت تخصیص (Assignment) به شکل زیر استفاده کنید:


$variable_name= expression;

تا لحظه ای بعد، نگاه مفصل تری به expression ها خواهیم انداخت. برای حالا، بیایید در نظر بگیریم که expression ، یا یک لیترال است یا متغیری دیگر. معنی آن این است که تمام آن چه که در زیر آمده است، درست کار خواهد کرد:


$a= "Hello";
$b= 123;
$c= $a;

حال که یک متغیر را بدست آورده ام، میتوانیم از آن به همان طریقی که قبلا از لیترال ها استفاده می کردیم، استفاده کنیم:


$a= "Hello";
Echo($a);

همان گونه که گفتیم، هنگامی که یک رشته را درون کوتیشن های دوبل قرار میدهیم، PHP درون آن بدنبال نام متغیرها و جایگزین های آنها در مقادیر میگردد. حال میتوانیم ببینیم که چگونه کار میکند:


$a= "Hello";
Echo("$a World!");

حال، با وجود این که مرجع متغیر درون یک لیترال رشته ای است، هنوز ارزشیابی میگردد و خروجی به صورت زیر است:


Hello World;

توجه داشته باشید که آن زمانی ارزشیابی می گردد که لیترال تفسیر میشود.


<?php
$a= "Hello";
$b= "$a World!";
$a="Goodbye";
Echo($b);
?>

در مثال زیر خروجی هنوز Hello World! است، زیرا جایگزینی متغیر در نقطه ی صورت میگیرد که لیترال درون یک رشته تفسیر شده است و در متغیر $b ذخیره میگردد. تغییر بعدی بر روی $a تاثیری بر $b نمیگذارد.

ارجاع (Reference)
همچنین PHP راه دیگری را برای ارجاع به متغیر ها فراهم میکند. یک ارجاع به متغیر (variable reference) به شکل:


<?php
${expression}
?>

به متغیری اشاره میکند که نام آن نتیجه ی ارزشیابی expression است. پس اگر expression یک لیترال رشته ای به صورت زیر باشد:


${"my_name"}

متغیری که به آن اشاره میشود، $my_name است. اگر متغیر $a شامل رشته ی "name" باشد، پس:


${"my_$a"}

نیز به متغیر $my_name اشاره مینماید. رشته همانند سابق به رشته ی "my_name" اشاره می کند و این برای اشاره به متغیر به کار میرود. حال اگر قرار بود متغیر $a حاوی "my_name" باشد، پس:


${$a}

نیز به $my_name اشاره مینماید. اگر چه، PHP نیز یک دستور زبان به مراتب کوتاهتر را برای این حالت فراهم میکند. اگر نام متغیر به همین شکل به سادگی درون متغیر دیگری قرار میگیرد، پس خواهید توانست از روش زیر استفاده کنید:


$$a

تا به متغیر $my_name اشاره کنید.
این جایگزینی ها در هر جایی که یک ارجاع به متغیر الزامی باشد، عمل خواهد کرد، از جمله در سمت چپ عبارات تخصیص، و درون رشته های کوتیشن دوبل.

tabib_m
شنبه 03 دی 1384, 21:25 عصر
مقالتون چند قسمته ؟
سلام
نمیدونم
از روی یک کتاب دارم مینویسم ، همینجوری پیش میرم.

tabib_m
دوشنبه 05 دی 1384, 19:40 عصر
بسم الله الرحمن الرحیم

با سلام.

قسمت ششم: ثابت ها (Constants)

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


<?php
Define("INDEPENDENCEDAY", "4th July");
?>

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


<?php
Echo(INDEPENDENCEDAY);
?>

به طور قراردادی به ثابت ها، تمام نام های با حروف بزرگ داده میشود، اگر چه این تنها یک قرار داد است، و آزاد هستید نامی را که با قوانین متغیر مطابقت میکند را انتخاب نمایید.
ثابتهای PHP به هدف عمل کردن همانند پیش پردازنده ی #defines زبان C به وجود آمده اند. می توانید آنها را در یک موقعیت تعریف کنید و کد دیگری را بسته به این که آیا به عنوان ثابت تعریف شده است یا نه، و یا اینکه به عنوان چه مقداری تعریف شده است، اجرا نمایید. این امر با استفاده از تابع defined() تست میشود:


<?php
If(defined("INDEPENDENCEDAY")) {
Echo("INDEPENDENCEDAY is defined");
} else {
Echo("INDEPENDENCEDAY is not defined");
}
?>

tabib_m
چهارشنبه 07 دی 1384, 21:46 عصر
بسم الله الرحمن الرحیم

با سلام.

قسمت هفتم : انواع داده (Data Types)

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

String
Integer
Double
Array
Boolean
Object
Resource
Unknown

کلمه ی double در PHP برای یک مقدار ممیز شناور است، و مقادیر ممیز شناور را «با دقت مضاعف» ذخیره می کند. از آنجایی که PHP اعداد ممیز شناور با «دقت معمولی» ندارد، این امتیاز چندان با اهمیت نیست.
می توانید بررسی کنید که PHP چه نوعی را با استفاده از تابع gettype() به یک متغیر اختصاص داده است:


<?php
$Variable = "This is some text";
Echo(gettype($Variable));
?>

این کدها یک رشته (string) را چاپ خواهد کرد.
همچنین می توانید از تابع مربوطه ی settype() برای تنظیم صریح نوع (type) استفاده کنید. کد نیازمند نام متغیری است که پس از آن نوعی که میخواهید متغیر را روی آن تنظیم کنید، می آید:


<?php
$Variable = "";
Settype($Change, integer);
Echo(gettype($Change));
Echo($Change);
?>


تبدیل نوع (Casting)

PHP همچنین دارای اپراتور های تبدیل نوع (Casting) است، که به شما امکان میدهد به PHP بگویید با یک مقدار از یک نوع، بگونه ای رفتار کنند که گویا از نوع دیگری است. اپراتورهای Casting نام نوعی هستند که میخواهید داده را به نقش آن در آورید و در داخل پرانتز قرار میگیرند.
(string)
(integer)
(double)
(Boolean)

همچنین نسخه های مخفف شده از برخی از این اپراتورها وجود دارند:
(int)
(bool)

این اپراتورها به صورت زیر به کار میروند:


<?php
$a="123.456";
Echo((int)$a);
?>

عدد 123 چاپ خواهد شد، زیرا PHP مقدار رشته ی 123.456 را به یک عدد صحیح کامل تبدیل کرده است.
PHP دارای چند رفتار جالب، در هنگام اجرای تبدیلات نیز هست. به کد زیر نگاهی بیندازیر:


<?php
$Change="2 Coffee Candies";
Settype($Change , integer);
Echo(gettype($Change));
Echo($Change);
?>

این برنامه بجای این که باعث خطا شود، integer و 2 را نمایش خواهد داد. برای این که متن تبدیل به عدد صحیح شود، مجبور است اطلاعات اضافه ای که نمیتوانند به یک عدد تبدیل شوند را از دست بدهد، اما PHP عدد را در ابتدای رشته پیدا میکند و آن را به کار میبرد. می توانید به این رفتار تبدیل – نوع صحیح (explicit type – conversion) ، بدون تابع settype() هم دست بیابید:


<?php
$Variable1 = 3;
$Variable2= "2 Coffee Candies";
$SumTotal = $Variable1 + $Variable2;
Echo($SumTotal);
?>

نتیجه ی این جمع عدد 5 خواهد بود، زیرا PHP عملیات اضافی را تشخیص میدهد و میفهمد که قصد شما چه بوده است. PHP یک تبدیل نوع integer را روی $Variable2 ارائه میدهد و سپس محتویات دو متغیر را با هم جمع میکند. در زبان های برنامه نویسی دیگر، این کار به احتمال قوی باعث بروز یک خطا خواهد شد، اما بدلیل ضعف انواع داده در PHP، اجازه ی این کار به شما داده میشود.
برای این که بفهمید PHP چگونه این تصمیمات را اتخاذ میکند، بیایید ببینیم که PHP اپراتور ها را چگونه به کار میگیرد.