با عرض سلام و وقت به خیر خدمت کاربران سایت پی وی لرن و کاربرانی که دوره ی آموزش php 7 را دنبال می کنند.
در جلسه گذشته با حلقه های For در آشنا شدیم. حلقه های for در PHP یک قطعه کد را به دفعات مشخص تکرار می کنند.
حلقه for در PHP زمانی استفاده می شود که از قبل می دانیم قطعه کد یا اسکریپت ما چند بار بایستی اجرا شود. در این جلسه به آموزش کار با توابع php 7 می پردازیم.
آنچه که امتیاز PHP اصلی بر سایر زبان های برنامه نویسی است توابع موجود در آن است.
این زبان دارای بیش از ۱۰۰۰ تابع است.
علاوه بر توابعی که می توان در php ساخت، توابعی دیگر نیز هستند که می توان خودمان آن را بسازیم.
تابع یک قطعه کد و دستور است که می توان از آن به طور مکرر در جاهای مختلف برنامه استفاده کرد.
تابع از طریق فراخوانی (call) آن اجرا می شود.
اعلان این توابع با عبارت کلیدی “function” شروع می شود :
1 2 3 | function functionName() { code to be executed; } |
نام تابع می تواند با حروف و یا زیر خط (_) شروع شود.
نام تابع نباید با عدد شروع شود.
بهتر است تابع را بر حسب عملی که انجام می دهد نامگذاری کنیم.
اسامی توابع به حروف کوچک و بزرگ حساس نیست.
در مثال زیر، ما تابعی بنام “() writeMsg” ایجاد کردیم.
کروشه باز (}) نشانگر شروع کد تابع است و کروشه بسته ({) نشانگر پایان تابع است.
خروجی این تابع “!Hello World” است.
برای فراخوانی یک تابع فقط کافی است نام آن نوشته شود :
1 2 3 4 5 6 7 | <?php function writeMsg() { echo "Hello world!"; } writeMsg(); // call the function ?> |
اطلاعات را می توان از طریق آرگومان ها به توابع ارجاع داد. یک آرگومان دقیقا شبیه به یک متغیر است.
آرگومان ها پس از نام تابع تعیین می شوند و در داخل پرانتز تابع گذاشته می شوند.
می توان تا هر تعداد که نیاز باشد، به تابع آرگومان اختصاص داد، تنها کافی است که آرگومان های تابع را با کاما از هم جدا کنیم.
در مثال زیر تابعی با یک آرگومان (fname$) تعریف شده است.
وقتی تابع () familyName فراخوانی می شود، همزمان ما اسم را (مثل Jani) نیز ارسال می کنیم؛ و اسم در داخل تابع استفاده می شود، که خروجی آن چندین نام مختلف است، اما نام خانوادگی همه یکسان است:
1 2 3 4 5 6 7 8 9 10 11 | <?php function familyName($fname) { echo "$fname Refsnes.<br>"; } familyName("Jani"); familyName("Hege"); familyName("Stale"); familyName("Kai Jim"); familyName("Borge"); ?> |
در مثال زیر تابعی با دو آرگومان تعریف شده است ( fname$ و year$):
1 2 3 4 5 6 7 8 9 | <?php function familyName($fname, $year) { echo "$fname Refsnes. Born in $year <br>"; } familyName("Hege", "1975"); familyName("Stale", "1978"); familyName("Kai Jim", "1983"); ?> |
در مثال بالا، متوجه شدیم که لازم نیست به PHP بگوییم کدام دسته داده متغیر است.
php با توجه به مقدار یک نوع داده، به صورت خودکار آن را به متغیر وابسته می کند.
از آنجا که انواع داده ها به معنای دقیق تنظیم نشده اند، می توانید چیزهایی مانند اضافه کردن یک رشته به یک عدد صحیح را بدون خطا انجام دهید.
در php 7 دسته یا نوع declarations اضافه شده است.
دسته declarations به شما این امکان را می دهد که دسته داده ها را به استثناء اعلان یک تابع و با استفاده از strict requirement، مشخص نمایید.
در مثال زیر سعی شده است که یک عدد و یک رشته بدون strict requirement اضافه شود.
1 2 3 4 5 6 7 8 | <?php declare(strict_types=1); // strict requirement function addNumbers(int $a, int $b) { return $a + $b; } echo addNumbers(5, "5 days"); // since strict is enabled and "5 days" is not an integer, an error will be thrown ?> |
برای تعیین strict
لازم است که ;(declare(strict_types=1) تنظیم نماییم که در اولین خط فایل php ما قرار می گیرد.
اعلان strict تابع فراخوانی ای را که در این فایل ساخته شده مشخص می کند.
اعلان strict
خواندن کدها را ساده تر می نماید و همه چیز را در یک جهت متمرکز می نماید.
در مثال زیر طریقه استفاده از پارامتر پیش فرض نشان داده شده است.
اگر ما تابع () setHeight را بدون آرگومان فراخوانی کنیم، مقدار پیش فرض را به عنوان آرگومان برمی دارد :
1 2 3 4 5 6 7 8 9 10 | <?php declare(strict_types=1); // strict requirement function setHeight(int $minheight = 50) { echo "The height is : $minheight <br>"; } setHeight(350); setHeight(); // will use the default value of 50 setHeight(135); setHeight(80); ?> |
برای اینکه تابع ما مقدار برگشتی داشته باشد یا به عبارتی از تابع خروجی بگیریم، از دستور return استفاده می کنیم.
1 2 3 4 5 6 7 8 9 10 | <?php declare(strict_types=1); // strict requirement function sum(int $x, int $y) { $z = $x + $y; return $z; } echo "5 + 10 = " . sum(5, 10) . "<br>"; echo "7 + 13 = " . sum(7, 13) . "<br>"; echo "2 + 4 = " . sum(2, 4); ?> |
آموزش کار با توابع php 7 را با مبحث بازگردانی PHP برای دسته Declarations می پردازیم
در مثال زیر دسته بازگشتی برای تابع را مشخص می کنیم:
1 2 3 4 5 6 | <?php declare(strict_types=1); // strict requirement function addNumbers(float $a, float $b) : float { return $a + $b; } echo addNumbers(1.2, 5.2); ?> |
می توان یک نوع return دیگری از نوع آرگومان تعیین کرد تا مطمئن شده که بازگردانی correct type به درستی صورت گرفته است.
1 2 3 4 5 6 | <?php declare(strict_types=1); // strict requirement function addNumbers(float $a, float $b) : int { return (int)($a + $b); } echo addNumbers(1.2, 5.2); ?> |
در این جلسه به صورت جزئی و مفصل به آموزش کار با توابع php 7 پرداختیم.
جلسه بعدی را به آموزش آرایه ها در php 7 می پردازیم.
با پی وی لرن همراه باشید.
صابر
با عرض سلام ، بسیار ممنون از سایت واقعا عالی شما
تو بحث declare سوالی برام پیش اومده بود که دقیقا برا چیه، که با یکم جستجو به این نتیجه رسیدم:
برای اینکه مفسر php بصورت خودکار دیتاتایپ ها(نوع متغییر) رو تبدیل به نوع ورودی(مقدار جدید داخل متغییر) نکنه این کد رو اضافه میکنیم. اینطوری مفسر اجازه نمیده داخل متغییر از نوع int مقدار string وارد بشه و خطا میده که اینطوری ورودی رو محدود به نوع مشخص شده میکنه که در مثال شما int هستش.
امیدوارم دقیق گفته باشم.
پی وی لرن
سلام
ممنون، نظر لطف شماست
برای این بخش که در php7 ایجاد شده برای مدیریت هر چه بهتر بر روی پارامترها و آرگمان ها بوده که باعث می شود برنامه نویس بر روی نوع داده کنترل بیشتری داشته باشد.