💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ mahdi mortezaee
ساختار blocking code در توابع ؟
امیر صالحی حل شده توسط امیر صالحی

من یک سوال برام پیش اومده !

زبان php به صورت blocking کار میکنه !  و کدها پشت سر هم اجرا میشند ... یعنی نمونه error notice داده میشه چون که اول متغیر echo شده و سپس تعریف شده در حالی که پس از تعریف باید echo میشد .

echo $name;
$name = '7learn' ;  
// output:  PHP Notice-> Undefined variable: name 

پس چرا در function‌ها خطا داده نمیشه ؟ برای مثال در کد زیر ابتدا تابع call شده و در ادامه تعریف شده .

echo alert();
function alert(){
    return 'function-7learn';
}
// output : function-7learn

چیزی که خودم فک میکنم اینه که مفسر php قبل از اجرای کد‌ها یکبار تمام function هارو چک میکنه و در ساختار stack مانندی نگه میداره و سپس ارجرا میکنه کدهارو و برای متغیر‌ها این کار رو نمیکنه ؟؟

سلام و احترام

در اصل هسته php که زبان c هستش خط به خط همه چی رو بررسی میکنه اما php یک بار (اول کار) کل فایل رو compile میکنه، به خاطر هیمنه که روی توابع حساسیتی نداره اما برای متغیر‌ها notice چاپ میکنه

بهترین پاسخ
امیر صالحی ۰۳ آبان ۱۳۹۹، ۱۶:۳۵