PHP'de HEREDOC dizge bildirimleri bir html bloğunun çıktısını almak için gerçekten kullanışlıdır. Değişkenleri sadece $ önekiyle ayrıştırmasını sağlayabilirsiniz, ancak daha karmaşık sözdizimi için ($ var [2] [3] gibi), ifadenizi {} parantez içine koymalısınız.
PHP 5, ise aslında bir heredoc dize içinde {} parantezler içinde işlev çağrıları yapmak mümkün, ama işe biraz geçmesi gerekiyor. İşlev adının kendisi bir değişkende saklanmalıdır ve onu dinamik olarak adlandırılmış bir işlevmiş gibi çağırmanız gerekir. Örneğin:
$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
Gördüğünüz gibi, bu sadece şunlardan biraz daha karmaşık:
$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
İlk kod örneğinin yanı sıra, işlevi çağırmak için HEREDOC'tan çıkmak veya sorunu tersine çevirmek ve aşağıdaki gibi bir şey yapmak gibi 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, çıktının doğrudan çıkış akışına yerleştirilmesi dezavantajına sahiptir (çıktı tamponlamasını kullanmıyorsam), ki bu istediğim şey olmayabilir.
Öyleyse, sorumun özü şudur: buna yaklaşmanın daha zarif bir yolu var mı?
Yanıtlara göre düzenleme: Kesinlikle bir tür şablon motoru hayatımı çok daha kolaylaştıracak gibi görünüyor, ancak temelde her zamanki PHP stilimi tersine çevirmemi gerektirecek. Bu kötü bir şey değil, ama ataletimi açıklıyor .. Hayatı kolaylaştırmanın yollarını bulmaya hazırım, bu yüzden şimdi şablonlara bakıyorum.
Text {$string1} Text {$string2} Text
heredokta olduğu gibi basitçe kullanabilirim .