Bildiğim kadarıyla the manual görebileceğiniz gibi, heredoc dizge içinde işlevleri çağırmak mümkün değildir. Bir hantal yolu önceden kelimeleri hazırlamak olacaktır:
<?php
$world = _("World");
$str = <<<EOF
<p>Hello</p>
<p>$world</p>
EOF;
echo $str;
?>
zihin magic getter method bir sınıf inşa ediyor gelir geçici bir çözüm fikri.
Böyle bir sınıf bildirmek istiyoruz:
class Translator
{
public function __get($name) {
return _($name); // Does the gettext lookup
}
}
noktada sınıfının bir nesnesini başlatın:
$translate = new Translator();
Daha sonra içinde bir gettext arama yapmak için aşağıdaki sözdizimini kullanabilirsiniz heredoc bloğu:
$str = <<<EOF
<p>Hello</p>
<p>{$translate->World}</p>
EOF;
echo $str;
?>
$translate->World
otomatik tra olacak Sihirli alıcı yöntemi sayesinde gettext aramaya eklendi.
boşluk veya özel karakterler ile kelimeleri Bu yöntemi kullanmak için (örneğin
Hello World!!!!!!
adında bir gettext girişi, aşağıdaki gösterim kullanmak zorunda olacak.
$translate->{"Hello World!!!!!!"}
Bu, tüm denenmemiş ama çalışması gerekir
Güncelleştirme: As @mario öğesinin, her şeyden sonra HEREDOC dizelerinden işlev çağırmak olduğunu öğrendim.Bu gibi alıcılar kullanmak, şık bir çözüm olduğunu düşünüyorum, ancak doğrudan işlev çağrısı kullanmak daha kolay olabilir. nasıl Bunu yap.
. Test edilmedi, bu yüzden size tam bir garanti veremem ama görebildiğim kadarıyla, bu işe yarayacak. Daha karmaşık gettext tanımlayıcılarıyla nasıl başa çıkılacağına dair son güncellememe (boşluklar ve özel karakterler ile ilgili olarak) bakın. –
Wow, alıcıların oldukça zor/şematik kullanımı. – mario
İşlev çağrılarını kullanabileceğinizden çıkıyor. $ _ = "_"; 'Ve' {$ _ ('text')} 'ile. Ancak getter sözdizimi +1'dir. – mario