من یک سوال برام پیش اومده !
زبان 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 چاپ میکنه