仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 934|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网页设计PHP教程:PHP编程中的变量保存周期

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:43:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:   </p> 关于PHP的中的数据来历, 不过乎有俩种:
  1. 1. 来自代码中
复制代码
关于代码中的变量(也就是直接量)来讲, 变量分派/赋值在编译期, 活泼在履行器, 在恳求封闭期被烧毁.关于这些变量来讲, 利用APC停止Opcode缓存, 则会缓存这局部变量的值.
而关于来自内部的变量, 变量分派/赋值在编译器后, 履行期前, 在恳求封闭期被烧毁,关于这些变量来讲, 利用APC停止OpCode缓存, 是不会被缓存的.
明天就侧重存眷下内部变量的一个局部,GET来的数据的全部性命周期.
假定, 有以下恳求到来:
复制代码
而, 在index.php中:
  1. [list=1]
  2. [*]<?php
  3. [*]     $name      = 关于PHP的中的数据来历, 不过乎有俩种:
  4. [code]1. 来自代码中
复制代码
关于代码中的变量(也就是直接量)来讲, 变量分派/赋值在编译期, 活泼在履行器, 在恳求封闭期被烧毁.关于这些变量来讲, 利用APC停止Opcode缓存, 则会缓存这局部变量的值.
而关于来自内部的变量, 变量分派/赋值在编译器后, 履行期前, 在恳求封闭期被烧毁,关于这些变量来讲, 利用APC停止OpCode缓存, 是不会被缓存的.
明天就侧重存眷下内部变量的一个局部,GET来的数据的全部性命周期.
假定, 有以下恳求到来:
复制代码
而, 在index.php中:
  1. ___FCKpd___2
复制代码
咱们晓得, 在最初的履行期, $_GET数组必定包括以下片断:
  1. [list=1]
  2. [*]     关于PHP的中的数据来历, 不过乎有俩种:
  3. [code]1. 来自代码中
复制代码
关于代码中的变量(也就是直接量)来讲, 变量分派/赋值在编译期, 活泼在履行器, 在恳求封闭期被烧毁.关于这些变量来讲, 利用APC停止Opcode缓存, 则会缓存这局部变量的值.
而关于来自内部的变量, 变量分派/赋值在编译器后, 履行期前, 在恳求封闭期被烧毁,关于这些变量来讲, 利用APC停止OpCode缓存, 是不会被缓存的.
明天就侧重存眷下内部变量的一个局部,GET来的数据的全部性命周期.
假定, 有以下恳求到来:
复制代码
而, 在index.php中:
  1. [list=1]
  2. [*]<?php
  3. [*]     $name      = 关于PHP的中的数据来历, 不过乎有俩种:
  4. [code]1. 来自代码中
复制代码
关于代码中的变量(也就是直接量)来讲, 变量分派/赋值在编译期, 活泼在履行器, 在恳求封闭期被烧毁.关于这些变量来讲, 利用APC停止Opcode缓存, 则会缓存这局部变量的值.
而关于来自内部的变量, 变量分派/赋值在编译器后, 履行期前, 在恳求封闭期被烧毁,关于这些变量来讲, 利用APC停止OpCode缓存, 是不会被缓存的.
明天就侧重存眷下内部变量的一个局部,GET来的数据的全部性命周期.
假定, 有以下恳求到来:
复制代码
而, 在index.php中:
  1. ___FCKpd___2
复制代码
咱们晓得, 在最初的履行期, $_GET数组必定包括以下片断:
  1. 0
复制代码
那末, 咱们明天就重点存眷下, Query String是若何构建成_GET数组的(关于GET变量的生成, 请一并浏览我之前的文章: “PHP的GET/POST等大变量生成进程“):
在恳求到来时辰,php_request_startup(界说在main.c)被挪用,来做初始化现场. 在这个过程当中包含设置超时价,挪用各个模块的恳求初始化函数. 固然也包含咱们关怀的, 创立变量情况.
php_hash_environment依据php.ini中的variables_order来顺次初始化各个预界说大变量, 那末关于$_GET来讲:
  1. 1
复制代码
大体可以看出,这段逻辑,起首经由过程treat_data来生成变量hash(PG(http_globals)[TRACK_VARS_GET]), 假如翻开了auto_register_globals,则再把$_GET数组中的变量到场到符号表中.
treat_data是属于sapi_module_struct中的一个成员:
  1. 2
复制代码
如今回过火来持续看treat_data(也就是php_default_treat_data):
  1. 3
复制代码
在下面的逻辑中, 给res复制为query_string, SG(request_info)是一个代表了以后恳求信息的布局体, 个中query_string是在php_apache_request_ctor中经由过程复制apache的reqeust_rec布局体中的args而来的.
关于本文的例子来讲, 此时res即为”name=laruence&career[]=yahoo&career[]=百度”,
持续在treat_data中, 随后的逻辑是:
  1. 4
复制代码
起首, 经由过程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数组中, 就包括了以下的成员:
  1. 5
复制代码
未完待续(变量的烧毁进程)…

GET['name'];
[/code] 咱们晓得, 在最初的履行期, $_GET数组必定包括以下片断:
  1. 0
复制代码
那末, 咱们明天就重点存眷下, Query String是若何构建成_GET数组的(关于GET变量的生成, 请一并浏览我之前的文章: “PHP的GET/POST等大变量生成进程“):
在恳求到来时辰,php_request_startup(界说在main.c)被挪用,来做初始化现场. 在这个过程当中包含设置超时价,挪用各个模块的恳求初始化函数. 固然也包含咱们关怀的, 创立变量情况.
php_hash_environment依据php.ini中的variables_order来顺次初始化各个预界说大变量, 那末关于$_GET来讲:
  1. 7
复制代码
大体可以看出,这段逻辑,起首经由过程treat_data来生成变量hash(PG(http_globals)[TRACK_VARS_GET]), 假如翻开了auto_register_globals,则再把$_GET数组中的变量到场到符号表中.
treat_data是属于sapi_module_struct中的一个成员:
  1. 8
复制代码
如今回过火来持续看treat_data(也就是php_default_treat_data):
  1. 9
复制代码
在下面的逻辑中, 给res复制为query_string, SG(request_info)是一个代表了以后恳求信息的布局体, 个中query_string是在php_apache_request_ctor中经由过程复制apache的reqeust_rec布局体中的args而来的.
关于本文的例子来讲, 此时res即为”name=laruence&career[]=yahoo&career[]=百度”,
持续在treat_data中, 随后的逻辑是:
  1. <?php     $name      = 关于
    PHP的中的数据来历
    , 不过
    乎有俩种: 1. 来自代码中0
复制代码
起首, 经由过程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数组中, 就包括了以下的成员:
  1. <?php     $name      = 关于
    PHP的中的数据来历
    , 不过
    乎有俩种: 1. 来自代码中1
复制代码
未完待续(变量的烧毁进程)…

GET = array(
  •           'name' => 'laruence',
  •           'career' => array(
  •                'yahoo', '百度',
  •           ),
    [/code] 那末, 咱们明天就重点存眷下, Query String是若何构建成_GET数组的(关于GET变量的生成, 请一并浏览我之前的文章: “PHP的GET/POST等大变量生成进程“):
    在恳求到来时辰,php_request_startup(界说在main.c)被挪用,来做初始化现场. 在这个过程当中包含设置超时价,挪用各个模块的恳求初始化函数. 固然也包含咱们关怀的, 创立变量情况.
    php_hash_environment依据php.ini中的variables_order来顺次初始化各个预界说大变量, 那末关于$_GET来讲:
    1. 7
    复制代码
    大体可以看出,这段逻辑,起首经由过程treat_data来生成变量hash(PG(http_globals)[TRACK_VARS_GET]), 假如翻开了auto_register_globals,则再把$_GET数组中的变量到场到符号表中.
    treat_data是属于sapi_module_struct中的一个成员:
    1. 8
    复制代码
    如今回过火来持续看treat_data(也就是php_default_treat_data):
    1. 9
    复制代码
    在下面的逻辑中, 给res复制为query_string, SG(request_info)是一个代表了以后恳求信息的布局体, 个中query_string是在php_apache_request_ctor中经由过程复制apache的reqeust_rec布局体中的args而来的.
    关于本文的例子来讲, 此时res即为”name=laruence&career[]=yahoo&career[]=百度”,
    持续在treat_data中, 随后的逻辑是:
    1. <?php     $name      = 关于
      PHP的中的数据来历
      , 不过
      乎有俩种: 1. 来自代码中0
    复制代码
    起首, 经由过程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数组中, 就包括了以下的成员:
    1. <?php     $name      = 关于
      PHP的中的数据来历
      , 不过
      乎有俩种: 1. 来自代码中1
    复制代码
    未完待续(变量的烧毁进程)…

    GET['name'];
    [/code] 咱们晓得, 在最初的履行期, $_GET数组必定包括以下片断:
    1. 0
    复制代码
    那末, 咱们明天就重点存眷下, Query String是若何构建成_GET数组的(关于GET变量的生成, 请一并浏览我之前的文章: “PHP的GET/POST等大变量生成进程“):
    在恳求到来时辰,php_request_startup(界说在main.c)被挪用,来做初始化现场. 在这个过程当中包含设置超时价,挪用各个模块的恳求初始化函数. 固然也包含咱们关怀的, 创立变量情况.
    php_hash_environment依据php.ini中的variables_order来顺次初始化各个预界说大变量, 那末关于$_GET来讲:
    1. 7
    复制代码
    大体可以看出,这段逻辑,起首经由过程treat_data来生成变量hash(PG(http_globals)[TRACK_VARS_GET]), 假如翻开了auto_register_globals,则再把$_GET数组中的变量到场到符号表中.
    treat_data是属于sapi_module_struct中的一个成员:
    1. 8
    复制代码
    如今回过火来持续看treat_data(也就是php_default_treat_data):
    1. 9
    复制代码
    在下面的逻辑中, 给res复制为query_string, SG(request_info)是一个代表了以后恳求信息的布局体, 个中query_string是在php_apache_request_ctor中经由过程复制apache的reqeust_rec布局体中的args而来的.
    关于本文的例子来讲, 此时res即为”name=laruence&career[]=yahoo&career[]=百度”,
    持续在treat_data中, 随后的逻辑是:
    1. <?php     $name      = 关于
      PHP的中的数据来历
      , 不过
      乎有俩种: 1. 来自代码中0
    复制代码
    起首, 经由过程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数组中, 就包括了以下的成员:
    1. <?php     $name      = 关于
      PHP的中的数据来历
      , 不过
      乎有俩种: 1. 来自代码中1
    复制代码
    未完待续(变量的烧毁进程)…

    熟悉了PHP和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_-
  • 简单生活 该用户已被删除
    沙发
    发表于 2015-2-4 06:13:36 | 只看该作者
    ,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
    只想知道 该用户已被删除
    板凳
    发表于 2015-2-9 01:13:36 | 只看该作者
    刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
    不帅 该用户已被删除
    地板
    发表于 2015-2-12 05:59:54 | 只看该作者
    对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
    山那边是海 该用户已被删除
    5#
    发表于 2015-2-12 15:10:39 | 只看该作者
    对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
    谁可相欹 该用户已被删除
    6#
    发表于 2015-3-2 18:01:17 | 只看该作者
    学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
    莫相离 该用户已被删除
    7#
    发表于 2015-3-7 04:18:41 | 只看该作者
    真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
    灵魂腐蚀 该用户已被删除
    8#
    发表于 2015-3-11 11:01:58 | 只看该作者
    个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
    分手快乐 该用户已被删除
    9#
    发表于 2015-3-12 22:21:57 | 只看该作者
    php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
    小魔女 该用户已被删除
    10#
    发表于 2015-3-13 00:07:16 | 只看该作者
    要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
    愤怒的大鸟 该用户已被删除
    11#
    发表于 2015-3-20 04:50:44 | 只看该作者
    如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
    爱飞 该用户已被删除
    12#
    发表于 2015-3-27 13:11:14 | 只看该作者
    我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
    透明 该用户已被删除
    13#
    发表于 2015-3-27 23:11:29 | 只看该作者
    建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
    老尸 该用户已被删除
    14#
    发表于 2015-4-4 00:49:41 | 只看该作者
    实践是检验自己会不会的真理。
    活着的死人 该用户已被删除
    15#
     楼主| 发表于 2015-4-9 07:51:18 | 只看该作者
    真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
    蒙在股里 该用户已被删除
    16#
    发表于 2015-4-13 16:29:14 | 只看该作者
    建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
    飘飘悠悠 该用户已被删除
    17#
    发表于 2015-4-16 08:11:52 | 只看该作者
    其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
    精灵巫婆 该用户已被删除
    18#
    发表于 2015-4-22 02:43:21 | 只看该作者
    php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
    深爱那片海 该用户已被删除
    19#
    发表于 2015-6-8 07:29:36 | 只看该作者
    刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

    GMT+8, 2024-12-24 01:01

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表