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