SORU
19 EYLÜL 2008, Cuma


Arama HEREDOC dize içinde PHP fonksiyonları

PHP, HEREDOC dize bildirimleri html bloğu çıkış için çok yararlıdır. Alabilirsin ayrıştırma değişkenleri sadece isime onlarla dolar, ama daha karmaşık sözdizimi ($var[2][3]), sen koymak zorunda ifadeniz içinde {} parantez.

PHP 5, Buaslında işlev çağrıları içinde yapmak mümkün {} HEREDOC dize parantez içinde, ama iş biraz geçmesi gerekiyor. İşlev adı kendisi bir değişken içinde saklanır ve bu gibi dinamik olarak adlandırılmış bir işlev çağrısı. Örneğin:

$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;

Gördüğünüz gibi, bu biraz daha karışık

$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;

Bu HEREDOC işlevini çağırmak için ihlal veya sorunu tersine çevirmek gibi bir şey yapıyor gibi ilk kod örneği dışında başka yolları da vardır:

?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>

İkincisi, doğrudan çıkış istediğimi olmayabilir çıkış akımı çıkış tampon kullanıyorum sürece), içine konur dezavantajı var.

Yani sorumun özü şudur: daha şık bir şekilde bu yaklaşım var mı?

Yanıtlara göre Düzenle:Kesinlikle şablon motoru çeşit hayatım çok daha kolay olurdu gibi görünüyor, ama bana temelde her zamanki PHP tarzıma ters çevirmek gerekir. Yukarı şablonlar içine bakıyorum o yüzden hayat daha kolay olsa da yapmak için yollar bulmaktan için geldim.. o kadar da kötü bir şey, ama benim ataleti açıklar.

CEVAP
19 EYLÜL 2008, Cuma


HEREDOC tüm bu için, şahsen kullanmazdım. Sadece iyi bir "şablon" sistemi. bina için yapmaz Tüm HTML birkaç dezavantajları olan bir dize içinde kilitli

  • WSYİWYG için hiçbir seçenek yoktur
  • IDE HTML için kod tamamlama
  • Çıkış (HTML) mantığı dosyaları kilitli
  • Şimdi daha karmaşık bir şablon elde etmek için yapmaya çalıştığın şey, bir döngü gibi kesmek kullanmak zorunda kalıyorsun

Temel bir şablon motoru almak, ya da sadece içerir ile PHP kullanımı sınırlayıcı bu yüzden yaptık.

template_file.php

<html>
<head>
  <title><?php echo $page_title; ?></title>
</head>
<body>
  <?php echo getPageContent(); ?>
</body>

index.php

<?php
$page_title = "This is a simple demo";
function getPageContent()
{
    return '<p>Hello World!</p>';
}

include( 'template_file.php' );

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • EmmightySofia

    EmmightySofi

    25 EYLÜL 2011
  • Vintendo Power

    Vintendo Pow

    2 Ocak 2007