【问题标题】:Order of execution between text and a class-generated table文本和类生成表之间的执行顺序
【发布时间】:2020-01-06 10:41:28
【问题描述】:

我对使用 PHP 类生成并保存到变量中的 HTML 表有疑问。 此变量还包含文本,保存在表格之前,但表格显示在文本之前。 这就是我所做的:

  1. 将文本放入变量中:

$RET='精彩介绍';

  1. 用我自己的类生成一个表(它仍然是一个简单的表):

$TAB=new class_table();

$TAB::add_th('列'); // 将 'Column' 保存在 'th' 3D 数组中

$TAB::close_line(); // $num_tr++

$TAB::add_td('Cell'); // 将 'Cell' 保存在 'td' 3D 数组中

$TAB::display(); // 生成表格

  • 当我这样做时:

$RET='精彩介绍';

$RET.=$TAB::display();

回声 $RET;

...我在正文之前有表格。

  • 当我这样做时:

echo '很棒的介绍';

$TAB::display();

...文本后面有表格,没错。

  • 当我生成没有类的表时,当然也是正确的。

你知道这是否正常(也许类的调用是首先执行的?)以及我是否可以解决这个问题?

我问是因为这段代码只是一个简单的示例,真正的代码非常复杂并且使用 AJAX 调用(并且 console.log 证明表格是在文本之前生成的)。我希望我已经足够清楚了。

谢谢。

【问题讨论】:

    标签: php class html-table


    【解决方案1】:

    是的,可能完全正常。这个 Display 类可能正是这样做的。显示,而不是返回值。您没有为 $RET.= 分配任何内容,您可以通过第二次回显它来证明它,它会再次打印您的标题,但不会打印您的表格。在您没有为 RET 分配任何内容时,您会输出表格,可能带有 Display 类中的 print 语句或 echo 语句。可能有某种方法可以使用 eval 函数来捕获 Display 类的输出,但这超出了我的工资等级。 (这只是一个评论,但我没有获得特权。)

    【讨论】:

    • 非常感谢,您找到了解决方案!我在显示方法中使用了回声。我一直在我的显示方法中使用回声,它适用于这个“表格”之一。现在我将更新我的其他类并将“显示”方法重命名为“返回”之类的名称,以使其更易于理解并避免其他错误。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2017-08-23
    • 1970-01-01
    • 2012-05-19
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多