Alternatif koşullu sözdizimi (if-else) PHP 5.3.0 ve üzerinde başarısız (xampp)

2 Cevap php

Geçenlerde bana PHP 5.3 dökülüyor xampp V1.7.2 yükseltti. Benim tüm httpd.confs ve php.ini ile birlikte 's (Ben bu sürüm, tüm önceki xampp bültenleri gibi bir yükseltme olacağı hafife almıştı) yitip var. Neyse, tüm hizmetlerini yeniden yapılandırmak için bana biraz zaman aldı - ama şimdi ben komik bir sorun haline çalıştırmak.

Benim işyerinde kullanılan bu kendine yazılmış CMS için alternatif koşullu sözdizimi bir çok kullanır if-else, yani

if( condition ): ?>
    <some html />
<?php else: ?>
    <some other html />
<?php endif;

Bu xampp 1.7.1 ile birlikte gelen PHP 5.2.x ile iyi çalışmak için kullanılan - ve şimdi aniden böyle kod blokları bu hatayı üretiyoruz:

Parse error: syntax error, unexpected **T_ELSE in** ...

Ben herhangi bir şekilde benim komut değişmiş değil - PHP 5.2.x. bir aksama olmadan kesinlikle çalışmak için kullanılan aynı

Yani benim soru PHP 5.3 gibi alternatif conditionals izin vermez, değil mi? Yoksa benim yapılandırma dosyalarındaki bazı gizli seçeneği açmak gerekiyor?

Ben shorttags kullanmayın unutmayın - bu yüzden burada bir sorun değildir.

2 Cevap

If / else sözdizimi 5.3 değişmedi rağmen, sözdizimi birçok diğer parçaları var. Sen diğer yeni sözdizimi özelliklerinden biri çözümleyici kafa karıştırıcı olup olmadığını görmek için sadece söz else önce hatlarını kontrol etmelisiniz.

Sorunun nerede olduğunu anlamaya yapamıyorsanız, her zaman sadece aşağıdaki üç satır kalana kadar sistematik kod satırlarını silme başlayabilirsiniz:

<?php if(condition): ?>
<?php else: ?>
<?php endif ?>

Update: Sen gerçekten görmek sözdizimi hatası yerde bu kodu olsaydı ne olacaktı çünkü short_open_tag, açık kodu ile test etmelidir:

<? if(condition): ?>
<?php else: ?>
<?php endif ?>

Evet, PHP 5.3 koşullu tablolar dahil olmak üzere kontrol yapıları, için alternative syntax için izin verir.

Ben bu sorunu giderir görmek için bir ya da iki yerde düzenli sözdizimi ile alternatif sözdizimi değiştirerek hata ayıklamak için denemenizi öneririz. Eğer, o zaman sorun ne olduğundan emin biliyorum.