Rumah php教程 php手册 PHP教程:PHP编程中的变量生存周期

PHP教程:PHP编程中的变量生存周期

Jun 21, 2016 am 08:56 AM
get nbsp php treat

对于PHP的中的数据来源, 不外乎有俩种:

<ol><li><span class="sh_number">1</span><span class="sh_symbol">.</span> 来自代码中</li></ol>
Salin selepas log masuk

对于代码中的变量(也就是直接量)来说, 变量分配/赋值在编译期, 活跃在执行器, 在请求关闭期被销毁.对于这些变量来说, 使用APC进行Opcode缓存, 则会缓存这部分变量的值.

而对于来自外部的变量, 变量分配/赋值在编译器后, 执行期前, 在请求关闭期被销毁,对于这些变量来说, 使用APC进行OpCode缓存, 是不会被缓存的.

今天就着重关注下外部变量的一个部分,GET来的数据的整个生命周期.

假设, 有如下请求到来:

<ol> </ol>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

而, 在index.php中:

  1. $name =

    对于PHP的中的数据来源, 不外乎有俩种:

    <ol><li><span class="sh_number">1</span><span class="sh_symbol">.</span> 来自代码中</li></ol>
    Salin selepas log masuk

    对于代码中的变量(也就是直接量)来说, 变量分配/赋值在编译期, 活跃在执行器, 在请求关闭期被销毁.对于这些变量来说, 使用APC进行Opcode缓存, 则会缓存这部分变量的值.

    而对于来自外部的变量, 变量分配/赋值在编译器后, 执行期前, 在请求关闭期被销毁,对于这些变量来说, 使用APC进行OpCode缓存, 是不会被缓存的.

    今天就着重关注下外部变量的一个部分,GET来的数据的整个生命周期.

    假设, 有如下请求到来:

    <ol> </ol>
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    而, 在index.php中:

    ___FCKpd___2
    Salin selepas log masuk
    Salin selepas log masuk

    我们知道, 在最后的执行期, $_GET数组必然包含如下片段:

    1. 对于PHP的中的数据来源, 不外乎有俩种:

      <ol><li><span class="sh_number">1</span><span class="sh_symbol">.</span> 来自代码中</li></ol>
      Salin selepas log masuk

      对于代码中的变量(也就是直接量)来说, 变量分配/赋值在编译期, 活跃在执行器, 在请求关闭期被销毁.对于这些变量来说, 使用APC进行Opcode缓存, 则会缓存这部分变量的值.

      而对于来自外部的变量, 变量分配/赋值在编译器后, 执行期前, 在请求关闭期被销毁,对于这些变量来说, 使用APC进行OpCode缓存, 是不会被缓存的.

      今天就着重关注下外部变量的一个部分,GET来的数据的整个生命周期.

      假设, 有如下请求到来:

      <ol> </ol>
      Salin selepas log masuk
      Salin selepas log masuk
      Salin selepas log masuk
      Salin selepas log masuk

      而, 在index.php中:

      1. $name =

        对于PHP的中的数据来源, 不外乎有俩种:

        <ol><li><span class="sh_number">1</span><span class="sh_symbol">.</span> 来自代码中</li></ol>
        Salin selepas log masuk

        对于代码中的变量(也就是直接量)来说, 变量分配/赋值在编译期, 活跃在执行器, 在请求关闭期被销毁.对于这些变量来说, 使用APC进行Opcode缓存, 则会缓存这部分变量的值.

        而对于来自外部的变量, 变量分配/赋值在编译器后, 执行期前, 在请求关闭期被销毁,对于这些变量来说, 使用APC进行OpCode缓存, 是不会被缓存的.

        今天就着重关注下外部变量的一个部分,GET来的数据的整个生命周期.

        假设, 有如下请求到来:

        <ol> </ol>
        Salin selepas log masuk
        Salin selepas log masuk
        Salin selepas log masuk
        Salin selepas log masuk

        而, 在index.php中:

        ___FCKpd___2
        Salin selepas log masuk
        Salin selepas log masuk

        我们知道, 在最后的执行期, $_GET数组必然包含如下片段:

        ___FCKpd___3
        Salin selepas log masuk
        Salin selepas log masuk
        Salin selepas log masuk

        那么, 我们今天就重点关注下, Query String是如何构建成_GET数组的(关于GET变量的生成, 请一并阅读我之前的文章: “PHP的GET/POST等大变量生成过程“):

        在请求到来时刻,php_request_startup(定义在main.c)被调用,来做初始化现场. 在这个过程中包括设置超时值,调用各个模块的请求初始化函数. 当然也包括我们关心的, 创建变量环境.

        php_hash_environment根据php.ini中的variables_order来依次初始化各个预定义大变量, 那么对于$_GET来说:

        <ol><li><span class="sh_symbol">...</span></li><li><span class="sh_keyword">case</span> <span class="sh_string">'g'</span><span class="sh_symbol">:</span></li><li><span class="sh_keyword">case</span> <span class="sh_string">'G'</span><span class="sh_symbol">:</span></li><li>     <span class="sh_keyword">if</span> <span class="sh_symbol">(!</span>_gpc_flags<span class="sh_symbol">[</span><span class="sh_number">2</span><span class="sh_symbol">])</span> <span class="sh_cbracket">{</span></li><li>          sapi_module<span class="sh_symbol">.</span><span class="sh_function">treat_data</span><span class="sh_symbol">(</span>PARSE_GET<span class="sh_symbol">,</span> NULL<span class="sh_symbol">,</span> <span class="sh_usertype">NULL</span><span class="sh_normal"> </span>TSRMLS_CC<span class="sh_symbol">);</span></li><li>          _gpc_flags<span class="sh_symbol">[</span><span class="sh_number">2</span><span class="sh_symbol">]</span> <span class="sh_symbol">=</span> <span class="sh_number">1</span><span class="sh_symbol">;</span></li><li>          <span class="sh_keyword">if</span> <span class="sh_symbol">(</span><span class="sh_function">PG</span><span class="sh_symbol">(</span>register_globals<span class="sh_symbol">))</span> <span class="sh_cbracket">{</span></li><li>               <span class="sh_function">php_autoglobal_merge</span><span class="sh_symbol">(&</span><span class="sh_function">EG</span><span class="sh_symbol">(</span>symbol_table<span class="sh_symbol">),</span></li><li>                    <span class="sh_function">Z_ARRVAL_P</span><span class="sh_symbol">(</span><span class="sh_function">PG</span><span class="sh_symbol">(</span>http_globals<span class="sh_symbol">)[</span>TRACK_VARS_GET<span class="sh_symbol">])</span> TSRMLS_CC<span class="sh_symbol">);</span></li><li>          <span class="sh_cbracket">}</span></li><li>     <span class="sh_cbracket">}</span></li><li><span class="sh_keyword">break</span><span class="sh_symbol">;</span></li></ol>
        Salin selepas log masuk

        大体可以看出,这段逻辑,首先通过treat_data来生成变量hash(PG(http_globals)[TRACK_VARS_GET]), 如果打开了auto_register_globals,则再把$_GET数组中的变量加入到符号表中.

        treat_data是属于sapi_module_struct中的一个成员:

        <ol><li> 注意<span class="sh_symbol">:</span>     本文基于apache2handler方式的sapi<span class="sh_symbol">,</span> 这个启动过程和之前的文章sapi</li><li>原理中的启动过程略有不同<span class="sh_symbol">,</span> php5通过注册apache2的ap_hook_post_config挂钩<span class="sh_symbol">,</span></li><li>在apache server启动的时候启动php<span class="sh_symbol">(</span>php_apache_server_startup<span class="sh_symbol">,</span>定义在</li><li><span class="sh_normal">sapi/apache</span>2<span class="sh_normal">hander/sapi</span>_apache2<span class="sh_symbol">.</span>c中<span class="sh_symbol">),</span> 在这个函数中调用sapi_startup启动sapi<span class="sh_symbol">,</span></li><li>继而通过调用php_apache2_startup来注册sapi module struct<span class="sh_symbol">,</span></li><li>然后调用php_module_startup来初始化PHP<span class="sh_symbol">,</span> 其中又会初始化ZEND引擎<span class="sh_symbol">,</span></li><li>以及填充zend_module_struct中的treat_data成员<span class="sh_symbol">(</span>通过php_startup_sapi_content_types<span class="sh_symbol">)</span></li></ol>
        Salin selepas log masuk

        现在回过头来继续看treat_data(也就是php_default_treat_data):

        <ol><li><span class="sh_symbol">....</span></li><li><span class="sh_keyword">if</span> <span class="sh_symbol">(</span>arg <span class="sh_symbol">==</span> PARSE_GET<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span> <span class="sh_comment">/* GET data */</span></li><li>     c_var <span class="sh_symbol">=</span> <span class="sh_function">SG</span><span class="sh_symbol">(</span>request_info<span class="sh_symbol">).</span>query_string<span class="sh_symbol">;</span></li><li>     <span class="sh_keyword">if</span> <span class="sh_symbol">(</span>c_var <span class="sh_symbol">&&</span> <span class="sh_symbol">*</span>c_var<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span></li><li>          res <span class="sh_symbol">=</span> <span class="sh_symbol">(</span><span class="sh_type">char</span> <span class="sh_symbol">*)</span> <span class="sh_function">estrdup</span><span class="sh_symbol">(</span>c_var<span class="sh_symbol">);</span></li><li>          free_buffer <span class="sh_symbol">=</span> <span class="sh_number">1</span><span class="sh_symbol">;</span></li><li>     <span class="sh_cbracket">}</span> <span class="sh_keyword">else</span> <span class="sh_cbracket">{</span></li><li>          free_buffer <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span></li><li>     <span class="sh_cbracket">}</span></li><li><span class="sh_cbracket">}</span> <span class="sh_keyword">else</span> <span class="sh_keyword">if</span> <span class="sh_symbol">(</span>arg <span class="sh_symbol">==</span> PARSE_COOKIE<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span> <span class="sh_comment">/* Cookie data */</span></li></ol>
        Salin selepas log masuk

        在上面的逻辑中, 给res复制为query_string, SG(request_info)是一个代表了当前请求信息的结构体, 其中query_string是在php_apache_request_ctor中通过复制apache的reqeust_rec结构体中的args而来的.

        对于本文的例子来说, 此时res即为”name=laruence&career[]=yahoo&career[]=baidu”,

        继续在treat_data中, 随后的逻辑是:

        <ol><li>var <span class="sh_symbol">=</span> <span class="sh_function">php_strtok_r</span><span class="sh_symbol">(</span>res<span class="sh_symbol">,</span> separator<span class="sh_symbol">,</span> <span class="sh_symbol">&</span>strtok_buf<span class="sh_symbol">);</span></li><li><span class="sh_symbol">...</span></li><li><span class="sh_keyword">while</span> <span class="sh_symbol">(</span>var<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span></li><li>     val <span class="sh_symbol">=</span> <span class="sh_function">strchr</span><span class="sh_symbol">(</span>var<span class="sh_symbol">,</span> <span class="sh_string">'='</span><span class="sh_symbol">);</span></li><li> </li><li>     <span class="sh_keyword">if</span> <span class="sh_symbol">(</span>arg <span class="sh_symbol">==</span> PARSE_COOKIE<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span></li><li>          <span class="sh_comment">/* Remove leading spaces from cookie names,</span></li><li><span class="sh_comment">               needed for multi-cookie header where ; can be followed by a space */</span></li><li>          <span class="sh_keyword">while</span> <span class="sh_symbol">(</span><span class="sh_function">isspace</span><span class="sh_symbol">(*</span>var<span class="sh_symbol">))</span> <span class="sh_cbracket">{</span></li><li>               var<span class="sh_symbol">++;</span></li><li>          <span class="sh_cbracket">}</span></li><li>          <span class="sh_keyword">if</span> <span class="sh_symbol">(</span>var <span class="sh_symbol">==</span> val <span class="sh_symbol"></span> <span class="sh_symbol">*</span>var <span class="sh_symbol">==</span> <span class="sh_string">'</span><span class="sh_specialchar">\0</span><span class="sh_string">'</span><span class="sh_symbol">)</span> <span class="sh_cbracket">{</span></li><li>               <span class="sh_keyword">goto</span> next_cookie<span class="sh_symbol">;</span></li><li>          <span class="sh_cbracket">}</span></li><li>     <span class="sh_cbracket">}</span></li><li> </li><li>     <span class="sh_keyword">if</span> <span class="sh_symbol">(</span>val<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span> <span class="sh_comment">/* have a value */</span></li><li>          <span class="sh_type">int</span> val_len<span class="sh_symbol">;</span></li><li>          <span class="sh_type">unsigned</span> <span class="sh_type">int</span> new_val_len<span class="sh_symbol">;</span></li><li> </li><li>          <span class="sh_symbol">*</span>val<span class="sh_symbol">++</span> <span class="sh_symbol">=</span> <span class="sh_string">'</span><span class="sh_specialchar">\0</span><span class="sh_string">'</span><span class="sh_symbol">;</span></li><li>          <span class="sh_function">php_url_decode</span><span class="sh_symbol">(</span>var<span class="sh_symbol">,</span> <span class="sh_function">strlen</span><span class="sh_symbol">(</span>var<span class="sh_symbol">));</span></li><li>          val_len <span class="sh_symbol">=</span> <span class="sh_function">php_url_decode</span><span class="sh_symbol">(</span>val<span class="sh_symbol">,</span> <span class="sh_function">strlen</span><span class="sh_symbol">(</span>val<span class="sh_symbol">));</span></li><li>          val <span class="sh_symbol">=</span> <span class="sh_function">estrndup</span><span class="sh_symbol">(</span>val<span class="sh_symbol">,</span> val_len<span class="sh_symbol">);</span></li><li>          <span class="sh_keyword">if</span> <span class="sh_symbol">(</span>sapi_module<span class="sh_symbol">.</span><span class="sh_function">input_filter</span><span class="sh_symbol">(</span>arg<span class="sh_symbol">,</span> var<span class="sh_symbol">,</span> <span class="sh_symbol">&</span>val<span class="sh_symbol">,</span> val_len<span class="sh_symbol">,</span> <span class="sh_symbol">&</span><span class="sh_usertype">new_val_len</span><span class="sh_normal"> </span>TSRMLS_CC<span class="sh_symbol">))</span> <span class="sh_cbracket">{</span></li><li>               <span class="sh_function">php_register_variable_safe</span><span class="sh_symbol">(</span>var<span class="sh_symbol">,</span> val<span class="sh_symbol">,</span> new_val_len<span class="sh_symbol">,</span> <span class="sh_usertype">array_ptr</span><span class="sh_normal"> </span>TSRMLS_CC<span class="sh_symbol">);</span></li><li>          <span class="sh_cbracket">}</span></li><li>          <span class="sh_function">efree</span><span class="sh_symbol">(</span>val<span class="sh_symbol">);</span></li><li>     <span class="sh_cbracket">}</span> <span class="sh_keyword">else</span> <span class="sh_cbracket">{</span></li></ol>
        Salin selepas log masuk

        首先, 通过php_strtok_r把res根据”&”分割成一个一个的”key=value”段, 接下来分别为var和val复制为key和value, 注意到这个过程中会分别对var和val做php_url_decode.

        最后通过php_register_variable_safe, 给array_ptr(此时指向PG(http_globals)[TRACK_VARS_GET], 也就是$_GET)添加一个名为var值为val的成员.

        到了这一步, 我们的$_GET数组中, 就包含了如下的成员:

        <ol><li><span class="sh_string">'name'</span> <span class="sh_symbol">=></span> <span class="sh_string">'laruence'</span><span class="sh_symbol">,</span></li><li><span class="sh_string">'career'</span> <span class="sh_symbol">=></span> <span class="sh_keyword">array</span><span class="sh_symbol">(</span></li><li>     <span class="sh_string">'yahoo'</span><span class="sh_symbol">,</span> <span class="sh_string">'baidu'</span><span class="sh_symbol">,</span></li></ol>
        Salin selepas log masuk

        未完待续(变量的销毁过程)…

        GET
        ['name'];

      我们知道, 在最后的执行期, $_GET数组必然包含如下片段:

      ___FCKpd___3
      Salin selepas log masuk
      Salin selepas log masuk
      Salin selepas log masuk

      那么, 我们今天就重点关注下, Query String是如何构建成_GET数组的(关于GET变量的生成, 请一并阅读我之前的文章: “PHP的GET/POST等大变量生成过程“):

      在请求到来时刻,php_request_startup(定义在main.c)被调用,来做初始化现场. 在这个过程中包括设置超时值,调用各个模块的请求初始化函数. 当然也包括我们关心的, 创建变量环境.

      php_hash_environment根据php.ini中的variables_order来依次初始化各个预定义大变量, 那么对于$_GET来说:

      ___FCKpd___4
      Salin selepas log masuk
      Salin selepas log masuk
      Salin selepas log masuk

      大体可以看出,这段逻辑,首先通过treat_data来生成变量hash(PG(http_globals)[TRACK_VARS_GET]), 如果打开了auto_register_globals,则再把$_GET数组中的变量加入到符号表中.

      treat_data是属于sapi_module_struct中的一个成员:

      ___FCKpd___5
      Salin selepas log masuk
      Salin selepas log masuk
      Salin selepas log masuk

      现在回过头来继续看treat_data(也就是php_default_treat_data):

      ___FCKpd___6
      Salin selepas log masuk
      Salin selepas log masuk
      Salin selepas log masuk

      在上面的逻辑中, 给res复制为query_string, SG(request_info)是一个代表了当前请求信息的结构体, 其中query_string是在php_apache_request_ctor中通过复制apache的reqeust_rec结构体中的args而来的.

      对于本文的例子来说, 此时res即为”name=laruence&career[]=yahoo&career[]=baidu”,

      继续在treat_data中, 随后的逻辑是:

      ___FCKpd___7
      Salin selepas log masuk
      Salin selepas log masuk
      Salin selepas log masuk

      首先, 通过php_strtok_r把res根据”&”分割成一个一个的”key=value”段, 接下来分别为var和val复制为key和value, 注意到这个过程中会分别对var和val做php_url_decode.

      最后通过php_register_variable_safe, 给array_ptr(此时指向PG(http_globals)[TRACK_VARS_GET], 也就是$_GET)添加一个名为var值为val的成员.

      到了这一步, 我们的$_GET数组中, 就包含了如下的成员:

      ___FCKpd___8
      Salin selepas log masuk
      Salin selepas log masuk
      Salin selepas log masuk

      未完待续(变量的销毁过程)…

      GET
      = array(
    2. 'name' => 'laruence',
    3. 'career' => array(
    4. 'yahoo', 'baidu',
    5. ),

    那么, 我们今天就重点关注下, Query String是如何构建成_GET数组的(关于GET变量的生成, 请一并阅读我之前的文章: “PHP的GET/POST等大变量生成过程“):

    在请求到来时刻,php_request_startup(定义在main.c)被调用,来做初始化现场. 在这个过程中包括设置超时值,调用各个模块的请求初始化函数. 当然也包括我们关心的, 创建变量环境.

    php_hash_environment根据php.ini中的variables_order来依次初始化各个预定义大变量, 那么对于$_GET来说:

    ___FCKpd___4
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    大体可以看出,这段逻辑,首先通过treat_data来生成变量hash(PG(http_globals)[TRACK_VARS_GET]), 如果打开了auto_register_globals,则再把$_GET数组中的变量加入到符号表中.

    treat_data是属于sapi_module_struct中的一个成员:

    ___FCKpd___5
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    现在回过头来继续看treat_data(也就是php_default_treat_data):

    ___FCKpd___6
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    在上面的逻辑中, 给res复制为query_string, SG(request_info)是一个代表了当前请求信息的结构体, 其中query_string是在php_apache_request_ctor中通过复制apache的reqeust_rec结构体中的args而来的.

    对于本文的例子来说, 此时res即为”name=laruence&career[]=yahoo&career[]=baidu”,

    继续在treat_data中, 随后的逻辑是:

    ___FCKpd___7
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    首先, 通过php_strtok_r把res根据”&”分割成一个一个的”key=value”段, 接下来分别为var和val复制为key和value, 注意到这个过程中会分别对var和val做php_url_decode.

    最后通过php_register_variable_safe, 给array_ptr(此时指向PG(http_globals)[TRACK_VARS_GET], 也就是$_GET)添加一个名为var值为val的成员.

    到了这一步, 我们的$_GET数组中, 就包含了如下的成员:

    ___FCKpd___8
    Salin selepas log masuk
    Salin selepas log masuk
    Salin selepas log masuk

    未完待续(变量的销毁过程)…

    GET
    ['name'];

我们知道, 在最后的执行期, $_GET数组必然包含如下片段:

___FCKpd___3
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

那么, 我们今天就重点关注下, Query String是如何构建成_GET数组的(关于GET变量的生成, 请一并阅读我之前的文章: “PHP的GET/POST等大变量生成过程“):

在请求到来时刻,php_request_startup(定义在main.c)被调用,来做初始化现场. 在这个过程中包括设置超时值,调用各个模块的请求初始化函数. 当然也包括我们关心的, 创建变量环境.

php_hash_environment根据php.ini中的variables_order来依次初始化各个预定义大变量, 那么对于$_GET来说:

___FCKpd___4
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

大体可以看出,这段逻辑,首先通过treat_data来生成变量hash(PG(http_globals)[TRACK_VARS_GET]), 如果打开了auto_register_globals,则再把$_GET数组中的变量加入到符号表中.

treat_data是属于sapi_module_struct中的一个成员:

___FCKpd___5
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

现在回过头来继续看treat_data(也就是php_default_treat_data):

___FCKpd___6
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

在上面的逻辑中, 给res复制为query_string, SG(request_info)是一个代表了当前请求信息的结构体, 其中query_string是在php_apache_request_ctor中通过复制apache的reqeust_rec结构体中的args而来的.

对于本文的例子来说, 此时res即为”name=laruence&career[]=yahoo&career[]=baidu”,

继续在treat_data中, 随后的逻辑是:

___FCKpd___7
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

首先, 通过php_strtok_r把res根据”&”分割成一个一个的”key=value”段, 接下来分别为var和val复制为key和value, 注意到这个过程中会分别对var和val做php_url_decode.

最后通过php_register_variable_safe, 给array_ptr(此时指向PG(http_globals)[TRACK_VARS_GET], 也就是$_GET)添加一个名为var值为val的成员.

到了这一步, 我们的$_GET数组中, 就包含了如下的成员:

___FCKpd___8
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

未完待续(变量的销毁过程)…



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1677
14
Tutorial PHP
1280
29
Tutorial C#
1257
24
Penggunaan PHP yang berterusan: Sebab -sebab ketahanannya Penggunaan PHP yang berterusan: Sebab -sebab ketahanannya Apr 19, 2025 am 12:23 AM

Apa yang masih popular adalah kemudahan penggunaan, fleksibiliti dan ekosistem yang kuat. 1) Kemudahan penggunaan dan sintaks mudah menjadikannya pilihan pertama untuk pemula. 2) Bersepadu dengan pembangunan web, interaksi yang sangat baik dengan permintaan HTTP dan pangkalan data. 3) Ekosistem yang besar menyediakan banyak alat dan perpustakaan. 4) Komuniti aktif dan Sumber Sumber Terbuka menyesuaikan mereka dengan keperluan baru dan trend teknologi.

Apa yang berlaku jika session_start () dipanggil beberapa kali? Apa yang berlaku jika session_start () dipanggil beberapa kali? Apr 25, 2025 am 12:06 AM

Pelbagai panggilan ke session_start () akan menghasilkan mesej amaran dan kemungkinan penggantian data. 1) PHP akan mengeluarkan amaran, menyebabkan sesi telah dimulakan. 2) Ia boleh menyebabkan penggantian data sesi yang tidak dijangka. 3) Gunakan session_status () untuk memeriksa status sesi untuk mengelakkan panggilan berulang.

Keserasian IIS dan PHP: menyelam yang mendalam Keserasian IIS dan PHP: menyelam yang mendalam Apr 22, 2025 am 12:01 AM

IIS dan PHP serasi dan dilaksanakan melalui FastCGI. 1.IIS meneruskan permintaan fail .php ke modul FastCGI melalui fail konfigurasi. 2. Modul FastCGI memulakan proses PHP untuk memproses permintaan untuk meningkatkan prestasi dan kestabilan. 3. Dalam aplikasi sebenar, anda perlu memberi perhatian kepada butiran konfigurasi, debugging ralat dan pengoptimuman prestasi.

Apakah kepentingan fungsi session_start ()? Apakah kepentingan fungsi session_start ()? May 03, 2025 am 12:18 AM

session_start () iscrucialinphpformanaginguserSessions.1) itinitiatesanewsessionifnoneexists, 2) resumeSanexistingsession, dan3) setSasessionCookieforcontinuityAcrossrequests, enableingApplicationeUseUshenticationandPersonalConizedConizedContentContentContentContentContentContentContentContentContentContentContentC.

Komposer: Membantu pembangunan PHP melalui AI Komposer: Membantu pembangunan PHP melalui AI Apr 29, 2025 am 12:27 AM

AI boleh membantu mengoptimumkan penggunaan komposer. Kaedah khusus termasuk: 1. Pengoptimuman Pengurusan Ketergantungan: AI menganalisis kebergantungan, mengesyorkan kombinasi versi terbaik, dan mengurangkan konflik. 2. Generasi Kod Automatik: AI menjana fail komposer.json yang sesuai dengan amalan terbaik. 3. Meningkatkan Kualiti Kod: AI mengesan masalah yang berpotensi, memberikan cadangan pengoptimuman, dan meningkatkan kualiti kod. Kaedah ini dilaksanakan melalui pembelajaran mesin dan teknologi pemprosesan bahasa semulajadi untuk membantu pemaju meningkatkan kecekapan dan kualiti kod.

Menggunakan Laravel: Menyelaraskan Pembangunan Web dengan PHP Menggunakan Laravel: Menyelaraskan Pembangunan Web dengan PHP Apr 19, 2025 am 12:18 AM

Laravel mengoptimumkan proses pembangunan web termasuk: 1. Gunakan sistem penghalaan untuk menguruskan struktur URL; 2. Gunakan enjin templat bilah untuk memudahkan pembangunan pandangan; 3. Mengendalikan tugas-tugas yang memakan masa melalui beratur; 4. Gunakan eloquentorm untuk memudahkan operasi pangkalan data; 5. Ikuti amalan terbaik untuk meningkatkan kualiti kod dan penyelenggaraan.

PHP dan IIS: Membuat mereka bekerjasama PHP dan IIS: Membuat mereka bekerjasama Apr 21, 2025 am 12:06 AM

Mengkonfigurasi dan menjalankan PHP pada IIS memerlukan langkah -langkah berikut: 1) Muat turun dan pasang PHP, 2) Mengkonfigurasi IIS dan menambah modul FastCGI, 3) Buat dan sediakan kolam aplikasi, 4) Buat laman web dan mengikat ke kolam aplikasi. Melalui langkah -langkah ini, anda boleh menggunakan aplikasi PHP dengan mudah pada pelayan Windows anda dan meningkatkan kestabilan aplikasi dan kecekapan dengan mengkonfigurasi skala dan mengoptimumkan prestasi.

Cara menggunakan fungsi MySQL untuk pemprosesan dan pengiraan data Cara menggunakan fungsi MySQL untuk pemprosesan dan pengiraan data Apr 29, 2025 pm 04:21 PM

Fungsi MySQL boleh digunakan untuk pemprosesan dan pengiraan data. 1. Penggunaan asas termasuk pemprosesan rentetan, pengiraan tarikh dan operasi matematik. 2. Penggunaan lanjutan melibatkan menggabungkan pelbagai fungsi untuk melaksanakan operasi kompleks. 3. Pengoptimuman prestasi memerlukan mengelakkan penggunaan fungsi dalam klausa WHERE dan menggunakan GroupBy dan jadual sementara.

See all articles