【问题标题】:PHP return method from an included page? [duplicate]包含页面的PHP返回方法? [复制]
【发布时间】:2016-05-21 18:40:15
【问题描述】:

我想在网站上实现翻译,我正在尝试在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。它不仅一团糟,而且底部还有一条警告信息:

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

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

提前致谢!

【问题讨论】:

    标签: php internationalization heredoc


    【解决方案1】:

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

    使用 include 的全部意义在于让您分解代码并消除其中的冗余。在任何时候,您都不应该在多个文件中包含相同的类、函数或代码段,因为您会遇到一些非常奇怪的行为和冲突。

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

    我希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2014-01-04
      • 2011-06-09
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 2014-05-11
      • 2012-09-18
      相关资源
      最近更新 更多