gpt4 book ai didi

php - 为什么会有人使用 printf 来输出 html,而不是将 PHP 分解成实际的 html?

转载 作者:太空宇宙 更新时间:2023-11-04 13:31:33 25 4
gpt4 key购买 nike

看看这个来自 wordpress 的 twentyten 主题的可怕代码:

<?php
function twentyten_posted_on() {
printf( __( '<span class="%1$s">Posted on</span> %2$s <span class="meta-sep">by</span> %3$s', 'twentyten' ),
'meta-prep meta-prep-author',
sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span class="entry-date">%3$s</span></a>',
get_permalink(),
esc_attr( get_the_time() ),
get_the_date()
),
sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s">%3$s</a></span>',
get_author_posts_url( get_the_author_meta( 'ID' ) ),
sprintf( esc_attr__( 'View all posts by %s', 'twentyten' ), get_the_author() ),
get_the_author()
)
);
}
?>

为什么会有人想要这样做?

为什么不改为执行以下操作?

<?php
function twentyten_posted_on() {
?>
<span class="meta-prep meta-prep-author">Posted on</span>
<a href="<?php= get_permalink() ?>" title="<?php= esc_attr( get_the_time() ) ?>" rel="bookmark">
<span class="entry-date">get_the_date()</span>
</a>
<span class="meta-sep">by</span>
<span class="author vcard">
<a class="url fn n" href="<?php= get_author_posts_url( get_the_author_meta( 'ID' ) ) ?>" title="<?php= esc_attr__( 'View all posts by '.get_the_author() ) ?>"><?php= get_the_author() ?></a>
</span>
<?php
}
?>

后者对我来说更干净。为什么有人会改用第一种方法?这只是个人喜好,还是有一些功能上的好处?

最佳答案

它是这样写的,所以它可以国际化。您会看到,在对 printf() 的调用中,有一个对 __() 的调用,这是 WordPress 的翻译函数。

这样一来,翻译人员只需移动 %1$s 部分即可轻松移动每个字符串的各个部分,以符合其语言的语法和结构。然后,将翻译后的格式化字符串传递给 printf(),它可以插入适当的变量。

WordPress' doc page on translation有一些翻译方面的例子(尽管字符串更简单)。

并非那里发生的所有事情都是翻译所必需的,但由于他们已经在做一些 printf 风格的事情,我想理论上如果它至少是一致的,它就更容易理解。

关于php - 为什么会有人使用 printf 来输出 html,而不是将 PHP 分解成实际的 html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6159760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com