本章要讲的是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?
本章总结:
任何知识都来源于生活,技术也不例外,不断疯狂学习技术的最终目的是:改善家人的生活质量、提升自己的生活品质,这才叫“技术改变世界"——微观角度。
------------------------------------
关注我的微信公众号,每天成熟一点点
关注步骤:
很直接的拿出手机->打开微信->点扫一扫,扫下面二维码即可
[PHP知识点乱炖]四、全局变量——小偷从良记的更多相关文章
-
js知识点乱炖
修改属性 元素.style.样式=值 document.getElementById('box').style.width='200px'; 属性操作方式 1.. 的 元素.属性名如果属性是单 ...
-
HTM CSS 笔记乱炖
一.常用实体(字符转义) '<' == '<' '©' == '©' '>' == '>' '"' == '"' ' ' == ' ' '®' == '®' ...
-
[独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL
本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...
-
Anliven - 乱炖
001 --- Ping Yourself! 由TCP/IP协议栈而想到的: 你的"协议分层"是如何的?有谁或者什么事务所对应着?谁先谁后,什么重要? 你的"协议栈&qu ...
-
IO知识点整理(四种基类的使用)
一:介绍 1.两种基类 字节流 InputStream,OutputStream 字符流 Reader,Writer 二:字符流的基本方法(文字的处理比较常见) 1.Writer的API 2.File ...
-
Android群英传知识点回顾——第四章:ListView常用优化技巧
4.1 ListView常用优化技巧 4.1.1 使用ViewHolder模式提高效率 4.1.2 设置项目间分割线 4.1.3 隐藏ListView的滚动条 4.1.4 取消ListView的Ite ...
-
oc语言学习之基础知识点介绍(四):方法的重写、多态以及self、super的介绍
一.方法重写 /* 重写:当子类继承了父类的方法时,如果觉得父类的方法不适合,那么可以对这个方法进行重新实现,那么这个就重写. 注意:也就是说,一定只能发生在父类和子类关系中. 然后是子类重新实现父类 ...
-
c语言学习之基础知识点介绍(四):算术运算符和逗号表达式
本节主要介绍c语言中运算符. 运算符主要分为四类: 1.算术运算符 加(+),减(-),乘(*),除(/),取余(%,两数相除,得到余数) 2.关系运算符 3.逻辑运算符 4.换位运算符 下面将依次介 ...
-
CSS3知识点整理(四)----布局样式及其他
包括CSS3多列布局样式.Flexbox伸缩布局.盒子模型等.重点介绍了Flexbox伸缩布局的各种属性用法. 一.多列布局 为了能在Web页面中方便实现类似报纸.杂志那种多列排版的布局,W3C特意给 ...
随机推荐
-
Mybatis学习错误之:重复加载mapper.xml
学习mybatis的时候,突然遇到测试出错.测试mapper代理失败,现在钻研少了,不喜欢看未知的错误了,立即改正.错误打印说mapper.xml已经注册,仔细查看SQLMapConfig.xml发现 ...
-
mysql小误区关于set global sql_slave_skip_counter=N命令
背景知识1: 在主从库维护中,有时候需要跳过某个无法执行的命令,需要在slave处于stop状态下,执行 set global sql_slave_skip_counter=N以跳过命令. ...
-
开篇ASP.NET MVC 权限管理系列
开篇 [快乐编程系列之ASP.NET MVC 权限管理系列]一.开篇 用了好长一段时间的ASP.NET MVC,感觉MVC真的是很好用,最近一年左右做了两个中小型项目,觉得还是很多地方不是很熟悉的 ...
-
codeforces 651C Watchmen
Watchmen are in a danger and Doctor Manhattan together with his friend Daniel Dreiberg should warn t ...
-
windows8.1全角与半角切换快捷键
windows8.1全角与半角切换快捷键: shift + 空格
-
echarts x轴名称太长
echarts x轴名称太长了,隐藏一部分,鼠标移到名称上,显示全称 function extension(mychart, type) { let extension = document.getE ...
-
python控制台输出颜色
python_控制台输出带颜色的文字方法在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中.而一般的应用服务器,第三方库,甚至服务器的一些通告也 ...
-
python爬虫----基本操作
一.爬虫基本操作 有些网站和其他网站是有关系(链接),全球的网站就相当于一个蜘蛛网,我们放一只蜘蛛在上面爬,一定能够把网爬个遍.那么如果我们要爬取互联网上内容我们就相当于放一只蜘蛛在上面. 爬虫分为 ...
-
windows下安装storm1.1.0并启动
64位windows安装storm前需要先搞定zookeeper和python,所以下面我们3步走: 一.zookeeper 1.上https://zookeeper.apache.org/点击下方d ...
-
小问题总结:鼠标点击到输入框(input)里的时候,输入框的提示消失,鼠标再移开,输入框提示出现
问题如标题: 鼠标点击到输入框(input)里的时候,输入框的提示消失,鼠标再移开,输入框提示出现.如图所示: 做法如下: <input type="text" name ...