ساختار blocking code در توابع ؟

پرسیده شده
فعالیت 1286 روز پیش
دیده شده 446 بار
1

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

زبان 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 مانندی نگه میداره و سپس ارجرا میکنه کدهارو و برای متغیر ها این کار رو نمیکنه ؟؟

فایل پیوست

mahdi mortezaee
mahdi mortezaee

3 آبان 99

2
حذف شده

سلام و احترام

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

فایل پیوست

امیر صالحی

توسط

امیر صالحی

3 آبان 99