در قسمت قبلی کار با حلقه ها در PHP را یاد گرفتیم. در این بخش از سری آموزش php قصد داریم نحوه ساخت توابع PHP بصورت سفارشی و شخصی را آموزش بدیم.
توابع از پیش ساخته شده (Built-in) در PHP
یک تابع شامل بلاکی از کدها است که یک کار/عملیات مشخصی را انجام می دهد.
PHP مجموعه عظیمی از توابع از پیش ساخته شده یا داخلی دارد که مستقیما می توان آن را داخل اسکریپت PHP برای انجام عملیات مشخصی صدا زد مثل gettype()
, print_r()
, var_dump()
و …
توابع تعریف-شده-توسط-کاربر (User-Defined) در PHP
علاوه بر توابع داخلی, PHP به ما اجازه ساخت توابع دلخواهمان را می دهد. این راهی برای ساخت پکیجی از کدهای قابل استفاده مجدد به منظور اجرای عملیات مشخص است و می توان هر کدام را جدا از برنامه اصلی نگهداری کرد.
بعضی از مزیت های توابع بصورت زیر است :
توابع PHP تکرار در کدهای برنامه را کاهش می دهند :
تابع به شما اجازه می دهد که بلاک کدهای معمولا استفاده می شود را داخل یک کامپونت جدا نگهداری کنید.
حالا می توانید عملیات مشخصی را با صدازدن این تابع در هرجایی که خواستید داخل اسکریپت خود بدون نیاز به کپی و پیست کردن مجدد کد, بارها و باره استفاده کنید.
توابع نگهداری و توسعه کد را بسیار آسان تر می کند :
از آنجا که تابع یکبار ساخته شده می تواند بارها قابل استفاده باشد, بنابراین ایجاد هرگونه تغییر داخل تابع, بصورت خودکار در تمام جاهایی که از آن استفاده کردید بدون حتی نیاز به تغییر در آن فایل ها, اعمال می شود.
توابع PHP خطایابی را آسان تر می کند :
زمانی که برنامه را به توابع تقسیم می کند, اگر هر نوع خطایی رخ دهد, متوجه می شوید که دقیقا کدام خطا باعث آن مشکل شده است و چطور می شود آن را پیاد کرد. بنابراین با توابع, پیدا و حل کردن خطاها بسیار آسان تر می شود.
توابع می توانند در برنامه های دیگر مجدد استفاده شوند :
از آنجا که توابع جدا از بقیه اسکریپت هستند, بنابراین استفاده همان توابع در دیگر اپلیکیشن ها فقط با کپی یا include
فایل های php آن به سادگی قابل انجام است.
بخش زیر به شما نحوه تعریف ساده توابع PHP سفارشی را نشان می دهد.
ایجاد و فراخوانی توابع PHP
سینتکس پایه برای ساخت تابع سفارشی بصورت زیر است :
1 2 3 |
function functionName(){ // Code to be executed } |
اعلان ساخت تابع سفارشی ابتدا با کلمه function
شروع می شود, سپس نام تابعی که می خواهید بسازید و در ادامه پارانتر ها ()
را قرار می دهید و در نهایت براکت های فرفری {}
.
این یک مثال از ساخت تابع سفارشی است که تاریخ امروز را نشان می دهد :
1 2 3 4 5 6 7 8 |
<?php // Defining function function whatIsToday(){ echo "Today is " . date('l', mktime()); } // Calling function whatIsToday(); ?> |
نکته : نام یک تابع باید با حروف لاتین یا کارکتر _
شروع شود نه عدد. البته که بعد حروف لاتین یا ـ
می توانید از اعداد یا حروف لاتین بیشتر و .. استفاده کنید. نام توابع به حروف کوچک و بزرگ حساس نیستند.
توابع با پارامترها
می توانید پارامترهایی را هنگام تعریف تابع مشخص کنید که مقادیری را در زمان اجرا دریافت کنند.
کار پارامترها همانند متغیرها در تابع هستند که در زمان اجرا با مقادیر (که آرگومان گفته می شود) پر می شوند.
1 2 3 |
function myFunc($oneParameter, $anotherParameter){ // Code to be executed } |
می توانید هر تعداد که نیاز داشتید پارامتر تعریف کنید. به هرحال برای هر پارامتر مشخص شده, یک آرگومان نیاز است که در هنگام صدا زدن تابع باید پاس داده شود.
تابع getSum()
در مثال زیر دو مقدار عددی را به عنوان آرگومان دریافت و آن ها را بایکدیگر حمع و خروجی را در مرورگر نمایش می دهد.
1 2 3 4 5 6 7 8 9 10 |
<?php // Defining function function getSum($num1, $num2){ $sum = $num1 + $num2; echo "Sum of the two numbers $num1 and $num2 is : $sum"; } // Calling function getSum(10, 20); ?> |
خروجی مثال بالا بصورت زیر است :
نکته : یک آرگومان (argument
) مقداری است که به یک تابع پاس داده می شود, و یک پارامتر متغیری است که داخل تابع , آرگومان را دریافت می کند. به هر حال, این اصطلاحات به جای هم نیز استفاده می شود.
توابع با پارامترهای اختیاری و مقادیر پیش فرض
همچنین می توانید یک تابع با پارامترهای اختیاری تعریف کنید. برای اینکار کافیست که در ادامه نام پارامتر یک علامت =
به همراه مقدار پیش فرض آن را قرار بدید :
1 2 3 4 5 6 7 8 9 10 11 |
<?php // Defining function function customFont($font, $size=1.5){ echo "<p style=\"font-family: $font; font-size: {$size}em;\">Hello, world!</p>"; } // Calling function customFont("Arial", 2); customFont("Times", 3); customFont("Courier"); ?> |
همانطور که می بینید, سومین فراخوانی تابع customFont()
هیچ آرگومان دومی ندارد. این باعث می شود که انجین PHP از مقدار پیش فرض پارامتر $size
که ۱٫۵ می باشد استفاده کند.
برگشت دادن مقادیر از یک تابع
یک تابع می تواند مقدار تابع فراخوانی شده را با دستور return
برگشت دهد. مقدار می تواند هر نوعی باشد از جمله آرایه و آبجکت ها.
1 2 3 4 5 6 7 8 9 10 |
<?php // Defining function function getSum($num1, $num2){ $total = $num1 + $num2; return $total; } // Printing returned value echo getSum(5, 10); // Outputs: 15 ?> |
یک تابع نمی تواند چندین مقدار را برگشت دهد. به هرحال می توانید همان نتیجه را با برگشت دادن آرایه بصورت زیر ایجاد کنید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php // Defining function function divideNumbers($dividend, $divisor){ $quotient = $dividend / $divisor; $array = array($dividend, $divisor, $quotient); return $array; } // Assign variables as if they were an array list($dividend, $divisor, $quotient) = divideNumbers(10, 2); echo $dividend; // Outputs: 10 echo $divisor; // Outputs: 2 echo $quotient; // Outputs: 5 ?> |
امیدوارم از بخش اول کار با توابع php نهایت استفاده را برده باشید.
در بخش دوم کار با توابع بازگشتی, مفهوم scope , رفرنس آرگومان و… را یاد می گیریم.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق باشید
باسلام عرض خسته نباشیدخدمت استاد. من هرکاری کردم از دستورات.وکلماتی که در نوشتن php به کار برده میشه سردرنمیارم. مثلا حلقه ها و دتوابع وغیره …. که بعضی کدها در دسترس است. ولی تفاوت و مقایسه بعضی کلمات که هر کدنویسی یه جور کد مینویسه که با کد برنامه نویس شخص دیگرفرق داره حتی تعداد کدهای که مینویسند یکی طولانی و یکی کم حجم است.علت چیه؟ من میخوام php رو یادبگیرم ولی سردرگم هستم که از کجا شروع کنم لطفا کمکم کنید
سلام. ممنون.
اول شما باید طبق آموزش ها پیش برید و نحوه تعریف متغییر, توابع, حلقه ها و شرط و توابع مهم کار با رشته ها و غیره را یاد بگیرید.
بعد از یادگیری این موارد باید مینی پروژه طراحی کنید مثلا ماشین حساب یا فرم دریافت اطلاعات از کاربر و این موارد.
بعد از آن کار با یک دیتابیس مثل mysql و نحوه اتصال به آن با php را یاد بگیرید.
بعد نحوه کدنویسی functional و شی گرایی و نهایتا mvc را یاد بگیرید تا بتونید منطق کدنویسی بقیه رو درک کنید چرا که صرفا یادگیری دستورات php کمکی در درک کدهای دیگران که کدنویسی آنها فرق داره, نمی کنه
موفق باشید.
باسلام مجدد. شمادر اموزش های php متغییر, توابع, حلقه ها و شرط و توابع مهم کار با رشته ها و غیره رو نوشتید یادگرفتم .ولی برای من مبهمه که این کدها در کجای کدنویسی به درد میخوره وچه طوری وکجا ازاین دستورات استفاده کنم ونحوه تعریفشان چه طوری هست. ودرمورد نحوه کدنویسی functional و شی گرایی و نهایتا mvc کمی برام توضیح بدین که mvc چیه و…
سلام. باید آموزش های پروژه محور و کاربردی رو ببینید تا با نحوه استفاده از این آموخته را عملی یاد بگیرید.
آموزش های کاربردی در بخش آموزش php میتونید ببینید.
آموزش mvc
بقیه موارد رو باید در گوگل جستجو کنید تا به حواب برسید
خیلی سپاسگذارم از راهنماییتون