دوره مجازی PHP (جلسه 10): تعریف توابع دلخواه توسط برنامه نویس



visibility  
mode_comment   ۴۶

در این جلسه در رابطه با مفهوم توابع در زبان های برنامه نویسی صحبت می کنیم و به تشریح نحوه ی ایجاد توابع دلخواه در زبان PHP توسط برنامه نویس می پردازیم .

:: سرفصل مطالب این جلسه به شرح زیر است :

فصل 10 : توابع : تعريف توابع دلخواه توسط برنامه نويس

  • تابع چيست و چرا بايد از توابع استفاده کرد ؟
  • ساختار نوشتاري توابع PHP
  • قواعد نامگذاري توابع
  • پارامترها يا ورودي هاي توابع PHP
  • مقدار بازگشتي (خروجي) توابع
  • مثالي که مزاياي استفاده از توابع را نشان مي دهد .
  • نوع پارامتر هاي توابع PHP (مقداري و ارجاعي)
  • محدوده اعتبار متغيرها (Scope) و متغيرهاي سراسري (global variables)
  • مقداردهي پيشفرض براي پارامترهاي تابع
  • تعريف تابع با تعداد متغيري از پارامترهاي ورودي
  • توليد مقادير چندگانه توسط يک تابع
  • نحوه ي دسترسي به متغيرهاي سراسري
  • چک کردن وجود يا عدم وجود تابع با نام خاص
  • مفهوم توابع بازگشتي و مثالي کاربردي از آن
  • ميني پروژه : شبيه سازي خط توليد خودرو در فازهاي مختلف کارخانه
  • تمرين

history افزایش کیفیت صدا :

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

info توجه

این مطلب یک جلسه از آموزش زبان برنامه نویسی php می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش زبان برنامه نویسی php

comment دیدگاه کاربران
payman3 replyپاسخ

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

لقمان آوند

ممنون بابت یادآوری
درست شد و می تونید دانلود کنید .

na3r replyپاسخ

من هم خیلی از کیفیت صدای جلسات قبل راضی نبودم. ممنون به خاطر اهمیتی که به این موضوع دادین. ولی راستش تغییر محسوسی هم توی این جلسه اتفاق نیفتاده!
به تجربه بنده علت ، Bit rate پایین Audio های فایل های تصویری دوره است.
درواقع فایل ها در مجموع 193kbps بیت ریت دارن در حالی که فقط 61kbps به صدا اختصاص داره!
اگه بتونین از طریق نرم افزاری که باهاش کپچر می کنین (فکر می کنم از Camtasia استفاده می کنین) توی همین فرمت mp4 به صدا بیت ریت بالاتری اختصاص بدین (مثلا 128) افزایش کیفیت صدا خیلی بهتر خواهد بود.

لقمان آوند

سلام
صدای ویدیوها دیگه نویز نداره و واضحتر هست .
128kbps هم بزارم خیلی فرقی نمی کنه عزیز . سعی می کنم یه نمونه از هر دو کیفیت رو مقاسه کنم .
اگه بخوام کیفیت صدای ویدیو ها رو 128 بزارم 40% حجم ویدیوها اضافه میشه که اصلا نمی صرفه .

Ali replyپاسخ

سلام
خسته نابشید
کیفیت صدا از این جلسه نسبت به جلسات قبلی بهتر شده ، بابت زحمتی که کشیدید ممنون.
ولی یه نکته خدمت دوستان عرض کنم وبرای داشتن کیفیت بهتر صدا ، برنامه KMPlayer تست کنید

لقمان آوند

خواهش می کنم .
امیدوارم که رضایتتون روز به روز بیشتر شده باشه .

danial asvadi replyپاسخ

سلام استاد خسته نباشید
یک سوال واسم پیش اومد این که تفاوت آرگومان با پارامتر دقیقا چیه؟کجا ها باید بگیم پارامتر کجا ها آرگومان؟

لقمان آوند

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

hoseyn replyپاسخ

استاد چند خط کد نوشتم…


و خروجی بهم میده 10000 و 20000 و 40000
میخواستم بدونم عملا اون مقداری که به نابع فرستادم کجا میره؟ چرا پس اعمال نشده؟ مگه نباید هر بار مقدارش 10000 بشه؟منکه اونرو به عنوان مقدار به تابع میفرستم اگه پوانتر باشه مقدارشو تغییر نمیده؟مرسی…

لقمان آوند

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

آرمین replyپاسخ

سلام آقای آوند من اون تابع printVar رو که گفتین به عنوان تمرین روی اون فکر کنیم کامل مطالعه کردم و همشو فهمیدم به غیر از اون return false که آخر تابع قرار دادین . میشه بگید اون چی کار میکنه ؟

لقمان آوند

سلام، خوبه .
اون خط آخر هم اشتباه از من بوده . می تونید حذفش کنید return false رو .

آرمین replyپاسخ

راستی آقای آوند من به مشکلی برخوردم در کد زیر من تابع myfunction رو ایجاد کردم بعد اونو توی متغیر dd قرار دادم . میدونم برای این که یک مقدار رو برگردونم باید از return استفاده کنم ولی با توجه به کاری که من کردم باید مقدار تابع درون متغیر قرار بگیره ولی نمیگیره اینم از کد :

لقمان آوند

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

امین خلیلی replyپاسخ

با سلام

این کد هیچ مقداری را چاپ نمیکند دلیلش چیه
ممنون

لقمان آوند

طبیعیه !
echo رو گذاشتی قبل از continue و هیچ وقت اجرا بهش نمیرسه !

امین خلیلی replyپاسخ

سلام جناب اوند مگه این حلقه نباید روی 9 متوقف بشه چرا تا 12 ادامه پیدا میکنه

لقمان آوند

تو هر بار حلقه 3 تا به i اضافه میکنی . 3 و 6 و 9 و 12 (که شرط نقض میشه) …
اینجور موارد رو خودت چک کن تو هر بار اجرای حلقه راحت متوجه میشی ..

امین خلیلی replyپاسخ

جناب اوند اگر در کد زیر بخواهیم به divبک کراندش ادرس تصویرش را از طریق کد phpبدیم به چه صورت باید بنویسیم
<?php
$p= __DIR__.'/file/2.jpg';
echo '’;
به صورت بالا نوشتم نشد

لقمان آوند

اقا امین از دکمه <> که پایین باکس نظردهی هست برای قراردادن کد استفاده کنید …

امین خلیلی replyپاسخ

سلام
جناب اوند میشه لینک دقیق دانلود اون فایل توابع phpرا بگذارید چون وقتی وارد سایت میشم نمیدونم کدوم را باید دانلود کنم ممنون

لقمان آوند

کدوم فایل منظورت هست ؟

امین خلیلی replyپاسخ

ادرس یه سایت را تو ویدیو فرمودید که توابع پیشفرضphpداخلش هست وقتی وارد سایت میشم نمیدونم از کدوم قسمت باید دانلود کنم میخاستم لینک دانلودش را بفرمایید
این ادرس سایت هست که فرمودیدhttp://php.net/download-docs.php

لقمان آوند

از اینجا دانلود کن .

User

دوستانی که پس از دانلود این فایل فقط پنل سمت چپ رو مشاهده کردن و محتوای سرفصل ها براشون قابل مشاهده نبود ( در ویندوز 7 برام این اتفاق افتاد) فایل رو ببندید ، روی فایل دانلود شده راست کلیک properties را بزنید و در پنجره باز شده در قسمت پایین دکمه unlock رو بزنید و فایل رو دوباره باز کنید …
با تشکر از سون لرن و استاد بزرگوار لقمان آوند …
و خداوند سون لرن رو آفرید … 😉

Massud Tarekhi replyپاسخ

با سلام
استاد می شه کاری کنیم که تابعی که نوشتیم از توابع پیشفرض بشه؟؟
و چطوری کد های توابع پیشفرض php رو ببینیم (مثلا ببینیم تابع var_dump کدش چیه)؟؟

وحید صالحی

سلام برای این کار باید هسته php رو تغییر بدید و اون رو مشاهد کنید …

Massud Tarekhi replyپاسخ

با سلام
استاد چگونه می تونیم کاری کنیم که در تابع printVar اگه کاربر فرضا عدد وارد کرد بنویسه اینتجر و بعد همون عدد؟؟؟ لطفا راهنمایی کنید

لقمان آوند

سلام
با تابع gettype می تونی نوع متغیر رو بگیری و چاپ کنی.
یا اینکه از vardump به جای echo استفاده کنی …

محسن رنجبر replyپاسخ

سلام

برای من متغیر $_ENV رو نشون نمیده! چرا؟

لقمان آوند

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

Mehdi Mashayekhi replyپاسخ

سلام استاد عزیز یه باگ توی کد printVar هست :

Aref Taker replyپاسخ

سلام آقای آوند
میشه دقیقاً توضیح بدید چرا باید از پوینتر ها استفاده کنیم؟ و اینکه میگن فرق بین متغیر معمولی(pass by value) با ریفرنس (pass by reference )به عنوان پارامتر اینکه در ریفرنس آدرس متغیر است نه مقدارش به چه معنیست؟؟ اگه امکان داره مثالی ذکر کنید.

لقمان آوند

پوینتر ها رو توی دوره توضیح دادیم و بعدا ازش استفاده می کنیم و بهتر کاربردشو درک می کنید.
پوینتر کلا نوعی از متغیر هست که آدرس متغیر دیگه ای رو درون خودش ذخیره میکنه به جای اینکه یه مقدار عددی یا متنی رو ذخیره کنه! (البته خود آدرسی که ذخیره میکنه یه عدد هست که آدرس متغیر در حافظه اصلی هست) . کاربرداشو تو جلسات آینده و مثالهایی که می زنیم می تونید متوجه بشید .
call by value یعنی اینکه مقدار متغیری که به عنوان پارامتر به تابع میدیم پاس داده میشه و نه خود متغیر. توی call by reference خود متغیری که پاس میدید میره توی تابع و استفاده میشه که برای آرایه ها و اشیاء به این شکله . برای بقیه موارد مثل اعداد، رشته ها و بولین ها به صورت call by value هست .

سید احسان عظیمی replyپاسخ

مینی پروژه ی آخر آموزش زمان جلسه رو زیاد کرد و میشد از چند تا از توابع آن صرف نظر کرد ولی در کل این جلسه خوب بود مخصوصا قسمت Scop و متغیر های Global ، ممنون.

مهدی یعقوب خانی replyپاسخ

سلام بزرگ ترین عیب این دوره اینه که جناب لغمان سعی نکردن که نتایجی با php چاپ میشه رو به وسیله css و html زیبا نمایش بدن که برای کار آموزش هم یه انگیزه ای تایجاد بشه.

وحید صالحی

سلام دوست عزیز زود قضاوت نکنید ابتدا دوره رو تا انتها ببینید بعد انتقاد کنید در سه پروزه آخر نکته مورد نظر شما رعایت شده

sadra hakim replyپاسخ

سلام استاد
من مفهوم دستور return رو نمیفهمم . یعنی چی که یه مقداری رو بر میگردونه ؟ میشه کمی توضیح بدید

مصطفی قدیمی

عبارت return، به اجرای یک تابع پایان می دهد و یک مقدار را از همان تابع برمی گرداند.

sadra hakim

منظورتون از برگردوندن چیه ؟ یعنی چاپ میکنه ؟

مصطفی قدیمی

مقدار رو برمیگردونه برای چاپ باید از echo استفاده کنید

sadra hakim

خب یعنی چی که مقدار رو میگردونه ؟ به کجا بر میگردونه ؟ منظور از برگردوندن چیه ؟ شما که دوباره همون جواب قبلیتون رو دادید

مصطفی قدیمی

دوست عزیز یعنی هرچی که به دست اومده رو در متغییر ذخیره میکنه و شما میتونی با دستور چاپ اونو به کاربر نمایش بدی

sadra hakim replyپاسخ

سلام استاد
اون قسمتی که میگید در تابع sum2 از &$s استفاده میکنیم آدرس متغیر قرار میگیره نه مقدار متغیر، من نفهمیدم منظورتون از آدرس متغیر چیه. حتی به جلسه متغیر هام برگشتم و دیدم ولی باز نفهمیدم. اگه میشه در این مورد کمی توضیح بدید

لقمان آوند

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

حبيبه حسن ابادي replyپاسخ

سلام دوباره
وقت بخیر
من از فایل 1 تا 10 رو سعی کردم دانلود کنم، فایل ویدیو شماره 3،9 و 10 دانلود نشد و فایلهای هر جلسه هم فقط جلسه 6 دانلود شد و بقیه خطا داشت.
لطفا بررسی میکنید؟

ارسال نظرات

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.