Το πρόβλημα της προαιρετικότητας των αγκυλών στις συνθήκες if στην PHP
Παρόλο που η PHP επιτρέπει τις παραπάνω συντομεύσεις με αγκύλες, γενικά δεν το συνιστώ, καθώς αποτερεί πηγή δυσνόητων σφαλμάτων.
Ας υποθέσουμε για παράδειγμα ότι υπάρχει το ακόλουθο κώδικα:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
Ας υποθέσουμε τώρα ότι αποφασίσαμε, σε περίπτωση που
η συνθήκη ικανοποιείται, να κάνουμε και μια δεύτερη
echo:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
Ωστόσο, χωρίς αγκύλες, μέσα στη συνθήκη βρίσκεται μόνο η πρώτη εντολή εκτύπωσης, δηλαδή η πρώτη εκτύπωση θα εκτελείται όταν η συνθήκη είναι αληθής, ενώ η δεύτερη - πάντα.
Ουσιαστικά, ο κώδικάς μας είναι ισοδύναμος με αυτόν:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // αυτή η γραμμή βρέθηκε εκτός της συνθήκης
?>
Ενώ εμείς θα θέλαμε τον ακόλουθο κώδικα:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // αυτή η γραμμή είναι μέσα στη συνθήκη
}
?>
Αυτός ακριβώς είναι ο λόγος για τον οποίο συνιστάται πάντα να τοποθετείτε αγκύλες, για να μην πέφτετε σε σφάλματα αυτού του είδους.
Χωρίς να εκτελέσετε τον κώδικα, προσδιορίστε τι θα εμφανιστεί στην οθόνη:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
Χωρίς να εκτελέσετε τον κώδικα, προσδιορίστε τι θα εμφανιστεί στην οθόνη:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
Χωρίς να εκτελέσετε τον κώδικα, προσδιορίστε τι θα εμφανιστεί στην οθόνη:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>