什么呈现HTML?

Ada*_*dam 0 html php rendering

在PHP中,您可以使用PHP编写html ,例如:

<html>
    <head>
        <?php echo "HTML Title from PHP "; ?>
    </head>
    <body>
        <h1>hello world!</h1>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想知道这是什么,它是如何工作的,写的是什么,我需要多深才能理解它?

现在我听说模板引擎,但是PHP也有很多模板引擎,所以在我理解的模板引擎上编写模板引擎听起来很愚蠢(对我来说),模板引擎解析整个文件只是为了替换命令,然后它也开始输出文件内容,所以我觉得它不是系统的一部分,从而失去了性能.(也许我完全错了,但严肃地说,这就是我听到它时的感受:P)

编辑

伙计们,当我说什么呈现HTML时,我的意思是什么在PHP中呈现HTML?在node.js文件中,您无法编写任何HTML,因为没有任何处理它.

Dav*_*vid 6

试图避免过多的信息,但这是在Linux上与Apache一起使用时PHP的完整周期.

Prerequisities

常见的服务器设置称为LAMP堆栈,代表Linux,Apache,Mysql和PHP.通常,您可以找到许多随时可用的LAMP堆栈设置以及使用它们的指南,因此在您的问题的上下文中,您需要关注的是Apache和PHP.

第1阶段 - 授权

当Web浏览器通过PHP联系运行Apache的Web服务器时,第一步是让Apache找到所需的内容.假设您访问www.mywebsite.com/hello.php,Apache将会看到您正在寻找一个名为hello.php的文件.此时,由于后缀(.php),Apache知道这个文件需要由PHP解释,因此它将处理委托给PHP解释器.

第2阶段 - 设置

从Apache到PHP的交接包括一系列标题,告诉PHP以下内容:正在处理什么类型的事务(GET/POST/PUT/DELETE),传入请求的IP地址,浏览器的用户代理(Firefox, MSIE,IPhone等),如果有cookies.更重要的是,Apache向PHP提供了服务器上hello.php文件的路径.

第3阶段 - 处理

根据配置,PHP可能需要做一些基本的内务处理(设置自己),但在理想的条件下它准备就绪并打开hello.php PHP的一部分是一个名为lexer的模块,它查看hello.php并弄清楚如何处理文件.通过提供的示例,一个非常简单的示例可能如下所示:

  1. T_STRING ="<html> \n\t <head> \n\t"
  2. T_OPEN_TAG;
  3. T_ECHO;
  4. T_STRING ="PHP的HTML标题";
  5. ;
  6. T_CLOSE_TAG;
  7. T_STRING ="\ t </ head> \n\t <body> \n\t <h1> hello world!</ h1> \n\t </ body> \n </ html>"

注意,我已经编写了大部分T_代码,但它们非常接近真实的代码.

第1行 - PHP知道它超出了所谓的范围,因此它立即将整个字符串传递给Apache,即Web服务器.Apache很可能会将整个字符串传递到Web浏览器上.

第2行. - T_OPEN_TAG告诉PHP它进入PHP范围并等待它的第一条指令.

第3行--T_ECHO告诉PHP它将创建一个echo语句,因此它的规则然后启动以查找要输出的表达式或字符串.

第4行 - 幸运的是,下一个标记是一个字符串,所以PHP现在知道它将回应"来自PHP的HTML标题"

第5行 - ; 告诉PHP,echo语句是完整的,更重要的是这在语法上是正确的......所以PHP将字符串"HTML Title from PHP"传递给Apache,它将这个传递给浏览器.

第6行 - Close?>标签告诉PHP它正在离开PHP语言范围,因此它可以回到更简单的规则集

第7行 - 与第1行一样,整个字符串传递给Apache以传递给Web浏览器

此时,PHP到达所谓的EOF或文件结尾,并知道它已经完成了处理文件hello.php.它会进行清理工作,然后告诉Apache它已完成.

定稿

此时请求已基本完成,Apache很可能会挂起在Web浏览器上,发送所有内容完整的通知.

如果您有任何问题或需要有关下一步的指示,请告诉我.另请注意,为了简洁/理智,此处还有很多细节,但为了了解鸟类如何看待PHP与Web浏览器和Web服务器的关系,这应该足以开始了.

演示脚本

$test = 'Hello world <' . '?' . 'php echo \'this is in scope\'; ?' . '> and we\'re done';

 $tokens = token_get_all($test);

 print_r($tokens);
Run Code Online (Sandbox Code Playgroud)

输出将是PHP生成的真实世界标记字符串.每个标记可以是一个字符串或三元素元组/数字数组,其中索引0 = =标记ID,索引1 ==原始字符串,我不能为我的生活记住第三个元素是什么.如果您对每个令牌的名称感到好奇,请使用token_name.


Dan*_*Dan 5

大括号内的任何内容<? ?>都是 php 代码 - 它在服务器端执行,然后将纯 HTML 输出到客户端,此时客户端的 Web 浏览器将呈现它。

看看这个


ste*_*lin 5

首先,PHP是一个模板引擎,当您在示例中使用它时.

如果你想保持简单,你真的不需要任何东西.