Yorumlu metin kod girinti ile müdahale

4 Cevap php

Ben Yorumlu metin sözdizimi gibi, örneğin bir şablon içine koyarak değmez oluşturulan HTML kenar durumlar için.

Bu konuda beni rahatsız ediyor tek şey, olsa da, bu içerik ve heredoc dize kapanış işaretleyici ilk sütuna yapışır. Bu vidalar içe içe kod düzenleri:

class myclass 
 { 

    function __construct()
      { 
       $a = some_code();
       $b = some_more_code();
       $x = <<<EOT

line1
line2
line3
line4

EOT;    

        $c = even_more_code();
        $b = still_more_code();
        ...
        ...
        ...

ne demek istediğimi görmek.

Şimdi bu normal heredoc kullanarak muhtemelen çözülebilir değildir. Herkes bu çalıştı mı? Benim hayalim, otomatik girinti ile Yorumlu metin sözdizimi sahip olacaktır. Ama bu kaynak dosyaları için bazı ön-derleyici yazmadan mümkün değil sanırım.

Ben düzeltmek muyum?

4 Cevap

Bu da sık sık olması bir sorun: :-( ben yorumlu metin kullandığınızda kod iyi girintili değildir, ve ben gerçekten yorumlu metin gibi

Eğer ... Eğer o ya da bir şey etrafında bir koşul eklendi çünkü (or any equivalent in your IDE) daha çok girinti için kod, basın "sekmesinin" bütün bir bloğu seçin Ve heredoc dizeleri kırıldığında Bir "büyük" bir sorundur: Elinizde :-( tarafından un-girinti onlara gitmek zorunda

Ne yazık ki, ben sizin tarif ettiğiniz gibi herhangi bir alet görmedim ...


A solution, I suppose, would be to put the heredoc string in another file, and include it -- the include like could be indented normally ; but it would also mean one more file to load, which would make the code less clear.

Yorumlu metin üretim kodu oldukça işe yaramaz. Eğer devlet, aynı zamanda bir nedenle iş mantığı ile sunum içerik karıştırma konum değil çünkü.

Zaten bir MVC yaklaşımını kullanarak ediyorsanız, o zaman neden sadece sopa ile değil? Bir görünüm komut dosyası içine heredoc metni koymak, onun kapsamı değişkenleri bağlamak ve daha sonra render. Şimdi bir yıl geri baktığınızda, kendinize teşekkür edeceksiniz.

Bilginize, bu sorunu çözmek değil, ama Ruby programlama dili girintili heredoc destekler.

Sen PHP Devs bir özellik isteği göndermek istediğiniz, ve varolan dil bu sorunu çözer kanıtı için bir örnek olarak Ruby docs kullanmak, neden çok PHP olabilir?

Yapamazsınız ident heredocs veya nowdocs PHP. Bu benim geçici çözüm:

function foo() {
    $a = 123;
    $b = 456;
    $sum = $a + $b;
    $html = "
       <div>
         <h1>sum a, b</h1>
         Number a is $a, number b is $b<br>
         a+b equals <b>$sum<b>
       </div>
    ";
    echo $html;
}

Bu oluşturulan html kodu boşluk ekler ancak mod_pagespeed veya benzer apache mods kullanıyorsanız, sunucu tüm unnecesary boşlukları kaldıracaktır.

Sen çok sıralı sql sorguları için aynı tekniği kullanabilirsiniz:

function bar($sql, $id) {
    $q= "
       SELECT
         name
       , address
       , phone
       FROM users
       WHERE id = '$id' -- possible mysql inyection
       LIMIT 1
    ";
    $sql->query($q);
}

Okunabilirliğe de kazanır. Bu performansta hiçbir etkisi vardır ve compex SQL sorguları yorum yapabilirsiniz (# ile veya -)