前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【PHP快速入门】详细笔记---精简版

【PHP快速入门】详细笔记---精简版

作者头像
20岁爱吃必胜客
发布2022-11-13 10:28:00
10.6K0
发布2022-11-13 10:28:00
举报
文章被收录于专栏:进步集

注:最后有面试挑战,看看自己掌握了吗

文章目录

🍃博主昵称:一拳必胜客 🌸博主寄语:欢迎点赞收藏关注哦,一起成为朋友一起成长; 特别鸣谢:木芯工作室 、Ivan from Russia


前言

很多人反馈上完大学的C语言课程、java课程不会写任何东西

如果你要创业,如果你要与互联网人沟通。未来互联网、移动互联网、信息化将会进一步围绕在你身边。你需要与人沟通,与人打交道。

还有机会进入BAT(百度、阿里、腾讯),BAT这些企业他们在用PHP。国内和国外超一线的互联网公司,在超过90%在使用PHP来做手机API或者是网站。连微信等开放平台中的公众号的服务端也可以使用到PHP

大并发,还能免费。一天1个亿的访问量怎么办?PHP拥有大量优秀的开发者,在一定数据量的情况下完全能满足你的需求。国内外一线的互联网公司,很多将自己的大并发方案进行开源了。你可以免费获得很多成熟的、免费的、开源的大并发解决方案

开源更加节约成本也更加安全。windows很多都要收取授权费用,而使用linux的LAMP架构或者LNMP架构会更加安全。全球的黑客在帮你找漏洞。全球的工程师在帮忙修复漏洞。你发现一个他人已经消灭10个。 PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。 用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快

通过cURL来做小偷程序

微信微博公众号、QQ公众号、地图和很多的第三方功能提供都是采用http 的API(应用程序)形式向开发人员提供的功能

如果只希望能够做些简单的微信公众号、QQ公众号等小应用,不想再深入学习PHP。学习到本章,你就可以完全掌握微信公众号服务端的的所需知识了。

如何请求微信、地图等第三方API呢?

这个时候就需要使用到——cURL。cURL中文翻译过来叫做基于URL的函数库。它的主要功能是:使用相关的函数模拟协议请求

例如:

模拟表单向某个地址发送数据无验证码的情况下模拟表单完成用户登陆 上传某个文件到远程服务器 请求远程服务器提供的某些功能 … …

curl支持dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, smtp, smtps, telnet和tftp协议。 curl同时也支持HTTPS认证、HTTP的POST、HTT的PPUT、FTP上传(这个也能通过PHP的FTP扩展完成)、HTTP基于表单的上传、代理、cookies和用户名+密码的认证。

我们在使用过程当中,如果没有cURL基础根本不知道如何开发微信公众号

实际工作中,在cURL使用最多的协议就就是http协议中的get和post请求。其他协议和请求方式用的相对较少。当然,在特定的应用中也有使用。

在开发前请保证你已开启cURL模块。开启办法与之前所讲的**《PHP图像处理》**这一章的开启办法一样,开启的模块名称叫:php_curl.dll

第一个网站

这句代码非常神奇,一句话能变成一个网页。是我们PHP入门的第一段代码。

现在你可以在网页服务器的根目录(D:\phpStudy\www)当中新建一个文件。文件的名字为:abc.php。

在这个abc.php文件中写入如下代码。

代码语言:javascript
复制
<?php

phpinfo();

?>
代码语言:javascript
复制
<?php
//这句话是说明从此处【尖括号、问号、PHP】这5个字符开始,往下的部份是PHP代码。
?>

phpinfo是一个函数(功能),这个函数(功能)会显示一个当前电脑(服务器)的详细的PHP信息。在后面会专门为大家讲解phpinfo()这个函数。这个函数必须要大家记住!

注意事项:

PHP还可以有简洁声明模式,我们在这个阶段以代码练习为主。关于环境配置问题,暂时不建议学习。在后面的章节中,我们会专门进行讲解。

我们在写文件abc.php这个文件命名的时候,只用英文半脚(a-zA-Z0-9_-)这些字符来命名文件。文件命名不要用中文,不要用特殊附号,不要中间加空格,严格区分大小

php中的变量

  1. 必须要以 $开始

2.变量的首字母不能以数字开始

3.变量的名字区分大小写

4.变量不要用特殊符号、中文,_不算特殊符号

5.变量命名要有意义(别写xxx,aaa,ccc这种 变量名)

echo 显示命令

代码语言:javascript
复制
<?php

$iphone = 6088;

echo $iphone;

?>
在这里插入图片描述
在这里插入图片描述

php注释

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<?php
/*

时间:20
功能:这是一个假的多行注释的例子
*/

/*
  声明一个爱情变量
  $love 是指爱情
  爱情是一个变量
  所以,爱情变量的值为250
*/
$love = 250;

?>

整型

整型分为:

代码语言:javascript
复制
1.10进制

2.8进制 (了解,基本不用)

3.16进制(了解,基本不用)
代码语言:javascript
复制
<?php
//为了方便大家记忆和前期学习,英文不好的朋友也可用拼音来声明变量。以后再用英文来声明变量也无所谓
//声明变量 整数,英文 int
//$int = 1000;
$zhengshu = 1000;
echo $zhengshu;
?>

8进制声明: 以0开始,后面跟0-7的整数(了解知识点)

代码语言:javascript
复制
<?php
//8进制的取值范围最大为0-7,即0,1,2,3,4,5,6,7

$bajingzhi =  033145;
echo $bajingzhi;

?>

16进制声明: 以0x开始,后面跟0-f的,0x的abcdef不区分大小写。(了解知识点)

布尔变量

没有变量成员的对象。

变量值为空NULL

例如:

代码语言:javascript
复制
$a= false;        //$a设置为假
$b=NULL:        //$b设置为null
$c=NULL;        //$c设置为null

除了上述情况以外,其余情况值将会被转换为true,一般来说,1为true,0为false。这些转换将在以后的判断语句中经常遇到。

字符串

在PHP语言中声明字符串有三种方式:

  1. 用单引号声明
  2. 用双引号声明
  3. 用字界符声明,需要输入非常大段的字符串时使用

1.单引号声明

代码语言:javascript
复制
<?php
//声明字符串变量$zhifu

$zhifu = '曾经有操蛋的爱情摆在我面前,我珍惜了。当我得到的时候才感到后悔莫及。如果非要在这段爱情前面加上一段三个字,我愿意说三个字:滚犊子';

//你可以放XAMPP指定的目录下,新建一个文件叫str.php。然后访问一下http://127.0.0.1/str.php试试。会不会显示这句话。

echo $zhifu;

?>

2.双引号声明字符串

代码语言:javascript
复制
<?php
//声明字符串变量$str
$str = "如果非要在滚犊子前面加上一个时间的话我愿意是马上。";

echo $str;
?>

3.字界符声明 1).在变量后面的等号写三个小于号(<<<)。 2).然后在<<<后面写上字符(建议英文大写字符)。如下例中的:ABC 3).然后换行写上任意想写的字符 4).写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。如下例中的:ABC;

代码语言:javascript
复制
<?php

$dingjie = <<<ABC
  如果
       非要在这个滚犊子
   前
       面<br />
      加上一段
   <i>距离的话</i>
   我想说:<h1>思想有多远,你就跟我滚多远</h1>
ABC;
?>

那双引号和单引号有什么区别呢?

【重要知识点】PHP 面试题中,高概率面试题(建议背诵并实验三遍以上)

  1. 双引号解析变量 ,但是单引号不解析变量
  2. 在双引号里面插入变量变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变 量后面接上特殊字符,例如空格等分开
  3. 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来
  4. 双引号解析转义字符,单引号不解析转义字符。但,*单引号能解析’ 和*
  5. 单引号效率高于双引号尽可能使用单引号
  6. **双号和单引号可以互插!!!**双引号当中插入单引号,单引号当中插入变量,这个变量会被解析
  7. 神奇的字符串拼接胶水——(.)点,用来拼接字符串
  8. 我们将定界符声明字符串视为双引号一样的功能来看待。

实验举例

  1. 双引号解析变量,但是单引号不解析变量
代码语言:javascript
复制
<?php
//声明变量$shouji
$shouji = '为了苹果手机去卖肾';
//在双引号中放$shouji 然后echo 一下是什么效果呢?
$str = "$shouji 会不会显示呢?";
//输入$str试试
echo $str;
?>

双引号需要解析变量因此双引号的效率没有单引号高。我们如果为了更高的效率,我们通常使用单引号。

  1. 双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。可以在后面接上特殊字符,例如空格等分开
代码语言:javascript
复制
<?php
$php = 'php中文网';

$str = "$phpaaaa";
//你会发现输出$str,什么都没有在页面中显示
echo $str;
?>

但是,我们在

str 声明的这个字符串中将

huaqiangu 后面接个空格再接aaaa,代码如下:

代码语言:javascript
复制
<?php
$php = 'php中文网';
//中间加了空格哟
$str = "$php aaaa";

echo $str;
?>

我们把代码再改改:

代码语言:javascript
复制
<?php
$php = 'php中文网';
//中间加了空格哟
$str = "$php!aaaa";

echo $str;
?>

大家打开一次页面,执行了一次代码看看结果是不是变为了:

代码语言:javascript
复制
php中文网!aaaa

因此,证明了我们的第二项观点。

  1. 如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。

那,如果我不想在后面有空格有,有特殊符号,就想直接显示变量$huaqiangu呢?——我们的解决办法是用大括号把变量包起来。代码如下:

代码语言:javascript
复制
<?php
$php = 'php中文网';
//中间加了空格哟
$str = "{$php}aaaa";

echo $str;
?>

于是,大家会发现花千骨后面没有了特殊符号,也没有空格了,达到了我们想要的显示结果

  1. 双引号解析转义字符,单引号不解析转义字符。但,单引号能解析’ 和\

第4个字符串的注意事项比较难以观察,转义字符有一些,但最常用的有:

代码语言:javascript
复制
\n 回车
\t 缩进

我们来通过实验先来理解\n和\t是什么。

代码语言:javascript
复制
<?php
//声明一个字符串,记住是双引号
$string = "每天来PHP中文网\n给梦想\t一个机会";
echo $string;
?>
  1. 转义字符\(反斜线的使用

如果我们声明一个变量beizi,我们想要在beizi声明的双引号中间加上一个双引号显示输出怎么办?

答:我们需要**将双引号原有的意义去掉。再双引号前面加上一个**(反斜线,计算机的专业名词叫转义字符),就可以了。

代码语言:javascript
复制
<?php

//要在$beizi的字符串中显示一个双引号怎么办?
$beizi = "多于绝大多数的人出生就是杯具,但是\"我们在不断的让人生变为喜剧";

echo $beizi;
?>

你可以再执行一下上面的代码,发现不再报错了。同理可推,单引号当中要插入一个单引号显示出来的时候,也可以在单引号声明的字符串中的单引号前面加上(反斜线,转义字符),将单引号的意义(限定字符区间)去掉。

代码语言:javascript
复制
<?php

//要在$beizi的字符串中显示一个双引号怎么办?
$shengyang = 'i\'m xiaoshengyang';

echo  $shengyang;
?>
  1. 双号和单引号**可以互插!!!**双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。

代码如下:

代码语言:javascript
复制
<?php

$legend = '猛虎';

$NoAlike = "心有'$legend',细嗅蔷薇";

echo $NoAlike;

?>
  1. 神奇的字符串拼接胶水——(.)点,用来拼接字符串
代码语言:javascript
复制
<?php
$php = 'PHP中文网';
//中间加了空格哟
$str = "{$php}aaaa";

echo $str;
?>

上面这段代码是,我们曾经说过双引号能够解析变量,有一个问题:

效率没有纯单引号的高

那么问题1:我想改为效率最高的方式应该怎么办?

问题2:我有多个字符串,要拼接在一声怎么办?

那,我们需要使用到神奇的胶水:(.)点,用来拼接字符串。

代码语言:javascript
复制
<?php

$shixi = '大学4年要好好学习<br />';

$buran = '不然连实习的机会都没有<br />';

$mimang = '把别人用来迷茫的时间拿到PHP中文网<br />';

$xuexi = '学习PHP<br />';

//我们可以把字符串全部拼接起来。
echo $shixi . $buran . $mimang . $xuexi;

?>

因此,刚刚的问题一的代码我们可以改为:

代码语言:javascript
复制
<?php
$php = 'PHP中文网';
//中间加了空格哟
$str = $php . 'aaaa';

echo $str;
?>
  1. 我们将定界符声明字符串视为双引号一样的功能来看待。
代码语言:javascript
复制
<?php

$weilai = '努力才有未来';
$mimang = '迷茫的原因是没有目标';

$dingjie = <<<ABC
  如果
           $weilai
       非要\t在这"个滚"犊子
   前
           '$mimang'
       面<br />
      加上\n一段
   <i>距离的话</i>
   我想说:<h1>思想有多远,你就跟我滚多远</h1>
ABC;

echo $dingjie;
?>

你可以执行发现weilai,mimang,\t\n都可以执行,双引号单引号都能显示。这就是定界符的特点。

再声明一次:字符串的声明每一项都必须记住,非常常用。并且面试题出现的概率非常高!

不可见字符:主要是计算机规定的一些特殊符号。例如:回车(\n)、缩进(\t)等

浮点型

普通声明浮点数

代码语言:javascript
复制
<?php
//声明变量fudian的值为12121.3132
$fudian = 12121.3132;
echo $fudian;
?>
<?php
//声明变量$fl 的值为0.8873
$fl = 0.8873;
var_dump($fl);
?>

echo 直接输出了12121.3132,而var_dump 输出了0.8873,还显示了变量$fl的类型为float。

var_dump() 是一个函数。向括号()中间插入变量。这个函数,会打印出来数据类型,还会对应显示变量的长度和值。

var 是指变量的英文 : variable float 读音:[floʊt] 中文解释:计算机中的浮点类型 variable 读音:[ˈveriəbl] 中文解释:变量 dump 读音:[dʌmp] 中文解释:倾倒; 倾销;

程序控制流

if else

代码语言:javascript
复制
<?php
//我们定义一个泡到美女的变量($pao)为true,意思为泡到了
$pao = true;

if($pao){
   echo '我愿意去死';
   echo '林志玲,我爱死你了。';
}else{
   echo '我不愿意去死';
   echo '凤姐,我肯定不会爱你的';
}
//if...else执行结束,后续代码
?>

NULL

【重点】知道null产生的三种情况,学习empty 和 isset两个函数的区别

主要有以下三空情况会产生空(null)类型

1.通过变量赋值明确指定为变量的值为NULL

2.一个变量没有给任何值

3.使用函数unset()将变量销毁掉

接下来我们来讲解两个跟null相关的函数,这两个函数非常常用,我们将级别定义为【默写级别】。

empty()可以向括号中间传入一个变量。这个变量的值如果为false或者为null的话,返回true

代码语言:javascript
复制
<?php

$apple = null;
if(empty($apple)){
    echo '执行了真区间,凤姐,我爱你';
}else{
   echo '行了假区间,你想凤姐了';
}
?>

上述实验证明,$apple为null。将apple放至empty中间。结果执行了真区间。

isset()可以向括号中间传入一个或者多个变量,变量与变量间用逗号分开。只要有有一个变量为null,则返回false。否则,则返回true。

代码语言:javascript
复制
<?php
//待会儿将变量$jia改为null再执行看看结果
$jia = false;

$result = isset($jia);

var_dump($result);

?>
<?php
$one = 10;
$two = false;
$three = 0;
$four = null;

$result = isset($one , $two , $three , $four);
//执行看看结果,是不是
var_dump($result);

?>

unset()这个函数的功能是毁掉变量。unset(变量)括号中间插入想要毁掉的变量名,这个变量就会被毁掉。

数组

本章重点:

知道数组是一个复合类型

数组的英文叫array,var_dump一个变量的时候看到的类型为array的,这个变量就是数组类型

会一个最简单、最基本的数组声明【默写】

接下来我们声明一个数组,了解数组里面可以插入多个值就行。

代码语言:javascript
复制
<?php
//定义$shu这个变量
//数组声明是向array里面插入一个或者多个值
//一个或者多个值用逗号分开
$shu = array(1,2,3);

?>

资源类型

资源类型很多初学者觉得比较难以理解。因为资源类型打印出来只能够看到一个英文的resource。其他的什么在电脑上都不能显示出来,而他有客观存在。

其实,资源类型很简单。我们针对词来进行说明。

电脑里面的资源是指: 1.word,excel等文件 2.有人收藏的美女图片和我们的自拍照片等图片 3.音乐 4.某些人爱看的AVI小电影 5.打开的网页 6.数据库 ... ...等等

我们打开一个图片,用PHP来操作它,我们就是操作的一个资源。 我们打开的数据库连接,我们需要连接数据库,数据库就是我们操作的资源。 包括网络连接,连接后发送邮件,我们也可以认为是一个资源

本章重点:理解资源就提操作我们可见和不可见的文件、网络和数据。我们在以后的章节中**,操作图片和网络的时候大家会有更为深刻的印象。**

代码语言:javascript
复制
<?php
//PHP操作图片需打开配置文件中 extension=php_gd2.dll
//==================================================生成图片
$imgname = "./test.png";
//根据给定路径图片名或 web 路径创建 png 图片模板对象,图片不存在会报错,需加 @
$im = @imagecreatefrompng ( $imgname );
//对应的创建jpg图片的方法为 imagecreatefromjpeg ,例
//$im = imagecreatefromjpeg("http://wx.qlogo.cn/mmopen/Q3auHgzwzM4fA6602v35iaPhicn4NerIoHhHIsM6uBFjDnbn6saxic3QJBibmibterqicNwiajic1ff8Y2sPhj1ictV0wMw/096");
if (! $im) {
 //=======================创建图片对象
 //如果指定图片不存在,则创建指定大小的空图片模板对象,宽800,高500
 $im = ImageCreate ( 800, 500 );
 //第二种创建图片方法
 $im = ImageCreateTrueColor(800, 500);
 
 //=======================创建颜色对象
 //依据一个模板对象,生成颜色对象,0为red值,100为green值,30为blue值
 //ImageCreate 创建的对象在此会直接将颜色填充至模板对象中,ImageCreateTrueColor 创建的对象则只创建颜色对象,不填充
 $bgc = ImageColorAllocate ( $im, 0, 100, 30 );
 $tc = ImageColorAllocate ( $im, 0, 0, 0 );
 
 //=======================填充颜色
 //为图片对象填充矩形颜色,如果空模板对象不填充颜色则为黑色
 //100,50对应矩形填充区域左上角的横纵坐标,150,200对应矩形右下角的横纵坐标
 //这里坐标对ImageCreate模板对象不起作用,全局填充,对ImageCreateTrueColor起作用。
 ImageFilledRectangle ($im, 100, 50, 150, 200, $bgc);
 //第二种填充方法200,100同样为左上角横纵坐标,但这里坐标对两种方法创建的模板对象都不起作用,完全填充
 ImageFill($im, 200, 100, $bgc);
 
 //=======================填充文字
 //在模板对象中添加文字两种方法
 //40字体粗度,50字体左边距距离,5字体上边距距离,$tc字体颜色,这种方式只能填充英语,填中文乱码
 ImageString ( $im, 40, 50, 5, "just is English code", $tc );
 //添加中文18为字体大小,0字体旋转程度,100左边距距离,200上边距距离,项目目录下要有"MSYH.TTF"这个字体文件
 imagettftext($im, 18, 0, 100, 200, $tc, "MSYH.TTF", "填充中文");
}



//==================================================合成图片
// 载入图象
$img1 = imagecreatefromjpeg("image1.jpg");
$img2 = imagecreatefromjpeg("064.jpg");

//方法一合成图象 ,将参数二合成到参数一中,500离主图片左边距,400离主图片上边距,0新合图片内右边距偏移量,10新合图片内下边距偏移量, 243合到参数一后所占位置宽,90合到参数一后所占位置高
//imagecopy($img1,$img2,500,400,0,10,243,90);
//得到原始大图片尺寸
$imgage = getimagesize("064.jpg");
$src_W = $imgage[0]; //获取原图片宽度
$src_H = $imgage[1]; //获取原图片高度
//方法二合成图象并改变大小,500,400,0,10,与imagecopy作用一致,200分别是缩小后宽,高,$src_W,$src_H原图宽,高
//imagecopyresampled($img1, $img2, 500,400,0,10, 200, 200, $src_W, $src_H);
//方法三,并且合透明图必须用此方法,别的合成方法合成后该透明的地方无法透明
//500,400,0,10, 243,90,与imagecopy作用一致,100表示参数二在参数一中透明程度,范围0~100,0完全透明,100完全不透明
imagecopymerge($img1, $img2, 500,400,0,10, 243,90, 100);



//==================================================合成圆角图片
//每次生成圆的四个角中一个角,中心透明,边角有色的图片,用于合成
function get_lt($halfWidth) {
 //根据圆形弧度创建一个正方形的图像
 $img = imagecreatetruecolor($halfWidth, $halfWidth);
 //图像的背景
 $bgcolor = imagecolorallocate($img, 223, 0, 0);
 //填充颜色
 imagefill($img, 0, 0, $bgcolor);
 //定义圆中心颜色
 $fgcolor = imagecolorallocate($img, 0, 0, 0);
 // $halfWidth,$halfWidth:以图像的右下角开始画弧
 // $halfWidth*2, $halfWidth*2:已宽度、高度画弧
 // 180, 270:指定了角度的起始和结束点
 // fgcolor:指定画弧内的颜色
 imagefilledarc($img, $halfWidth, $halfWidth, $halfWidth*2, $halfWidth*2, 180, 270, $fgcolor, IMG_ARC_PIE);
 //将图片中指定色设置为透明
 imagecolortransparent($img, $fgcolor);
 //变换角度
 // $img = imagerotate($img, 90, 0);
 // $img = imagerotate($img, 180, 0);
 // $img = imagerotate($img, 270, 0);
 // header('Content-Type: image/png');
 // imagepng($img);
 return $img;
}

$img1 = imagecreatefrompng("vote_2.png");
$img2 = imagecreatefromjpeg("064.jpg");
//获取图片尺寸
$imgSize = getimagesize("064.jpg");
$image_width = $imgSize[0];
$image_height = $imgSize[1];

//圆角长度,最好是图片宽,高的一半
$halfWidth = $image_width / 2;

//获取四分之一透明圆角
$lt_img = get_lt($halfWidth);

//改造$img2 左上角圆角透明
imagecopymerge($img2, $lt_img, 0, 0, 0, 0, $halfWidth, $halfWidth, 100);
//旋转图片
$lb_corner = imagerotate($lt_img, 90, 0);
//左下角
imagecopymerge($img2, $lb_corner, 0, $image_height - $halfWidth, 0, 0, $halfWidth, $halfWidth, 100);
//旋转图片
$rb_corner = imagerotate($lt_img, 180, 0);
//右上角
imagecopymerge($img2, $rb_corner, $image_width - $halfWidth, $image_height - $halfWidth, 0, 0, $halfWidth, $halfWidth, 100);
//旋转图片
$rt_corner = imagerotate($lt_img, 270, 0);
//右下角
imagecopymerge($img2, $rt_corner, $image_width - $halfWidth, 0, 0, 0, $halfWidth, $halfWidth, 100);

//生成红色
$red = imagecolorallocate($img2, 223, 0, 0);
//去除参数二中红色设成透明
imagecolortransparent($img2, $red);

imagecopymerge($img1, $img2, 117,37,0,0, 64, 64, 100);



//设定http输出格式
//header ( "Content-type: image/png" );
header("Content-type: image/jpeg");

//将二进制文件流输出到网页
//imagePng ( $im );
//如果是jpg二进制流用 imagejpeg 输出图象,并且后面加路径则直接生成保存图片,不再在页面输出
//如果已有图片则覆盖生成
//imagejpeg($img1, "new.jpg");
imagejpeg($img1);

//注销模板对象
ImageDestroy($im);
ImageDestroy($img1);
ImageDestroy($img2);
?>

查看判断数据类型

函数

我们可以写一个智能的功能(函数),它让有一个功能,就是打开一个装有学生成绩的电子表格。这个函数非常先进。

  1. 只有一个人的时候,就返回一个人的成绩,成绩是整型或者浮点型变量。
  2. 有2个或两个以上人的时候,返回一个数组类型变量,数组中装有多个人的成绩
  3. 如果没有人的时候,则返回布尔值的变量,变量值为false

通过上面的一个场景模拟,我们知道了,一个函数(功能)有可能返回不同的数据类型。因此,我们可以根据不同的类型来做不同的事情。

判断数据类型很重要,我们需要严格掌握。

【默写级知识点】显示类型的函数、得到类型的函数、判断类型的函数

查看数据类型

  1. gettype(传入一个变量) 能够获得变量的类型
  2. var_dump(传入一个变量) 输出变类型和值
代码语言:javascript
复制
<?php
  //声明一个变量88.8,你可以自己多做几次实验换成其他类型看看$type输出是多少
  $float = 88.8;
  $type = gettype($float);

  echo $type;

?>
<?php

//多换几个类型试试
$str = '你喜欢尊上还是喜欢杀仟陌?';

var_dump($str);
?>

判断数据类型

我们使用is_* 系列函数。 is_types这一系列的函数,来进行判断某个东西是不是某个类型。如果是这个类型返回真,不是这个类型返回假。

is_int 是否为整型 is_bool 是否为布尔 is_float 是否是浮点 is_string 是否是字符串 is_array是否是数组 is_object 是否是对象 is_null 是否为空 is_resource 是否为资源 is_scalar 是否为标量 is_numeric 是否为数值类型 is_callable 是否为函数

代码语言:javascript
复制
<?php
//is_* 系列函数有个特点,就是如果是这个类型就返回的是真。不是这个数据类型就返回的是假
//声明类型为假
$fo = false;

if(is_bool($fo)){
    echo '执行真区间';
}else{
    echo '执行假区间';
}


//检查未声明的变量$p是否为空,为空就执行真区间
if(is_null($p)){
    echo '执行真区间';
}else{
    echo '执行假区间';
}
echo "<br/>";

//字符串类型的数值,看看执行的是真还是假
$str = '18.8';
if(is_numeric($str)){
    echo '执行真区间';
}else{
    echo '执行假区间';
}
echo "<br/>";
//把sca的值换成整型、浮点、布尔和字符串试试
$sca = true;
//如果为标量,执行真区间
if(is_scalar($sca)){
    echo '执行真区间';
}else{
    echo '执行假区间';
}
echo "<br/>";
//换成echo,is_int试试,为什么echo执行假区间呢?
if(is_callable('var_dump')){
    echo '执行真区间';
}else{
    echo '执行假区间';
}

?>

注:is_types 很好记。is_ 在前后面跟类型即可。

变量:整型(int) 浮点(float)、布尔(bool)、字符串(string) 混合类型: 数组(array)、对象(object) 特殊类型:空(null)、 资源(resouce)、回调(callback)

为什么最后的实验中echo执行假区间呢? 答:因为echo 不是函数,是基本语法。大家眼前可以不用理解函数和基本语法的区别。了解和不了解在实际开发中没有影响。知道有这个知识点就行

自动转换和强制转换

PHP在PHP 5.x阶段都是完全的弱类型的编程语言。所谓弱类型,就是在声明变量的时候,不需要指定变量的类型。我要声明一个整型的变量,我不用在前面非得写上类型,再写变量。

PHP 7 的性能有很大的提高。实际测试的结果,PHP 7的性能与PHP5.6相比,提升了性能接近200%。在PHP 7 中有些地方,我们可以强制指定类型也可以不用强制指定类型来声明变量。

我们接来下来讲强制类型转换和自动类型转换两个部份。

【默写级别】布尔值的自动类型转换、强制类型转换的英文单词

布尔值的自动类型转换

自动类型转换,就是数据类型在某些情况下,自动会变为其他的类型参与运算。自动类型转换的发生时机是:运算和判断的时候某些值会自动进行转换。

下面的情况是布尔值判断时的自动类型转换:

1,整型的0为假,其他整型值全为真 2, 浮点的0.0,布尔值的假。小数点后只要有一个非零的数值即为真。 3,空字符串为假,只要里面有一个空格都算真。 4,字符串的0,也将其看作是假。其他的都为真 5,空数组也将其视为假,只要里面有一个值,就为真。 6,空也为假 7, 未声明成功的资源也为假

代码语言:javascript
复制
<?php
//布尔变整型参与运算
$fo = true;
$result = $fo + 10;
//$result 结果为整型的11,因为$fo布尔的true变为了1
//如果$fo的值为0
var_dump($result);
//字符串类型
$str = '419不要爱';
$result = $str + 1;
//结果为420。因为将$str变为了整型的419参与运算
//将419放在字符串中间和结尾试试
var_dump($result);
?>

强制类型转换

强制类型转换有三种方式:

1.用后面的三个函数可以完成类型转换,intval()、floatval()、strval()

2.变量前加上()里面写上类型,将它转换后赋值给其他变量

3.settype(变量,类型) 直接改变量本身

我们来进行实验: intval()、floatval()、strval()转换

代码语言:javascript
复制
<?php
    $float = 1.23;
    $result = intval($float);
    //看看结果是不是变了?
    var_dump($result);
    //鸭脖子为整型的5
    $yabozi = 5;
    $re = floatval($yabozi);
    var_dump($re);
    //定义整型的变量
    $yabozi = 23;
    $bian = strval($yabozi);
    //强制变成字符串试试
    var_dump($bian);
?>

变量前加上()里面写上类型,将它转换后赋值给其他变量

代码语言:javascript
复制
<?php
   //定义一个变量,我们来变化一下试试
   $transfer = 12.8;
   //把浮点变为整型
    $jieguo = (int)$transfer;
    var_dump($jieguo);
   //把浮点变为布尔
   $jieguo = (bool) $transfer;
   var_dump($jieguo);
   //把布尔变整型
   $bool = true;
   $jieguo = (int)$bool;
   var_dump($jieguo);
    //把浮点变数组
   $fo = 250;
   $jieguo = (array)$fo;
   var_dump($jieguo);
   //其他的操作方式,按照文字总结的规律你来试试
?>

settype(变量,类型) 直接改变量本身

代码语言:javascript
复制
<?php
    //定义浮点变为整型
    $fo = 250.18;
   //settype第二个参数是int,你实验的时候要记得第二个参数要为字符串类型
    settype($fo,'int');
    //输出看看结果
    var_dump($fo);
?>

对象

知道对象是一个复合类型 对象的英文叫object,var_dump一个变量的时候看到的类型为object的,这个变量就是对象类型 所谓复合类型:就是在一个类型中可以同时存入字符串、浮点、整型、布尔等

常量和变量

【重点知识】知识级别我们定义为:默写级

常量的使用范围非常广泛。我们在以后,定义我们的工作目录、定义一些特点的帐户密码、版本号等我们都会使用到常量。所以这一块的知识,非常重要。

常量在代码中的定义、书写方式:

define(常量名,常量值)

注:

代码语言:javascript
复制
1.常量值只能为上一章中我们讲到的标量。

2.常量名可以小写,但是通常大写

3.常量名可以不加引号,但是通常加上引号。

4.在字符串中调用常量的时候,必须在引号外面

5.常量名建议只用字母和下划线

我们用代码来实验一下:

1.定义和调用一次常量试试

代码语言:javascript
复制
<?php

define('MY_NAME','PHP中文网');

echo MY_NAME;
//下面是错误的调用方式
echo '我的名字是MY_NAME';
//正确的调用方式该这么写
echo '我的名字是' . MY_NAME;
?>
2.注意项目实验

<?php


//常量可以在外面不加引号
define(YH,'不要对未来迷茫,迷茫的时候静下心来coding');
echo YH;

//只能用标量,我在后面用了一个数组,大家学一下就行,会报错的哟
define('BIAO',array(1,2,3));

?>

此外,系统还为我们准备了一些内置的常量。这些常量都是规定好的。我们先熟悉几个,还有更多的系统常量我们学习完上册,入门后再慢慢的增加和学习。

代码语言:javascript
复制
常量名	说明
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的代码进行了加密

我们有两个文件:

1.一个文件中间有版本号,版本声明和授权声明文件名为version.php

2.一个文件中有具体的业务功能。例如:用户注册、登陆等,文件名为users.php

我们该怎么做呢?——也就是说不包含 version.php文件就不让,执行users.php之后的代码

我们来进行实验: version.php文件

代码语言:javascript
复制
<?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 ‘用户注册’;

可变变量

可变变量其实就是——已声明的变量前,再上变量符。

举例说明:

代码语言:javascript
复制
<?php
   //定义了一个变量叫作 $shu 将$shu这个变量的值设为字符串的biao
   $shu = 'biao';
   //定义了一个【变量】$biao。将他的值设置为鼠标
   $biao = '鼠标';

   //$$shu 就是可变变量:在已声明的变量$shu前又加上了一个变量符
   echo $$shu;
?>

上面的过程说明:

shu的值为字符串的'biao'。我在

shu前再加上一个$(美元符号),可以理解成为以下的变形过程:

代码语言:javascript
复制
$$shu
${$shu} 分成两块来看
${'biao'} 把变量$shu解释成了biao
$biao 而$biao也是一个变量对应的值是:鼠标

你可以自己写几个可变变量玩玩,请问以下的代码运行结果是多少?

代码语言:javascript
复制
<?php
$shu = 'biao';
$biao = 'wo';
$wo = 'test';
$test = 'sina';
$sina = 'zhongguo';
$zhongguo = 'china';
$china = '我爱你';
//别运行,自己去推理一下代码。也写几个可变变量玩玩吧!
echo $$$$$shu;
?>

外部变量

PHP的外部变量是PHP 在使用过程中规定好的一些变量。这个变量的规定是这样规定的,就这样使用。

get传值

我们先讲解几个最常用的例子,我们将下面的表单命名为user.html:

代码语言:javascript
复制
<html>
   <head>
   </head>

   <body>
       <form action="reg.php" method="get">
           <input type="text" name="username" />
           <input type="password" name="pwd" />
           <input type="submit" value="提交" />
       </form>
   </body>
</html>

上现是很基础的一段HTML代码,在这段代码的主要意思是把用户和密码,采用get方法,将数据发送给reg.php(在上面代码的第6行规定的)。reg.php想办法接收用户传过来的username和pwd这两个值

我们得出我们的第一个外部变量:_GET。 _GET 的主要作用是将得到get传值的数据。

我们写一个reg.php,用$_GET来接收值试试:

代码语言:javascript
复制
<?php
//$_GET后面加上中括号,将username作为字符串放在中括号里面,就得到了表单里面的<input type="text" name="username" /> 的值
$u = $_GET['username'];
echo $u.'<br />';

//$_GET['pwd'] 得到表单<input type="text" name="username" /> 的值
$passwd = $_GET['pwd'];
echo $passwd.'<br />';
?>

你可以输出值看一下结果。通过上面的实验我们知道了,通过$_GET这个外部变量,可以得到从表单输入的值。

在这里插入图片描述
在这里插入图片描述

reg.php后面跟了一个?(问号)

表单里面的username变在了地址栏里面

表单面username的值输入的是root,在username后面跟了个=(等号)输入的值

username(名字)=root(值) 后面的密码是password(名字)=123123(值),中间有&(and符)分开

post 传值

这个时候我们需要使用到post传值,post传值是在地址栏中不可见的。

同样上面例子的代码我们进行修改,html代码如下:

代码语言:javascript
复制
<html>
   <head>
   </head>

   <body>
       <!-- 这一行method 对应的值改为了post -->
       <form action="reg.php" method="post">
           <input type="text" name="username" />
           <input type="password" name="pwd" />
           <input type="submit" value="提交" />
       </form>
   </body>
</html>

PHP的代码里面的_GET全改为了_POST:

代码语言:javascript
复制
<?php
//$_POST后面加上中括号,将username作为字符串放在中括号里面,就得到了表单里面的<input type="text" name="username" /> 的值
$u = $_POST['username'];
echo $u.'<br />';

//$_POST['pwd'] 得到表单<input type="text" name="username" /> 的值
$passwd = $_POST['pwd'];
echo $passwd.'<br />';
?>

观察特点: reg.php后的?(问号)不见了。后面的username和password也不见了。那他怎么传递数据的呢?

他是通过我们看不见的浏览器的请求头文件传递的数据。所以在URL(网址)栏不可见。

注:附录中有如何通过火狐浏览器的firebug查看传递结果的演示过程。这一块都是HTTP协议规定的传送方式。

$_REQUEST接收数据

除此之外,我们还有**$_REQUEST来接收数据**。现在我们这样处理:

将php代码段中的_POST全改为_REQUEST,代码如下:

代码语言:javascript
复制
<?php
$u = $_REQUEST['username'];
echo $u.'<br />';

$passwd = $_REQUEST['pwd'];
echo $passwd.'<br />';
?>

把网页user.html里面的这一行中的method,改为get执行一次,再改为Post再运行一次,看看结果:

代码语言:javascript
复制
   <form action="reg.php" method="post">

通过上面的实验你会发现$_REQUEST即可以接收get传值也可以接收post传值

另外,我们总结一些外部变量,要求知识点的学习级别:了解含义,默写这个单词的写法和作用。

全局变量名 功能说明

代码语言:javascript
复制
$_COOKIE	得到会话控制中cookie传值
$_SESSION	得到会话控制中session的值
$_FILES	得到文件上传的结果
$_GET	得到get传值的结果
$_POST	得到post传值的结果
$_REQUEST	即能得到get的传值结果,也能得到Post传值的结果

请再记一句话:以上这些变量全是超全局的。(以后讲解超全局的含义)。

注:

1.我们认为从用户输入过来的所有数据都不是可信的。本书的下半部份会专门讲解限制和过滤

2.在提交数据的时候,我们常用的方法有get和post。可以这样理解,get传值在url中可见,而post传值在url中不可见。

而post传值在url中不可见,是通过浏览器的header头部份将数据发送给指定服务器的。需要通过专门的工具才能看到Post发送的值为什么。你可以下载火狐浏览器(firefox)的插件(firebug)来查看。

查看header头传递数据(网络,点击POST reg.php 选择Post),就看到了传递的名字和传递的数据值:

在这里插入图片描述
在这里插入图片描述

1.若真是使用get传密码,密码在地址栏里面显示过后。浏览器的历史记录会自动记录访问过的地址。恶意用户会,可以通过查看你的浏览器的历史记录,得到你曾经输入的密码。因此,不能使用get方式来作密码的传输方式。

环境变量

环境变量我们主要用的有_SERVER和_ENV两个环境变量

不过**,$_ENV逐渐被PHP的新版本给废弃**了。

【重点】知道在哪儿查看环境变量的名字(key)和值(value),记住并默写几个常用的环境变量。

查看环境变量,我们在学习PHP的第一天就学习过:

代码语言:javascript
复制
<?php

phpinfo();

?>

其实环境变量不是不用背的,我了解在哪儿能够找到环境变量的key(键)和值即可。 我们学了phpinfo();打印出来了一批乱乱的东西,我们今天来学习其中的环境变量部份

你在执行phpinfo();的这个网址中,将网页向下拉动翻页,看看能不能找到截图中的部份:

_SERVER[‘中间的值’]是需要我们了解意思的

如果我们需要显示我们当前访问的这个phpinfo();页面文件放在哪儿,就可以执行:

代码语言:javascript
复制
<?php
//我在上图左侧找到的一项,在前面加上了一个$(美元符),就显示出来了当前文件的路径
echo $_SERVER['SCRIPT_FILENAME'];

?>

我们来了解一些常用的环境变量的键名和值对应的意思:

代码语言:javascript
复制
键名	含义
$_SERVER["REQUEST_METHOD"]	请求当前PHP页面的方法
$_SERVER["REQUEST_URI"]	请求的URI
$_SERVER["SERVER_SOFTWARE"]	用的是哪一种服务器
$_SERVER["REMOTE_ADDR"]	客户的IP地址
$_SERVER["SERVER_ADDR"]	当前服务器的IP地址
$_SERVER["SCRIPT_FILENAME"]	主前请求文件的路径
$_SERVER["HTTP_USER_AGENT"]	当前访问这个网址的电脑和浏览器的情况
$_SERVER["HTTP_REFERER"]	上级来源(用户从哪个地址进入当前网页的)
$_SERVER["REQUEST_TIME"]	当前的时间

URI 和URL都是网址,但是URL带有了主机地址部份,而URI不带主机地址部份,例如: http://www.php.cn/abc.php?username=php 上面是一个URL(统一资源定位符),而URI是不带主机和(http://) 协议的部份: abc.php?username=php

变量引用

变量引用------C语言的指针

代码语言:javascript
复制
<?php

$fo = 5;
//注意,加上了一个&符哟
$bar = &$fo;

$bar = 6;
//$bar的结果为6
echo $bar.'<br />';
//$fo的结果为6
echo $fo.'<br />';

?>

两个结果都变成6了呢?

加上&(and 符后),把变量指向同一个存值空间

在这里插入图片描述
在这里插入图片描述

也就是不论 f o 或 fo或 fo或bar的值如何发生变化,fo变bar也变,bar发生变化,fo也会发生变化。

注:如果你理解、了解、熟悉C语言的指针。可自行用指针方式来理解,不在本文的讨论范围内。

等于与全等于

接下来的一个重点是演示,等于(==)和全等于也叫判断类型等于(===)。

我们来写一段代码,大家看看两段代码就是符号PHP学院,为什么结果有这么大的差距呢? 下面这段代码执行出来的结果,运行了真区间。

代码语言:javascript
复制
<?php
$x = 5;
$y = '5';
if($x == $y){
   echo '结果为真';
}else{
   echo '结果为假';
}
?>

下面这段代码执行出来的结果,运行了假区间。

代码语言:javascript
复制
<?php
$x = 5;
$y = '5';
if($x === $y){
   echo '结果为真';
}else{
   echo '结果为假';
}

?>

我们对比区别发现: 下面这段**代码是===(三个等号,**我们说他还有一个名字是判断类型等于)。

逻辑运算

那我们把这些逻辑关于进行了归纳和总结,下面表格中的:x为条件一,y 为条件二。进行说明: 逻辑与,中文解释为并且。可理解为,x 并且 y 都为真(true)的时候执行。 逻辑或,中文解释为或者。可以理解为,

x或者

y其中一个为真(true)的时候执行。 逻辑非,中文解释取反。如果$x的执为假(false),进行一次非操作。非假(false)就为真了,就可以执行真区间了。反推true,则执行假区间了。 逻辑异或,如果x和y相同则为false,不相同则为true。

逻辑与:

代码语言:javascript
复制
<?php

$x = true;
$y = false;
//逻辑与(并且),要求两个都为true才执行真区间,所以代码中执行假区间
if($x && $y){
   echo '执行了真区间';
}else{
   echo '执行了假区间';
}
?>

逻辑或:

代码语言:javascript
复制
<?php

$foo = false;
$bar = true;
//逻辑或,有一个为真则为真
if($foo || $bar){
   echo '执行真区间';
}else{
   echo '执行假区间';
}


?>

逻辑非:

代码语言:javascript
复制
<?php

$foo = false;

//逻辑非,把false变为了true
if(!$foo){
   echo '执行真区间';
}else{
   echo '执行假区间';
}

?>

短路

我们现在把自己想象成一个懒汉,非常非常懒。来思考逻辑与和逻辑或。可不可以这样理解: 逻辑与:如果前面第一个条件为false了后面就可以不用执行了。

用代码表示:if(x && x已经为false了,后面的y 就没有执行必要了。

逻辑或:前面第一个条件为true了,后面就不用执行了。

用代码表示:if($x ||

y) 如果

x已经为true了,后面的$y 就没有执行必要了。

我们写段代码来证明一下:

代码语言:javascript
复制
<?php

$x = false;
$y = 2;
if($x && $y++){
   echo '真';
}else{
   echo '假';
}
//结果还为2,说明没有执行$y++
echo $y;
?>

代码如下,将两个&符改为一个&符试试:

代码语言:javascript
复制
<?php

$x = false;
$y = 2;
if($x & $y++){
   echo '真';
}else{
   echo '假';
}
//再看看结果
echo $y;
?>

我们来看看短路的逻辑或:

代码语言:javascript
复制
<?php

$x = true;
$y = 2;
if($x || $y++){
   echo '真';
}else{
   echo '假';
}


//结果,因为$x已经为true了,肯定执行真区间没有必要执行$y++了
echo $y;
?>

改成一个 | 再看看执行结果

代码语言:javascript
复制
<?php

$x = true;
$y = 2;
if($x | $y++){
   echo '真';
}else{
   echo '假';
}
//自己运行对比结果
echo $y;
?>

通过上例我们知道了&&与&的区别,||和 |的区别。我们也了解了什么是短路。那我们在什么地方可以用到短路呢?有一些奇怪的写法,我们必须了清楚。其实就是基础语法的再应用。 回顾3.3.1最后一段内容:

代码语言:javascript
复制
<?php
//如果为defined('AUTH')存在AUTH常量则为true,不访问后面的exit了。如果为false则执行exit
defined('AUTH') or exit('存在安全因素不准访问');
?>

上面的一段代码就是典型的短路应用的代码

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
    • 通过cURL来做小偷程序
      • 如何请求微信、地图等第三方API呢?
  • 第一个网站
    • 注意事项:
    • php中的变量
    • echo 显示命令
    • php注释
      • 整型
        • 布尔变量
          • 字符串
            • 那双引号和单引号有什么区别呢?
              • 实验举例
            • 浮点型
            • 程序控制流
              • if else
                • NULL
                  • 数组
                  • 资源类型
                  • 查看判断数据类型
                    • 函数
                      • 查看数据类型
                      • 自动转换和强制转换
                        • 布尔值的自动类型转换
                          • 强制类型转换
                          • 对象
                          • 常量和变量
                            • defined()函数来做安全机制
                              • 可变变量
                              • 外部变量
                                • get传值
                                  • post 传值
                                    • $_REQUEST接收数据
                                      • 全局变量名 功能说明
                                        • 环境变量
                                        • 变量引用
                                        • 等于与全等于
                                        • 逻辑运算
                                          • 短路
                                          相关产品与服务
                                          验证码
                                          腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档