来自包含页面的PHP返回方法?

时间:2016-05-21 18:40:16

标签: php internationalization heredoc

我想在网站上实施翻译,并尝试在http://we-love-php.blogspot.com.ar/2012/07/how-to-implement-i18n-without.html找到的方法

当请求的页面是一个完整的页面时,我可以轻松完成,但当请求的页面由许多包含的文件组成时,我不知道该怎么做。

这是我的index.php的样子:

<?php
include 'includes/header.php';
include 'includes/index.php';
include 'includes/footer.php';
?>

我尝试的是将类放在每个模板文件中,如下所示:

<?php

class example{
  public function now() {
    return <<<FOOBAR
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <title>MY SITE's TITLE</title>
      <meta name="keywords" content="SOME KEYWORDS" />
      <meta name="description" content="SOME DESCRIPTION">
      <meta name="author" content="MY NAME">
      ...........
FOOBAR;
}
}
?>

在尝试不止一次创建课程时,这并没有奏效。然后我尝试在标题之上创建类,然后在页脚之后关闭它。它给我一个错误,好像PHP首先尝试打开页脚,然后重新排列包含文件的顺序,所以它首先包含footer.php,最后包含header.php。它不仅是一团糟,而且底部还有一条警告信息:

  

解析错误:语法错误,意外的文件结束,期待变量

我该如何解决这个问题?我喜欢这种翻译我的网站的方法,但需要它在包含模板的同时工作。有可能吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

包含一个文件字面上告诉编译器抓取一个文件的确切内容,并在运行脚本时将它们复制/粘贴到另一个文件中。这意味着如果你将一个类声明放入多个被包含的文件中,你将最终得到该类的多个声明。

使用include的重点是让你分解你的代码并减少其中的冗余。您不应该在任何时候在多个文件中使用相同的类,函数或代码片段,因为您会遇到一些非常奇怪的行为和冲突。

选择一个文件以将您的类声明放入其中,并确保它不在其他任何文件中。

我希望这有帮助!