设为首页 收藏本站
查看: 594|回复: 0

[经验分享] [PHP知识点乱炖]四、全局变量——小偷从良记

[复制链接]

尚未签到

发表于 2015-8-27 13:05:28 | 显示全部楼层 |阅读模式
     本章要讲的是PHP的全局变量。
  这里讲个小故事:
  很多年前,一个很聪明的小偷,想去偷一户人家的钱。可是他偷不到主人的钥匙,怎么办呢?
  他想到了一个办法,去之前嚼了一块口香糖,口香糖的牌子是“大大泡泡糖”。
  这里我们来讲个泡泡糖的插曲。
   不知道大家小时候有没有吃过“大大泡泡糖”。绿箭一开始在中国面世的时候并不被老百姓接受,那时的人还没有嚼口香糖的习惯(如口气清新、时尚啥的完全没有概念),于是箭牌公司("大大"其实就是这个公司的产品)的老外在收购了一家糖果公司后推出了大大泡泡糖。
  这里老外发现,那时的中国要想推一种食品,外观和感官体验很重要,口味倒是其次的。譬如绿箭,就是用来咀嚼的,老外发现当时的中国人吃口香糖是为了好玩。于是,大大泡泡糖在中国推广时一炮打响,因为除了水果口味好吃,还很好玩,大家还能一起吃,看看谁的泡泡大,起到了娱乐性效果(比大小一直是国人娱乐的重要途径)。
   小偷的方法很特别:把大大泡泡糖嚼后趁其软状塞入锁孔,十分钟冷却后再拉出,于是钥匙的形状搞定了。(为何需要用大大泡泡糖的原因是这种泡泡糖冷却后不粘手)。
  正式剧情开始了
  1、 小偷用配来的钥匙如愿以偿偷到了这户人家的东西,这户主人竟然是贪官,家里还有金条
  2、 本想再偷隔壁一家,在继续用泡泡糖塞入锁孔时发现用刚才那把钥匙依然能开旁边人家的锁。
  3、 接连开了该楼层其他几户,发现都能开。后来小偷明白了,这个贪官买了这一个楼层所有住户,用的是同一款门锁
  4、 于是小偷的这把钥匙几乎成了“万能钥匙”。
  
  故事先讲到这,我们来看段代码:



<?php
//解释一下,我们把$str 这个变量当做 钥匙,请看以下分解
$str="主人的钥匙";
function steal()  //steal 是”偷”的英文
{
if($str!="")
echo "偷到钱了";
else
echo "毛也没偷到";
}
steal();
?>

  
   大家运行一下会发现,输入的结果是:毛也没偷到
   这是为什么呢?
   上面不是定义了$str是"主人的钥匙"了吗?为啥还是啥都偷不到?
  原因如下:
   因为主人的钥匙藏在了他身上,作为小偷也要有点节操,要偷必须得自己配一把。
   于是上述代码要这么改:



<?php
$str="主人的钥匙"
$str_copey=$str;//小偷用口香糖塞了进去,复制了一把钥匙,和主人的钥匙是一模一样的。于是接下来大干一场吧
function steal() //steal 是”偷”的英文
{
global $str_copey;//使用了口香糖钥匙
if($str_copey!="")
echo "偷到钱了";
else
echo "毛也没偷到";
}
steal();
?>

  结果已经很明显了:很顺利的偷到了钱
  PHP知识点讲解:
  1、global 关键字即是申明全局变量的关键字。
  2、虽然在steal的过程中有一个变量也叫str,但是这个str并非外面的str,它只能作用于steal这个函数体内。也就是说小偷如果用自己家门的钥匙是打不开别人家的门的
  3、复制过后的钥匙很好用。
   如果大家懂了全局变量,那么上面的代码只要这么写即可:



<?php
$str="主人的钥匙"
function steal()  //steal 是”偷”的英文
{
global $ str; //全局变量
if($str!="")
echo "偷到钱了";
else
echo "毛也没偷到";
}
steal();
?>

   故事继续:
  这个小偷利用大大泡泡糖的方式偷了好多家,时间久了,他越来越出名,连很多开锁公司都请教他到底如何才能仿制人家的钥匙。
   小偷很聪明,他从来不把如何用泡泡糖塞入锁芯变成模具最后能复制一把钥匙的方法告诉任何人。于是其他同行小偷只能每次要偷钱时来请这位小偷来配钥匙,这个小偷后来索性不做小偷了,做起来配钥匙正规行当,也开了一个开锁公司。
   于是,一个小偷从良的故事被传为了"佳话"。
  故事结束(以上故事纯属虚构,如有雷同,不胜荣幸),我们再来看段代码
   首先,建立一个文件,叫做makkey.php,代码如下:



<?php
$str="主人的钥匙";
$str_copey=$str;  //大大泡泡糖配置钥匙的方式可是很复杂的哦
?>

  
  然后,再建立一个文件,就叫做stealmoney.php
   代码如下:



<?php
include("makkey.php");
function steal()  //steal 是”偷”的英文
{
global $str_copey; //使用了小偷公司专门研发的口香糖复制钥匙
if($str_copey!="")
echo "偷到钱了";
else
echo "毛也没偷到";
}
steal();
?>

  输出结果?一定能偷到钱。
  
  这里有两个知识点:
  1、写出好的程序要学会把类库和业务逻辑封装成可复用的方法库。
  上面的include("makkey.php");就是封装, 假如$str_copey=$str;是一个很复杂的过程,那么我们必须学会如何封装这么一个方法库,让其他程序员可以继续复用你的成果
  大家这下应该知道为何要封装了吧。
  2、使用include方式,global 依然有效
  
  
  额外小知识:
   如果大家在做wordpress二次开发,想自定义一些页面,除了使用wp自带的函数还能自己做一些底层级别的数据调用。代码如下:



<?php
require(dirname(__FILE__) .'/wp-blog-header.php' );
//上面就是wordpress基本的函数库封装
global $wpdb; //这个是wordpess 数据库操作的基本对象
$result=$wpdb->get_results(“select * fromwp_posts);
var_export($result);
?>

  
  大家动手试一下吧,其实还有很多功能,此处不表。你会发现wordpress之所以这么优秀,是因为其二次开发的便捷性、高效性、灵活性确实很强
  学会写程序—>写出好程序——>封装方法库——>方便你我他.
  一个好的程序架构就是这么开端的。
  补充:
  大家可能还会学到$GLOBALS,这个叫超全局变量。请大家自行搜索。不讲这个知识是因为不怎么推荐使用。意义不大,如果要用何必用PHP?
  本章总结:
  任何知识都来源于生活,技术也不例外,不断疯狂学习技术的最终目的是:改善家人的生活质量、提升自己的生活品质,这才叫“技术改变世界"——微观角度。
  ------------------------------------
  关注我的微信公众号,每天成熟一点点
关注步骤:
  很直接的拿出手机->打开微信->点扫一扫,扫下面二维码即可
DSC0000.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-105058-1-1.html 上篇帖子: 【PHP】调试工具xdebug的配置说明 下篇帖子: 彻底杜绝PHP的session cookie错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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