前端PHP入门-005-爱情是常量还是变量
常量
常——汉语字面为:长久,经久不变。
常量那就好翻译了:长久不变的值。
常——汉语字面为:长久,经久不变。
常量那就好翻译了:长久不变的值。
常量的使用范围非常广泛
。
我们在以后,定义我们的工作目录、定义一些特点的帐户密码、版本号等我们都会使用到常量。所以这一块的知识,非常重要。
常量在代码中的定义、书写方式:
define(常量名,常量值)
规则说明
常量值只能为上一章中我们讲到的标量
- 常量名可以小写,但是通常
大写
- 常量名可以不加引号,但是通常
加上引号
- 在字符串中调用常量的时候,
必须在引号外面
- 常量名建议只用
字母
和下划线
代码实验室
- 定义和调用一次常量试试
<?php
define('MY_NAME','码迷码迷吽');
//页面输出
echo MY_NAME;
//下面是错误的调用方式
echo '我的名字是MY_NAME';
//正确的调用方式该这么写
echo '我的名字是' . MY_NAME;
?>
- 注意项目实验
<?php
//其实可以小写,但是不好区分,所以我们规定通常大写
define('pangge',true);
echo pangge;
//常量可以在外面不加引号
define(PANG,'不要对未来迷茫,迷茫的时候静下心来coding');
echo PANG;
//---------------上面的代码建议忘记-------------------//
define('PANGSIR','coding很难,找个地方!');
echo PANGSIR;
//只能用标量 -- 去看看数据类型那章
//我在后面用了一个数组,大家学一下就行,会报错的哟
define('BIAO',array(1,2,3));
?>
系统常量
简单接触几个系统常量,内置的常量很重要
常量 | 说明 |
---|---|
LINE |
当前所在的行 |
FILE |
当前文件在服务器的路径 |
FUNCTIOIN |
当前函数名 |
CLASS |
当前类名 |
METHOD |
当前成员方法名 |
PHP_OS | PHP运行的操作系统 |
PHP_VERSION | 当前PHP的版本 |
TRAIT |
Trait 的名字,php5.4新加 |
DIR |
文件所在的目录 |
NAMESPACE |
当前命名空间的名称(区分大小写) |
defined()
函数来做安全机制
简单看,简单报,不用掌握
defined()我们来学习这种用法,主是是为了防止其他人绕过安全检查文件。
- 函数:defined(常量)
- 功能:向函数的括号后面传入常量,如果常量定义了就返回true,否则返回false
【情景模拟】假设,我们的这套在线电子商城的软件需要付钱,检查是否付费是通过对软件授权检查来完成的,而文件version.php中就有检查授权的功能,我们在软件中规定,没有授权检查文件version.php就不能使用这个软件。所有的代码都包含了version.php。并且为了防止有人盗版,我还可以把version.php的代码进行了加密
。
- 一个文件中间有版本号,版本声明和授权声明。文件名为version.php
- 一个文件中有具体的业务功能。例如:用户注册/登录等,文件名为users.php
我们该怎么做呢?——也就是说不包含 version.php文件就不让,执行users.php之后的代码。
version.php文件
<?php
//此处是检查是否是否授权的业务部份代码xxxx
define('AUTH',true);
//略过模拟代码xxx行,验证等等
?>
users.php文件
<?php
//尝试将include 'version.php'这一行代码注释后再执行看看,对比结果
include 'version.php';
if(!defined('AUTH')){
echo '非法!非法!你尝试跳过授权文件';
exit;
}
//模拟后面用户注册和用户登陆的代码xxx行
echo '用户注册';
?>
实验结果可知:version.php必须要包含 ,不然不会显示后面的echo '用户注册';
include 很重要
defined 很重要
# 可变变量
可变变量,这个词解释的太过于高大上,又叫作变量的变量。
可变变量其实就是——已声明的变量前,再上变量符
。
代码:
<?php
//定义了一个变量叫作 $pang 将$pang这个变量的值设为字符串的sir
$pang = 'sir';
//定义了一个【变量】$sir。将他的值设置为胖先生
$sir = '胖先生';
//$$pang 就是`可变变量`:在已声明的变量$pang前又加上了一个变量符
echo $$pang;
?>
代码解释
$$pang
${$pang} 分成两块来看
${'pang'} 把变量$pang解释成了sir
$sir 而$sir也是一个变量对应的值是:胖先生
猜一猜,(^__^) 嘻嘻……
<?php
$pang = 'sir';
$sir = 'wo';
$wo = 'big';
$big = 'love';
$love = 'wu';
$wu = 'di';
$di = '大爱无敌,请打赏';
//别运行,自己去推理一下代码。也写几个可变变量玩玩吧!
echo $$$$$pang;
?>
偷偷说一句: WEB前端的各位学生,看一看就行了!
外部变量
别问为什么?就像你为什么要吃饭的问题一样?
PHP的外部变量是PHP在使用过程中规定好
的一些变量。
这个变量的规定是这样规定的,就这样使用。
代码实验室
别问为什么?就像你为什么要吃饭的问题一样?
PHP的外部变量是PHP在使用过程中规定好
的一些变量。
这个变量的规定是这样规定的,就这样使用。
1.经典示例:注册 user.html
<html>
<head>
</head>
<body>
<form action="reg.php" method="get">
<input type="text" name="account" />
<input type="password" name="password" />
<input type="submit" value="提交数据" />
</form>
</body>
</html>
没有什么可说的:
在这段代码的主要意思是把用户和密码,采用get方法,将数据发送给reg.php(在上面代码的第6行规定的)。
reg.php想办法接收用户传过来的 account 和 password 这两个值
注:
1.注意地址栏的变化
2.表单想要传递数据,控件包含name属性
2.外部变量:$_GET
$_GET 的主要作用是将得到
get
传值的数据。
method='get' 这就是get请求
程序处理:reg.php
<?php
//$_GET后面加上中括号,将 account 作为字符串放在中括号里面,就得到了表单里面的<input type="text" name="account" /> 的值
$account = $_GET['account'];
echo $account.'<br />';//胶水
//$_GET['password'] 得到表单<input type="text" name="password" /> 的值
$password = $_GET['password'];
echo $password.'<br />';
?>
结果说明:
图文代码分析
- reg.php后面跟了一个?(问号)
- 表单里面的 account 变在了地址栏里面
- 表单面 account 的值输入的是 pangsir,在 account 后面跟了个=(等号)输入的值
account(名字)= pangsir(值) 后面的密码是 password(名字)=lovephp(值),中间有&(and符)分开
密码是可见的,那怎么样保证安全呢。让我在注册的过程当中,密码不在地址栏里面被人看到呢?
这个时候我们需要使用到post传值,post传值是在地址栏中不可见的
。
同样上面例子的代码我们进行修改,html代码如下:
<html>
<head>
</head>
<body>
<!-- 这一行method 对应的值改为了post -->
<form action="reg.php" method="post">
<input type="text" name="account" />
<input type="password" name="password" />
<input type="submit" value="提交" />
</form>
</body>
</html>
第二个外部变量: $_POST
<?php
$account = $_POST['account'];
echo '您的输入的账号为: '.$account.'<br />';
$password = $_POST['password'];
echo '请保管好你的密码: '.$password.'<br />';
?>
运行结果:
代码继续说:
- reg.php后的?(问号)不见了。后面的account和password也不见了。那他怎么传递数据的呢?
- 它是通过我们看不见的浏览器的请求头文件传递的数据。所以在URL(网址)栏不可见。
注
:附录中有如何通过火狐浏览器的firebug
查看传递结果的演示过程。这一块都是HTTP协议规定的传送方式。
除此之外,我们还有$_REQUEST来接收数据。现在我们这样处理:
将php代码段中的POST全改为" role="presentation" style="position: relative;">POST全改为POST全改为_REQUEST,代码如下:
第三个外部变量: $_REQUEST
<?php
$account = $_REQUEST['account'];
echo $account.'<br />';
$password = $_REQUEST['password'];
echo $password.'<br />';
?>
分别测试get和post请求,使用这种方式
通过上面的实验你会发现$_REQUEST即可以接收get传值也可以接收post传值。
邪恶了!大小通吃!
超全局外部变量
全局变量名 | 功能说明 |
---|---|
$_COOKIE |
得到会话控制中cookie传值 |
$_SESSION |
得到会话控制中session的值 |
$_FILES |
得到文件上传的结果 |
$_GET |
得到get传值的结果 |
$_POST |
得到post传值的结果 |
$_REQUEST |
即能得到get的传值结果,也能得到Post传值的结果 |
了解含义,以后讲解超全局的含义
变量引用
变量引用很多老师喜欢来用C语言的指针来去讲解。
我们作为有这么多年开发和教学经验的人来说——大多数学习PHP的人来说根本不了解C语言。
使用C语言一指针来讲解变量引用,我们觉得画蛇填足。并且,不利于没有C语基础的朋友们学习。
变量引用很多老师喜欢来用C语言的指针来去讲解。
我们作为有这么多年开发和教学经验的人来说——大多数学习PHP的人来说根本不了解C语言。
使用C语言一指针来讲解变量引用,我们觉得画蛇填足。并且,不利于没有C语基础的朋友们学习。
关于变量引用的知识点,请以我们的讲解为理解的基准:
我们来测试两端,方便我们的测试
第一段代码
<?php
$fo = 5;
//$fo的值为5,将5赋值
$bar = $fo;
//$bar的值原来为5,现在将值改为6
$bar = 6;
//$bar的结果为6
echo $bar.'<br />';
//$fo的结果为5
echo $fo.'<br />';
?>
第二段代码
<?php
$fo = 5;
//注意,加上了一个&符哟
$bar = &$fo;
$bar = 6;
//$bar的结果为6
echo $bar.'<br />';
//$fo的结果为6
echo $fo.'<br />';
?>
为什么两个结果都变成6了呢?
我经常跟大家这样来举例。我们可以这样来想象:一个变量名,对应了一个数据值
。
如下图:
而加上&
(and 符后),把变量指向同一个存值空间了,如下图:
也就是不论fo或" role="presentation" style="position: relative;">fo或fo或bar的值如何发生变化,fo变" role="presentation" style="position: relative;">fo变fo变bar也变,bar发生变化," role="presentation" style="position: relative;">bar发生变化,bar发生变化,fo也会发生变化。
前端PHP入门-005-爱情是常量还是变量的更多相关文章
- C语言入门(4)——常量、变量与赋值
对于基本数据类型量,按其取值是否可改变又分为常量和变量两种.在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量.它们可与数据类型结合起来分类. 常量 常量有字符常量(Character ...
- Java从入门到放弃——02.常量、变量、数据类型、运算符
本文目标 理解什么是常量,什么是变量 认识八大基本数据类型 了解算数运算符.赋值运算符.关系运算符.逻辑运算符.位运算符.三元运算符 1.什么是常量与变量? 常量是相对静止的量,比如整数:1,2,3 ...
- openresty 前端开发入门五之Mysql篇
openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户 操作mysql主要用到了lua-resty-my ...
- 每天成长一点---WEB前端学习入门笔记
WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...
- 使用 gulp 搭建前端环境入门篇(转载)
本文转载自: 使用 gulp 搭建前端环境入门篇
- Web前端小白入门指迷
前注:这篇文章首发于我自己创办的服务于校园的技术分享 [西邮 Upper -- 004]Web前端小白入门指迷,写得很用心也就发在这里. 大前端之旅 大前端有很多种,Shell 前端,客户端前端,Ap ...
- android 入门 005(登录记住)
android 入门 005(登录记住) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android ...
- Web前端JQuery入门实战案例
前端jquery入门到实战 为什么要学习Jquery?因为生活. 案例: <!DOCTYPE html> <html lang="zh-CN"> <h ...
- day01_前言、入门程序、常量、变量
day01_前言.入门程序.常量.变量 sysout :System.out.println(); Java 概述 本节主要内容: java 概述.常 DOS 命令.JRE.JDK 与 JVM.环境搭 ...
随机推荐
- 为phpStorm 配置PHP_CodeSniffer自动检查代码
通过composer 安装PHP_CodeSniffer : squizlabs/PHP_CodeSniffer gihub地址 composer global require "squiz ...
- 【转】SWFUpload使用指南
原文出自:http://www.runoob.com/w3cnote/swfupload-guide.html SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大.以前在 ...
- tensorflow之分类学习
写在前面的话 MNIST教程是tensorflow中文社区的第一课,例程即训练一个 手写数字识别 模型:http://www.tensorfly.cn/tfdoc/tutorials/mnist_be ...
- struts2--上传总结(限制大小和类型 非法上传的跳转)
网上有很多版本,鉴于实践出真知的态度 我自己探索了一番 struts版本:2.3.16 限制大小: struts2默认是2M 所以如果要扩大大小限制,应该先配一个全局struts2最大上限 <c ...
- KMP---POJ 3461 Oulipo
Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, without t ...
- lintcode-496-玩具工厂
496-玩具工厂 工厂模式是一种常见的设计模式.请实现一个玩具工厂 ToyFactory 用来产生不同的玩具类.可以假设只有猫和狗两种玩具. 您在真实的面试中是否遇到过这个题? Yes 样例 ToyF ...
- C++ auto_ptr智能指针的用法
C++中指针申请和释放内存通常采用的方式是new和delete.然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存.下面简单说一下用法. 用法一: std: ...
- Kotlint集合简单总结
1.数组操作 var testArray = Array<>("s","ss")或者 = arrayOf("s","s ...
- Halcon 笔记3 形态学
Halcon 三大数据类型: (1)图像 (2)区域 (3)XLD 查看时间工具 如果想让图像减少,则进行腐蚀(或者使用开运算),反之,则进行膨胀(或闭运算) 腐蚀后再进行膨胀,相当于进行开运算.因 ...
- IIS部署时未能加载程序集"System.Web.Http.WebHost"解决方法
问题如下 服务器没有安装MVC,下载以下dll覆盖到bin目录下,即可免安装运行程序. 下载地址:https://pan.baidu.com/s/1mhCo5mS