goto في PHP

من موسوعة حسوب
< PHP
(بالتحويل من PHP/Control Structures/goto)

(PHP 5 >= 5.3.0, PHP 7)

يمكن استخدام عامل goto للانتقال إلى قسم آخر في البرنامج، وتعيّن نقطة الانتقال هذه بواسطة وسم متبوعٍ بنقطتين رأسيتين (:)، وتكون طريقة الانتقال باستخدام العامل goto متبوعًا بالوسم المراد الانتقال إليه. هناك بعض القيود المفروضة على استخدام goto، إذ يجب أن يكون الوسم الهدف في نفس الملف ونفس السياق (context)، بمعنى أنّه لا يمكن الانتقال من داخل الدالة أو التابع إلى الخارج كما لا يمكن الانتقال إلى الداخل. لا يمكن أيضًا الانتقال إلى أي نوع من أنواع الحلقات أو إلى بنية switch، ولكن يمكن الانتقال إلى نقاط خارجها، ومن الاستخدامات الشائعة هو استخدام goto بدلًا من عبارة break متعددة المستويات.

المثال 1: مثال على goto

<?php
goto a;
echo 'Foo';
 
a:
echo 'Bar';
?>

تعطي الشيفرة السابقة المخرجات التالية:

Bar

المثال 2: مثال على استخدام goto في حلقة تكرارية

<?php
for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
    if($j==17) goto end; 
  }  
}
echo "i = $i";
end:
echo 'j hit 17';
?>

تعطي الشيفرة السابقة المخرجات التالية:

j hit 17

المثال 3: هذه الشيفرة لن تعمل

<?php
goto loop;
for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
    loop:
  }
}
echo "$i = $i";
?>

تعطي الشيفرة السابقة المخرجات التالية:

Fatal error: 'goto' into loop or switch statement is disallowed in
script on line 2

ملاحظة: أصبح العامل goto متوافرًا في الإصدار 5.3 من PHP.

مصادر