组合两个都实现 __() 国际化函数的 PHP 框架
直到现在,我从来没有遇到过无法通过谷歌搜索的问题,这可能是一个愚蠢的问题:
我有一个 PHP 网站 将 Wordpress 与 Kohana 相结合 - Wordpress 用于博客,Kohana 用于自定义功能。这是通过使用 将它们拼接在一起的 WordPress 插件来完成的。
这很有效,除了它们都定义了一个 __()
国际化函数,具有不同的参数等。所以一旦 wordpress 覆盖了 kohana 的 __()
,如果 kohana 调用 __ ()
它爆炸了。
我对 PHP 不太熟悉,所以这可能很天真,但是这些东西不应该命名空间吗?除了更改一个或另一个框架的源代码以允许它们调用各自的 __()
之外,是否还有其他方法?
Never had a question I couldn't google until now, and it may be a doozy:
I have a PHP site that combines Wordpress with Kohana - Wordpress for the blog, and Kohana for the custom functionality. This is done using a Wordpress plugin that stitches them together.
This works great except they both define a __()
internationalization function, with different arguments etc. so once wordpress has overridden kohana's __()
, if kohana calls __()
it explodes.
I'm not that familiar with PHP so this might be naive, but shouldn't this stuff be namespaced? Is there anyway other than changing the source of one or the other framework to allow them to call their own respective __()
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我已经完成了一些将 Wordpress 与 Kohana 集成的工作。请参阅这篇文章。在 Kohana 中重命名和替换 __() 比在 Wordpress 中更容易,相信我。
I've done some work integrating Wordpress with Kohana. See this post. It's easier to rename and replace __() in Kohana than it is to do so for Wordpress, trust me.
命名空间是 PHP 5.3 中的新增功能。几乎所有现有的软件项目都不使用它们,因为它们希望与旧版本的 PHP 兼容。许多(大多数?)甚至不是面向对象的!您可以将 __ 的每个实例替换为项目之一中的另一个有效(且唯一!)函数名称,但这将使更新该项目变得困难,即使它可能是最好的解决方案。
Namespaces are new in PHP 5.3. Almost all existing software projects don't use them, since they want to be compatible with older versions of PHP. Many (most?) aren't even object oriented! You could replace every instance of __ with another valid (and unique!) function name in one of the projects, but that will make updating that project difficult even though it's probably the best solution.
使用命名空间可能是一项乏味的任务,因为它可能需要您进行大量代码更改。我建议用其他名称替换 Wordpress 中的 __() 函数。
Using namespaces may be a tedious task as it may require you a lot of code change. I would suggest replacing the __() function in Wordpress with some other name.