1.2. 下单页面,处理页面
持之以恒,方得始终!
下单页面#
在 /Desktop/code/ 下新建一个 bob_car_shop 目录,新建一个 orderform.html 文件,内容如下
<form action="processorder.php" method="post">
<table border="0">
<tr bgcolor="#cccccc">
<td width="150">Item</td>
<td width="15">Quantity</td>
</tr>
<tr>
<td>Tires</td>
<td align="center"><input type="text" name="tireqty" size="3" maxlength="3"></td>
</tr>
<tr>
<td>Oil</td>
<td align="center"><input type="text" name="oilqty" size="3" maxlength="3"></td>
</tr>
<tr>
<td>Spark Plugs</td>
<td align="center"><input type="text" name="sparkqty" size="3" maxlength="3"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Submit Order"></td>
</tr>
</table>
</form>
下单页面中中,跟后端有关系的几个点:#
- form 中的 action ,是表单提交后,哪个 php 脚本处理。
- form 中的 method,是设置提交的方式,可以 get,post。
- input 中的 name,是后端获取数据的名称。存放在超级全局变量
$_GET, $_POST, $_REQUEST
中。
处理页面#
创建文件 code/bob_car_shop/processorder.php
<?php
// 接收下单物品的数量
$tireqty = $_POST['tireqty'];
$oilqty = $_POST['oilqty'];
$sparkqty= $_POST['sparkqty'];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>下单处理脚本</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<h2>Order Results</h2>
<?php
echo "<p>Order processed at " . date('Y-m-d H:i:s') . "</p>";
echo "<p>Your order is as follows:</p>";
echo "$tireqty tires<br>";
echo $oilqty . ' bottles of oil<br>';
echo $sparkqty . ' spark plugs<br>';
?>
</body>
</html>
上面的 php 脚本中,我们使用了变量接收了下单的数量,然后打印出来。
我们可以 cd 进 code/bob_car_shop/ 下,运行 php -S 127.0.0.1:8080,在浏览器中访问测试一下结果。
处理脚本中跟 php 相关的知识#
使用变量#
声明一个变量时,即向内存申请了空间,来存放数据,变量名称则是与值形成映射关系(其实就是指针),一般强类型语言,比如 c,c++,java,go,声明变量时,需要设定好变量的可存放的数据类型。php 则可以直接赋值,值是什么类型,变量就是什么类型。
$tireqty = $_POST['tireqty'];
比如上面的这段代码,就是初始化了一个变量,其值是获取超级全局变量中的值。
超级全局变量#
他们是系统内置的,具体值是根据环境而定,有如下这些
$_GET
$_POST
$_FILES
$_COOKIE
$_REQUEST
$_SESSION
$_SERVER
$GLOBALS
$_ENV
调用函数#
调用函数时,会单独开辟一个内存空间供其运行,结束后,其中的变量等资源会被销毁,返回值到函数调用处。
如果函数没用给其一个 return,则其默认返回值为 null
字符串拼接符 .#
比如下面,可以避免写多个 echo
echo $tireqty . "tires <br/>";
当然我们也可以借助于,php 的双引号可以解析变量来处理
echo "$tireqty tires <br/>";
使用时,其实怎么方便就怎么来。
变量的命名规则#
同样也适用于函数,类,类的方法,类的属性等
- 名称以数字,字母,下划线组成。
- 不能以数字开头。
- 区分大小写。
- 同一个脚本中,同一个命名空间下,不要重复。包括变量,函数,类名,之间都不要使用重复的名称。
php 支持的数据类型#
四种标量
integer
float/double
string
boolean
两种复杂
array 可以看作集合
object 类的实例
两种特殊
null
resource
类型转换#
$totalqty = 0;
$totalamount = (float) $totalqty; // 取出$totalqty的值,将其转为浮点型,并赋值给$totalamount,$totalqty 还是 int 类型的。
其实 php 中还有隐式转换,比如 10 + '123abc'
, 字符串会被转为数值,if(1)
, 1 被转换为 true
可变变量#
$varname = 'tireqty';
$$varname = 5; // 等价于 $tireqty = 5;
测试如下:
使用常量#
常量其实和变量是一样的作用,也是包含一个值,当然有区别,
- 常量的设定
define("DEV", 'test')
, 字母一般是全大写; - 常量的使用,不加 $ , 直接用,
echo DEV
; - 常量一旦被设定,在脚本其它地方,就不应该再被改变,并且常量是全局,局部都可以访问到。这两个才是常量的重点,否则常量也没啥太大的价值。一般多用于配置文件中,比如数据库配置,项目配置。
- 常量只能存标量类型数据,先盲猜一下,估计跟内存空间有关。
变量有系统内置的,常量当然也有,比如 __FILE__, __DIR__, PHP_VERSION
, 我们可以查手册。
变量的作用域#
- php 内置的超级全局变量,哪儿都可访问。
- 脚本中的变量,全局可访问,局部不行。
- 常量,全局,局部都可以访问。
- 函数内的变量,局部可见。
- 函数内要想使用全局变量,可以用 $GLOBALS [‘varname’], 或者 global $varname 。关键是要和外部的全局变量名称保持一致。
- 在函数中的静态变量,函数外不可访问,但是关键点在于,它可以在函数的多次执行中,保留值。正常情况下,函数执行完毕,里面申请的资源会被销毁,静态变量则是个例外,跟其内存空间有关。
其实,从更深层思考,访问关系,还是跟内存空间有关,比如函数中的变量,本身函数执行时,就是单独开辟的内存空间,执行完毕,资源被释放,外部当然不能访问到,除非我们手动把其变为全局的。
还有内置的变量,常量,他们为啥哪儿都能访问,因为 php 执行脚本之前,就已经先把其加载到了共享内存空间中。
如有任何侵权行为,请通知我删除,谢谢大家!
个人邮箱:865460609@qq.com
推荐文章: