网络请求通信过程扩展(了解)
客户端 : 浏览器(Chorme, firefox, Edge) B
服务器 : 提供服务的一台无端主机
IP: 用来在网络当中定位一台绝对的主机电脑.(IPV4,IPV6)
LAN: 局域网
POPT: 端口号(在一台主机中,定义应用程序使用)
域名: 是IP地址的一种关系映射,方便记忆
DNS: 域名解析服务(本地: /etc/hosts, 202.106.0.20)
TCP/IP: 传输控制协议,用来发起网络请求
- 连接有三次握手
- 断开连接有四次挥手
HTTP: 超文本传输协议
- 请求报文
- 请求行
- 请求头
- 空行
- 请求体(POST)
- 响应报文
- 响应行
- 响应头
- 空行
- 响应体(实际请求数据)
Apache: Web服务器软件 (Tomcat, python, Ngix ), 用来接收客户端的请求.
MySQL: 数据库服务器, 存储数据
PHP: PHP程序解析器(处理PHP代码文件)
0. PHP 官方文档
https://www.php.net/manual/zh/index.php
1. PHP语句结束标记
PHP语句,都以 分号做为结束标记,如果没有分号,代码会报错.
2.常量
常量是指值不会发生变化的量。它具有全局性,能在整个脚本中贯穿使用。
如果常量值被定义,则该值在脚本执行期间都不能改变或取消定义。
- 注意:
- 常量名前面没有 $ 符号
- 常量习惯上以全大写方式命名
定义方式一
define(key,value);
定义方式二
使用const
关键字定义常量时,只能包含标量数据(bool、int、float 、string)。
可以将常量定义为一个表达式,也可以定义为一个 array。
还可以定义 resource 为常量,但应尽量避免,因为可能会造成不可预料的结果。const 常量名 = 值;
// define("PI",3.14);
// define('CARS', array("Benz","BMW","OOOO"));
const PI = 3.14;
const CARS = array("Benz","BMW","OOOO");
echo PI;
echo "<br>";
var_dump(CARS);
echo "<br>";
echo CARS[2];
获取系统中定义的所有常量
返回值为一个数组;get_defined_constants()
$cs = get_defined_constants();
foreach ($cs as $key => $value) {
echo $key." --> ".$value . "<br>";
}
判断是否定义某个常量
函数接收一个字符串类型的常量名,返回值为bool类型defined("常量名")
echo defined("PI");
echo defined("CARS");
echo defined("CARS1");
3. 预定义常量
PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了
注意: 下列括号中的内容表示该常量表示的数据类型,并不是参数
**PHP_VERSION**
(string)
当前 PHP 版本的字符串,”主版本号.子版本号.阶段版本号[扩展信息]”形式。**PHP_MAXPATHLEN**
(int)
当前 PHP 版本支持的最大文件名(包括路径)长度。**PHP_OS**
(string)运行 PHP 的操作系统。
**PHP_EOL**
(string)
当前平台中对于换行符的定义。**PHP_INT_MAX**
(int)
当前 PHP 版本支持的最大整型数字。在 32 位系统中通常为 int(2147483647),64 位系统中为 int(9223372036854775807)。**PHP_INT_MIN**
(int)
当前 PHP 版本支持的最小整型数字。在 32 位系统中通常为 int(-2147483648),64 系统中为 int(-9223372036854775808)。通常情况下 PHP_INT_MIN === ~PHP_INT_MAX。**PHP_INT_SIZE**
(int)
当前 PHP 版本的整数大小(以字节为单位)。
4 魔术常量
PHP中有九个魔术常量它们的值随着它们在代码中的位置改变而改变。
例如 **__LINE__**
的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下
**__LINE__** |
文件中的当前行号。 |
---|---|
**__FILE__** |
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。 |
**__DIR__** |
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__) 。除非是根目录,否则目录中名不包括末尾的斜杠。 |
**__FUNCTION__** |
当前函数的名称。匿名函数则为 {closure} 。 |
**__CLASS__** |
当前类的名称。类名包括其被声明的作用域(例如 Foo\\Bar )。当用在 trait 方法中时,CLASS 是调用 trait 方法的类的名字。 |
**__TRAIT__** |
Trait 的名字。Trait 名包括其被声明的作用域(例如 Foo\\Bar )。 |
**__METHOD__** |
类的方法名。 |
**__NAMESPACE__** |
当前命名空间的名称。 |
**ClassName::class** |
完整的类名。 |
echo "Warning: Division by zero in". __FILE__. " on line". __LINE__;
5. 输出
echo
输出一个或多个字符串,输出所有参数。不会换行。
echo 不是一个函数(它是一个语言结构), 因此你不一定要使用小括号来指明参数,单引号,双引号都可以,并且没有返回值。
echo (不像其他语言构造)不表现得像一个函数, 所以不能总是使用一个函数的上下文。
注意,如果你想给**echo**
传递多个参数, 那么就不能使用小括号。echo(string $arg1, string $... = ?): void
echo "HELLO";
echo "<br>";
// 多个字符串之间使用 逗号 分隔
echo "HELLO","PHP","WORLD";
echo "<br>";
// 如果有多个字符串输出,不能加小括号
// echo ("HELLO","PHP","WORLD");
print(了解)
Print 用来输出一个字符串, 也就是输出arg
。
print 实际上不是函数(而是语言结构),所以可以不用圆括号包围参数列表。
和echo
最主要的区别:print
仅支持一个参数,并总是返回 1。print(string $arg): int
print "<br>";
print "HELLO";
print "<br>";
// 多个字符串之间使用 逗号 分隔
// print "HELLO","PHP","WORLD";
print "<br>";
// . 是 php中的连接符,可以连接字符串,相当于js中的 +
print "HELLO"."PHP"."WORLD";
print_r()
print_r() 是一个函数,使用时,必须加 括号
print_r — 以易于理解的格式打印变量。如果输出内容是标量类型,那么直接输出值
mixed 等同于 联合类型 object|resource|array|string|int|float|bool|null。
$return 参数默认为 false, 表是只输出,返回数据, 如果改为 true, 则不会输出内容,而是将内容做为返回值返回.无意义.print_r(mixed $expression, bool $return = false): mixed
```php print_r(“HELLO”); echo “
“; // 默认输出时,直接将参数输出,返回值为1 $ret = print_r(“PHP”); echo “
“; echo $ret; echo “
“;
// 如果给定参数二 $return 的值为 true, 则不输出内容,将内容做为返回值返回
$ret = print_r(“PHP”, true);
echo “
“;
echo $ret;
echo “
“;
$animals = array(“cat”,”dog”,’bird’,’duck’,”pig”);
print_r($animals);
- var_dump() <br />打印变量的相关信息<br />var_dump() 也是一个函数,括号不能省略.<br />此函数显示关于一个或多个表达式的结构信息,包括表达式的**类型与值**。<br />数组和对象将递归展开值,通过缩进显示其结构。
```php
var_dump(mixed $value, mixed ...$values): void
var_dump("HELLO");
echo "<br>";
$s = "PHP";
var_dump($s);
echo "<br>";
$animals = array("cat","dog",'bird','duck',"pig");
var_dump($animals);