1+X Web前端等级考证 | PHP 技术与应用(中级重点)-程序员宅基地

技术标签: php  

动态网站

概念

  • 误区:不是指网站当中包含动态图片、滚动图等动态效果
  • 正解:采用数据库技术开发的网站,网页上的内容都是通过数据库提取出来动
    态更新的

B/S 软件

  • 通过浏览器和服务器(Browser / Server)进行通信的软件,客户端给服务器发请
    求,服务器处理客户请求返回结果
  • 优势:不用下载,不用更新,打开网页,直接使用
  • 劣势:功能受限(受浏览器环境限制)

使用技术

  • 前端:html+css+javascript
  • 后端:php、asp、java
  • 数据库:MySQL、SQLServer、ORACLE、DB2

动态网站开发所需构件

web 前端开发

  • HTML
  • CSS
  • javascript
  • 浏览器

Web后端开发 (服务器端)

  • web服务器:Apache、IIS、Tomcat…
  • 数据库:MySQL、MariaDB、Oracle、SQL Server…
  • 服务器端编程语言:PHP、ASP、JSP…

PHP技术基础

PHP(原名 Personal Home Page的缩写,已经正式更名为 “PHP: HypertextPreprocessor”,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了 C 语言、Java和 Perl 的特点,利于学习,使用广泛,主要适用于Web 开发领域。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创的语法。用 PHP 做出的动态页面与其他的编程语言相比,PHP 是将程序嵌入到 HTML文档中,执行效率很高

php 的诞生

1994年 Rasmus Lerdorf 设计了 PHP 的第一个版本 PHP1.0,并于 1995年将其通过社区发布。1996年又设计了 PHP2,1998年,由于 Zeev Suraski 和 Andi Gutmans 当时正在做毕业设计,需要一个用于开发 Web 程序的语言,他们也考虑了 asp 和jsp,但由于 ASP 只能运行在 Windows 平台,而 JSP 又过于复杂,因此,他们最后选择了 PHP,但他们发现,PHP 的功能当时还十分有限,因此,他们决定为 PHP重新编写底层的解析程序,这就是 PHP 的第一个被广泛使用的版本----PHP3.0。

php 的优点
  • 简单易学
    既能面向过程,又能面向对象,安装后各种扩展集一身,包括但不限于mysql、json、mbstr 等,方便至极。html 和 PHP 混写,执行效率很高,最新版本都内置了小型 webserver(连 apache都不用)。
  • 日臻完善
    语言创建者积极上进优化。各大 php 论坛非常活跃。
  • 框架成熟
    框架层出不穷,国外 Ci、laravel、kohana、zf,国内 thinkphp 功能完善,敏捷开发就靠它!!
  • 使用广泛
    最重要的是大小公司都用,全球前 100 万的站点中,有 70%左右的站点用PHP 开发!!!!

任何一门编程语言,有优点就有缺点

php 的缺点
  • 标准库的函数名、参数顺序实在是难以预测
    例如:字符串操作系列函数,strpos、strcspn 里两个词素没有任何分隔符,到了 strreplace 、 strrepeat 却又冒出了下划线
  • 协调性和可靠性
    例如:变量名是大小写敏感的,函数名和类名却是大小写不敏感的
  • 奇异的写法
    例如:数组末尾添加一个元素, $arr[] = 1
  • PHP 的异常捕获系 统非常异常
    很难说清楚到底哪些情况会抛出异常哪些并不会

开发环境

要想使用这门语言,需要搭配相应的开发环境,主要包括:

  • Apache web 服务器
  • MySQL 数据库
  • PHP 语言引擎
    可以一个一个安装配置 ,但是对于新手来说,繁琐麻烦,可以使用集成的开发环境: 例如WAMP,XAmmp,phpstudy等,安装非常简单

运行原理:

  • get 请求: 从服务器上获取数据
  • post 请求: 向服务器提交数据

php 语言基础

文件命名

  • 文件后缀名为 php
  • 文件名中不可包含中文、空格、特殊符号
  • 建议使用有意义的英文单词命名

语言标记

//标准格式
<?php
....
?>

*注意:纯 php 脚本文件要求:

  1. 开始标签要在第一行顶头写
  2. 删除结束标签。*

php标签之外是 html 语言环境,在纯 php代码环境下,这些 html 字符(包括看不
见的空格或者回车,制表符号)也会一同输出,引发意外错误。因此,在编码规范
中规定:库文件、class 类文件等只要是纯 php代码的文件,要删除结尾的 ?> 结束
标签。

注释符与结束符

<?php
// 单行注释
/* 多行注释 */
// 结束符使用英文分号 “;”
?>

常用命令和系统函数

  • echo
    echo输出 : 只能输出字符串、数字、布尔(true:1 false:空)类型的数据
    在这里插入图片描述
  • var_dump()
    此函数显示一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展
    开值,通过缩进显示其结构
    注意: var_dump中的变量必须是存在的,如果变量存在但值是空,则返回 false ;
    没有变量时,则返回 NULL 该函数有输出的功能,因此不必加其它的输出函数
  • require 与 include
  1. require
    常用于引入 重要 文件,若引入失败会直接影响到当前整个脚本,引入失败报 Error错误
  2. include
    常用于引入 普通 文件,若引入失败不会对当前脚本有较大的影响,引入失败报Warning错误
  3. require_once
    避免重复引入,其他规则同 require
  4. include_once
    避免重复引入,其他规则同 include
  • header
    用于定义 HTTP 协议头信息。

变量与常量

常量
  • 声明变量:$
  • 命名规则:字母数字下划线、首字母不能为数字、严格区分大小写、且不能使用关键字!推荐驼峰命名法
  • 变量销毁:unset(变量名),被销毁的变量在内存中被释放
  • 引用变量: 用 & 符号引用
    -
变量

使用 define关键字定义常量,常量命名要全部大写,常量的数据类型不能是 资
源、对象
在这里插入图片描述

变量与常量的差异
差异 变量 常量
定义 $声明 define()函数定义
命名 大小写敏感 必须大写(行业规范)
赋值 可以重新赋值 不能再赋值
数据类型 8种数据类型 只能是标量
销毁 unset() 销毁 不能销毁
判断方法 isset() 判断是否定义 defined() 判断是否定义
作用域 局部作用域 全局作用域

数据类型

八种数据类型

  • 四种标量类型
    • 布尔型(boolean)
    • 整 型(integer)范围:2^32 或 2^64(超出自动转换为浮点型)
    • 浮点型(float)范围:双精度
    • 字符串(string)
  • 两种复合类型
    • 数组型(array)
    • 对象型(object)
  • 两种特殊类型
    • 资源型(resource)
    • 空 型(null)

不同进制
在这里插入图片描述
对象型
具有一定功能和特征的单个事物,对象是属性和方法的集合资源型
变量可以是文件夹、一个文件、从数据库中得到的结果集等,操作这个变量,相当于操作这些资源。

NULL 型
null 也是数据,通常表示一种状态,变量没有任何值,就用 null 表示。以下情况会得到 null:
• 直接将一个变量赋值为 null
• 将一个变量销毁后再次使用该变量
• 直接使用一个不存在的变量

数据类型转换

自动类型转换: 在特殊运算时,会有自动类型转换的情况

自动转换为: false 自动转换为:true 自动转换为:int 自动转换为: string
整型: 0 非 0整数 true : 1 true : “1”
浮点: 0.0或 0.00 非 0浮点数 false : 0 false : " "
字符串: " " 或 “0” 非空字符串 null: 0 null: " "
数组:空数组 非空数组
null 对象
未知变量(或被销毁变量)

强制类型转换

  • 改变原变量类型
    使用 settype() 函数可以将一个指定变量强制转换为另一种指定类型
  • 不改变原变量类型
    格式:新变量 = (指定变量类型) 原变量;
// 强制类型转换:不改变原变量类型
// 定义一个存储变量
$num = 1;
$newNum; // 用于接收转换之后的变量
// 开始转换
$newNum  = (Boolean) $num ; //true
$newNum  = (Integer) $num; //1
$newNum = (Float) $num;  //float 1
$newNum = (String) $num; //"1"
$newNum = (Array) $num; //Array
$newNum = (Object) $num; //Object

常用变量检测函数

函数 说明
gettype() 判断变量类型:
返回 boolean、integer、double( float 返回“double”)、string、array、object、resource、null、unknown type
isset() 检测变量是否存在
empty() 判断一个变量是否为空(字符串、数组、0、null)
其他 判断变量类型的系列函数
isarray() 、 isbool()、isfloat() 、isinteger()、isnull() 、 isnumeric()、isobject() 、 isresource()、 isstring()和 isscalar()是否为标量

常用数学运算函数

函数名 语法 说明
rand rand([int, int]) 返回一个随机整数
mt_rand mt_rand ([int, int]) 使用 Mersenne Twister 算法返回随机整数
abs abs (mixe) 返回数字的绝对值
min min(array) min(mixed,mixed [, …] ) 返回最小值
max max (array) max(mixed,mixed [, …] ) 返回最大值
round round (float [, int [, int]]) 四舍五入
floor floor (float) 舍去小数部分取整
ceil ceil ( float) 小数部分非零返回整数部分就加 1
pow pow(mixed, mixed) 返回 base的 exp 次方的值
sqrt sqrt (float) 返回平方根
sin sin (float) 返回正弦值
cos cos (float) 返回余弦值
tan tan (float) 返回正切值
deg2rad deg2rad (float) 将角度转换为弧度
bindec bindec (string) 二进制转十进制
decbin decbin (int) 十进制转二进制
octdec octdec (string) 八进制转十进制
decoct decoct (int) 十进制转八进制
hexdec hexdec (string) 十六进制转十进制
dechex dechex (int) 十进制转十六进制
exp float exp(float arg) 返回 e 的 arg 幂次值,e 为自然对数的底数,值为 2.718282。
pi float pi (void) 返回圆周率的值

字符串

三种定义的方式

单引号 双引号 定界符
不支持解析变量 支持解析变量,不支持表达式 支持解析变量,不支持表达式
不能插入单引号 不能插入双引号 可以插入双引号和单引号
只能转义 反斜杠 和 单引号 支持解析转义字符(\n、\t、\s等) 同双引号

在这里插入图片描述
常用字符串操作函数

函数 功能
trim() 去除字符串首尾空白等特殊符号或指定字符序列
strtolower() 转换为小写
strtoupper() 转换为大写
htmlspecialchars() 格式化字串中的 html标签
strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签
md5() 计算字符串的 MD5 散列值
strlen() 字节长度 utf8编码 西文:1 字节 汉字:3字节
mb_strlen() 字符个数
substr() 字符串截取函数(中文乱码)
mb_substr() 字符串截取函数(中文不乱码)
strstr() 查找字符串的首次出现,开始向后截取全部,并返回
strpos()、stripos() 查找字符串在另一字符串中第一次、最后一次出现的位置 ( 不区分大小写)
strrpos()、strripos() 同上 ( 区分大小写)
str_replace() 字符串替换函数
str_repeat() 重复一个字符串
ltrim() 、 trim() 、rtrim() 去除左侧 、 两侧 、 右侧多余字符(默认删除空格)
explode( 符号 , 字符串 ) 字符串 → 数组
implode( 符号 , 数组 ) 数组 → 字符串
md5()、sha1() 字符串加密

数组

数组类型

  • 关联式数组:下标为有意义的字符串

  • 索引式数组:下标为默认从 0 开始的数值
    定义数组
    在这里插入图片描述

  • array() 函数
    在这里插入图片描述

  • 二维数组于多维数组
    在这里插入图片描述
    数组的遍历

//for 遍历索引数组
$arr=[1,2,3,4,5];
for($i=0; $i < count($arr); $i++){
    
    var_dump($arr[$i]);
};

//foreach遍历索引数组
$f_arr=["name"=>"zhangsan","age"=>18,"sex"=>"m"];
foreach ($f_arr as $key=>$value) {
    
    echo $key.":".$value."<br>";
};

//list (只用于索引数组)
list($a,$b,$c,$d) = ["张三","李四","王五","赵六"];
echo $a,$b,$c,$d;

常用数组函数

函数 功能
array_values() 数组中所有的值放入一个新的索引数组,并返回
array_keys() 数组中所有的键放入一个新的索引数组,并返回
array_reverse() 颠倒数组顺序
in_array(元素,数组) 检查数组中是否存在某个值
count() 计算数组中的单元数目 或 对象中的属性个数
array_unshift() 在数组开头插入一个或多个元素
array_push() 在数组结尾插入一个或多个元素
array_unique() 移除数组中重复的值
array_pop() 删除数组最后一个元素
array_shift() 删除数组开头的元素
array_splice(数组,索引,数量) 删除指定元素(
删除元素后,会重排数组索引用 unset 删除不会重排数组索引)
sort() 排序 ( 升序 )
rsort() 排序(降序)
array_merge() 合并一个或多个数组
数组转JSON
函数 说明
json_encode( 数组 ) JSON 格式编码 (参数必须是 utf-8编码,否则会得到空字符或者 null)
json_decode( 字符串,参数 ) 对 JSON 格式的字符串进行解码,参数:
true :返回 数组
false : 返回 对象

运算符

类型 运算符
算术运算符 + - * / %
赋值运算符 = += -= *= /= %= .=
比较运算符 > >= < <= != !== == ===
逻辑运算符 &&
字符串运算符 .
其他运算符 三元运算符 ==? :
错误抑制符 @
提升优先级符号 ( )

流程控制

流程分支
// 单一分支结构
if{
    
}

// 双向分支结构
if{
    
}else{
    
}

// 多向分支结构
// 判断学生成绩在那个分数段
$score = 100;
if($score>=90 && $score<=100){
    
echo "优+";
}else if($score>=80 && $score<=89){
    
echo "优";
}else if($score>=70 && $score<=79){
    
echo "良";
}else if($score>=60 && $score<=69){
    
echo "中";
}else($score>=0 && $score<=59){
    
echo "差";
}

// 多向分支结构
$action = 'submit';
// 分支
switch($action){
    
case 'submit':
echo "请输入手机号码!";
break;
case 'reset':
echo "数据已经清空";
break;
default:
echo "请输入信息";
}

循环结构

while循环
While(条件表达式){
    
// 若条件成立,则执行这里的循环体
// 改变初值的条件 ;
}
do……while 循环
do{
    
// 循环体
// 改变初值的条件 ;
}while(条件表达式);
for循环
// 语法格式
for(初值;范围;递增){
    
// 循环体
}
  • break:在 switch分支当中和循环当中使用,代表结束当前分支或循环

  • continue: 在循环当中使用,代表跳过当前层循环,若指定数字,则跳过指定
    层循环

php函数

系统函数
  • define() 定义一个常量
  • defined() 判断常量是否存在
  • die() 输出一条消息,并退出当前脚本
  • eval() 把字符串按照 PHP 代码来运行
  • sleep() 延迟代码执行若干秒
自定义函数

函数命名:字母数字下划线,首字母不能为数字, 不会区分大小写 ,且不能使用关键字,函数名不能重复来定义

函数参数:
  • 形参:
  1. 形式上的参数
  2. 在函数定义时声明
  3. 若某个形参的值总是固定的某一个值,可以使用默认值指定
  4. 具有默认值的形参,放到参数列表后面
    在这里插入图片描述
  • 实参:
  1. 实际上的参数,在函数使用时声明
  2. 实参和形参类型需一致
  3. 实参和形参数量要一一对应(定义的参数必须传值,除非有默认值)

查看实参函数:

  • funcgetargs() :返回一个包含函数参数列表的数组
  • funcgetarg(索引) :返回参数数组的某一个
  • funcnumargs() :返回实参的个数

函数返回值:

  1. 函数当中若遇到 return,则会将 return后方的内容返回到函数调用处进行保存
  2. return后面的语句将不再执行
  3. 若函数没有任何返回,则默认返回 null 类型
变量作用域

局部变量:在函数内部定义,只作用于函数内部
默认情况下,函数参数通过值传递(因而即使在函数内部改变参数的值,它并不会改变函数外部的值)
在这里插入图片描述

全局变量

在函数外部定义,作用于当前整个脚本,在函数内部使用需要使用global关键字声明
在这里插入图片描述
注意:global 只能用于引入全局变量,子函数引入父函数变量,不能使用 global

引用变量传参

使用 global 命令,将全局变量引入到函数内部,但这种方式不够灵活,可以使用引 引
用变量的方法:
在这里插入图片描述

静态变量

在函数内部定义, 作用于函数内部 ,使用 static关键字声明
在这里插入图片描述

超全局变量

在全部作用域中始终可用的内置变量
$_GET 通过 URL 参数传递 ( get 请求 ) 给当前脚本的变量的数组
$_POST 通过 ‘post’ 方式给当前脚本的变量的数组
$_COOKIE 保存 Cookies信息的数组
$_SESSION 保存 SESSION 信息的数组
$_FILES 通过 HTTP POST 方式上传到当前脚本的项目的数组
$_ENV 包含服务器端环境变量(版本,目录,用户名等等)的数组
$_SERVER 服务器和执行环境信息
$_REQUEST 默认包含了 _ , _POST 和 $_COOKIE 的数组

获取 application/json 的 的 post
php://input 是一个流,可以读取没有处理过的 POST 数据(即原始数据)

$postjson = file_get_contents(“php://input”);

递归
回文数递归 (recursion) 函数
在这里插入图片描述

正则表达式

正则表达式(regular expression)描述了一种字符串匹配的模式,他是一个特殊的公式,由原子、元字符、模式修正符组成;它也是一个字符串!只不过是一个 特殊的字符串

正则表达式的主要作用:

  • 可以用来 检查 一个串是否含有某种子串
  • 将匹配的子串做替换或者从某个串中 提取 符合某个条件的子串等
  • 主要实现对字符串的 匹配、分割、查找、替换等操作
正则函数
用单引号定义正则

php的正则是以文本方式声明,文本当中用"/ /"包裹正则内容,如果使用双引号
正则中的“$”会被解析为变量(要加\转义符),因此,用单引号定义正则更安全

PCRE 规则与函数

PCRE(Perl Compatible Regular Expressions )是一个 Perl(一种功能丰富的计算机
程序语言)兼容的正则表达式库,是以 preg开头的一套函数:

函数 功能
preg_match(正则 , 字符串 ,结果数组) 单一匹配
结果数组: 第一个匹配到的结果
返回:匹配数量 (错误:false)
pregmatchall(正则 , 字符串 ,结果数组) 匹配所有
结果数组: 全部匹配到的结果
返回:匹配数量(错误:false)
preg_replace(正则 , 替换 , 被替换字符串) 替换
返回:替换后字符串
preg_split( 正则 , 字符串) 用正则分割字符串
返回:数组
元字符

正则模式当中的元字符,通常都具有特殊的含义:
在这里插入图片描述
注意:
正则需要转义字符: ( ) { } ? * + . [ ] \ / ^ $ |

模式修正符号
符号 说明
i 不区分大小写
s 忽略换行符
U 反转匹配模式(贪婪/非贪婪)

子模式与后向引用

子模式

子模式(子表达式 或 子匹配),在正则表达式中,可以使用 ( 和 ) 将模式中的子
字符串括起来,以形成一个子模式。

后向引用

正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用
这一能力。

  • 对一个正则表达式模式或部分模式两边添加圆括号()可以把这部分表达式存储
    到一个临时缓冲区中。
    所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容按顺序
    存储。
  • 存储子匹配的缓冲区编号从 1 开始,连续编号至最大 99个子表达式。
  • 每个缓冲区都可以使用’\n’(或用’$n’)访问,其中 n 为 1至 99的阿拉伯数字,用
    来按顺序标识特定缓冲区(子表达式)。

文件处理系统

路径:

路径 说明
/ 绝对路径:硬盘根目录
./ 相对路径:当前目录
…/ 相对路径:上级目录
文件路径相关函数 说明
basename() 获取路径中的文件名部分
dirname() 获取路径中的目录部分
pathinfo($path,参数) 获取路径中的大部分信息,返回数组,参数:
PATHINFODIRNAMEPATHINFOBASENAME
PATHINFOEXTENSIONPATHINFOFILENAME
目录操作函数
函数 说明
mkdir(完整路径目录) 创建一个目录
rmdir(完整路径目录) 删除一个目录
opendir(完整路径目录) 打开目录
readdir(资源) 读取目录
closedir(资源) 关闭目录,释放内存
is_dir(完整路径目录) 判断是否为一个有效目录
scandir(完整路径目录) 扫描目录,返回文件数组
特例: count(数组)==2 是空目录

文件操作

文件属性
函数 说明
filesize(完整路径文件名) 取得一个文件的大小(字节)
filectime(完整路径文件名) 获取文件的创建时间(create)
filemtime(完整路径文件名) 获取文件的修改时间(modify)
fileatime(完整路径文件名) 获取文件的访问时间(access)
文件操作函数
函数 说明
fopen(完整路径文件名 , 参数) 打开文件(参数:r只读 w写入 x 创建写入)
fread(资源 , 长度) 读取文件 长度:字节
fwrite(资源 , 内容) 写入的内容
fclose(资源) 关闭文件(资源),释放内存
filegetcontents(完整路径文件名) 将整个文件读入一个字符串
相当于 fopen fread fclose 组合动作
fileputcontents(完整路径文件名,要写入的数据,[FILE_APPEND]) 将字符串写入文件
相当于 fopen fwrite fclose组合动作 FILE_APPEND:追加写入
readfile() 将内容读入内存缓冲区
copy(源文件 , 目标文件) 拷贝文件(如果目标文件已存在,将会被覆盖)
unlink(完整路径文件名) 删除文件
文件判断用函数
  • is_file(完整路径文件名): 判断是否为一个有效文件
  • is_readable(完整路径文件名) : 判断是否可读
  • is_writable(完整路径文件名): 判断是否可写
  • is_executable(完整路径文件名) :判断是否可执行
  • file_exists(完整路径文件名) :判断一个 文件或 目录是否存在

文件上传

服务端设置 --> php.ini 中进行设置:

默认 uploadmaxfilesize = 2M,如果你想上传超过 8M 的文件,比如:20M,你在设
定 uploadmaxfilesize = 20M 的同时,还要修改 postmaxsize选项(默认为 8M)。否
则 post 数据超出限制,$_FILES 将会为空(报错)。

  • file_uploads = On 是否允许上传文件
  • uploadtmpdir =“G:/wamp/tmp” 临时存储上传文件的目录
  • uploadmaxfilesize = 2M 上传单个文件的大小
  • maxfileuploads = 20 单次上传文件的最大数量
  • postmaxsize = 8M 表单 post 方式上传文件(总和)大小
  • maxexecutiontime = 120 表单上传的超时的时间设置(默认 120秒)

$_FILES数组: $_FILES 超全局数组中,包含着从客户端提交文件的全部信息

文件上传错误常见编码
error编号 说明
0 上传过程中没有发生任何错误
1 上传的文件超过了 php.ini 中uploadmaxfilesize选项限制的值
2 超出了 HTML表单隐藏域属性的 MAX_FILE_SIZE元素所指定的最大值(浏览器兼容)
3 文件只有部分上传
4 没有上传任何文件
5 上传文件大小为 0(已废弃)
6 找不到临时文件夹
7 文件写入失败
文件上传函数:

move_uploaded_file(临时文件名 , 新文件名):将临时文件保存为正式文件
在这里插入图片描述
php处理:
在这里插入图片描述

php 图形图像处理–GD库

GD库是 PHP 中的绘图工具

作用:绘制饼图、柱形图、折线图、验证码、水印、缩放等
支持:GIF、JPEG、PNG、WBMP 等格式

GD库图片函数的参数很多,这里常用的函数:

函数 说明
imagecreate(宽,高) 创建一个 256 色画布
imagecreatetruecolor(宽,高) 创建一个真彩画布
imagecreatefromgif(完整路径文件名) 将一张 gif图像放入画布
imagecreatefrompng(完整路径文件名) 将一张 png图像放入画布
imagecreatefromjpeg(完整路径文件名) 将一张 jpeg图像放入画布
imagecreatefromstring(字符串) 从字符串中的图像流新建一图像
imagecolorallocate() 定义颜色
imagecolorallocatealpha() 定义带 alpha通道(透明)的颜色
imagefill() 填充背景
imagesetpixel() 绘制像素点
imageline() 绘制线条
imagerectangle()、imagefilledrectangle() 矩形线框、实心矩形框
imagepolygon()、imagefilledpolygon() 多边形线框、实心多边形
imageellipse()、imagefilledellipse() 椭圆线框、实心椭圆
imagearc()、imagefilledarc() 圆弧、实心圆弧(扇形)
imagettftext() 绘制文本需引入字库(支持中文字库,输出中文)
getimagesize(完整路径文件名) 获取图像的宽、高、大小、类型等相关信息
成功返回:数组 失败返回:false
imagesx(资源) 取得图像宽度
imagesy(资源) 取得图像高度
imagecopy() 用于拷贝图像或图像的一部分
成功返回:true ,失败返回:false
imagecopyresampled() 用于拷贝部分图像并调整大小(重新采样)
imagegif() 输出 gif格式图像
imagejpeg() 输出 jpeg格式图像
imagepng() 输出 png格式图像
imagedestroy() 释放资源
绘制基本几何图形

最基本的集合图形主要有点、线、圆、多边形等,有了基本几何图形,就可以演变
出更为复杂的图形。GD 库也提供了三个绘制基本图形的函数,imageline()函数、
imagearc()函数、imagerectangle()函数分别用来绘制线段,弧形(包括圆弧),矩
形。

  • imageline()函数用来绘制线段

bool imageline(resource image, int x1, int y1, int x2, int y2, int color)

该函数参数表示使用 color颜色在图像 image上从坐标(x1,y1)到(x2,y2)画一条线段。在画布里,坐标原点为左上角,横坐标水平向右为正,纵坐标垂直向下为正。

  • imagearc()函数用于绘制椭圆弧(包括圆弧)

bool imagearc(resource image, int cx, int cy, int w, int h, int s, int e, int color)

该函数参数表示用 color颜色在图像 image上以(cx,cy)为中心,画一个椭圆弧,w和 h 分别是这个椭圆的宽和高,s 和 e都是角度,分别表示圆弧起点角度和圆弧终点角度0度位置在中心的三点钟位置(x 轴正轴方向)。

  • imagerectangle()函数用来绘制一个矩形

bool imagerectangel(resource image, int x1, int y1, int x2, int y2, int color)

该函数参数表示用 color颜色在图像 image上画一个矩形,左上角坐标为(x1,y1),右下角坐标(x2,y2)。

图像填充

imagefill()函数用于图像区域填充

bool imagefill(resource image, int x, int y, int color)

该函数表示用 color 在 image图像的坐标(x,y)位置执行区域填充,与(x,y)点颜色相同且相邻的点都会被填充。

  • imagefilledarc()函数用于画一椭圆弧并填充

bool imagefilledarc(resource image, int cx, int cy, int w, int h, int s, int e, int color,int style)

它的参数说明同 imagearc()函数,与之相比,多了参数 style,它用来表示填充的方式,可选择有如下几种:
IMGARCPIE:普通填充,产生圆形边界
IMGARCCHORD:只是用直线连接了起始和结束点与 IMGARCPIE 互斥
IMGARCNOFILL:指明弧或弦只有轮廓,不填充
IMGARCEDGE:指明用直线将起始和结束点与中心点相连

  • imagefilledellipse()函数用于画一个椭圆并填充

bool imagefilledellipse(resource image, int cx, int cy, int width, int height, int color)

该函数表示用 color 颜色在 image图像上画一个填充的椭圆形,这个椭圆形的中心点在(cx,xy),宽为 windth,高为 height。

  • imagefilledrectangle()函数用于画一个矩形并填充

bool imagefilledrectangle(resource image, int x1, int y1, int x2, int y2, int color)

参数意义和 imagerectangle()函数一致,与之不同的是 imagefilledrectangle()函数会填充颜色。

  • imagefilledpolygon()函数用来画一个多边形并填充

bool imagefilledpolygon(resource image, array points, int numpoints, int color

该函数表示用 color 颜色在 image 图像上画一个填充的多边形,多边形的顶点按照顺序存储在 points 数组中, numpoints 表示多变形的边数,num_points 的数值必须大于等于3,且小于等于 points 数组的值个数的一半。

在图像中添加文字

imagestring()的主要功能就是在图像中添加函数,它的语法格式
如下:

bool imagestring(resource image, int font, int x, int y, string string, int color)

该函数表示用 color颜色在 image图像上的(x,y)位置,使用 font字体绘制字符串string。绘制字符串的时候,是从(x,y)右下方开始绘制。通常情况下 font 使用 1,2,3,4,5等内置字体。

会话控制 Cookie与Session

会话控制是一种跟踪用户的通信方式
在这里插入图片描述

cookie
  • cookie是在服务器端创建,并写回到客户端浏览器
  • 浏览器接到指令则在本地临时文件夹中创建了一个 cookie文件,其中保存了你的cookie内容
  • 客户端浏览器每次访问网站时,都会检测是否有该网站的 cookie信息,如果有的话,也会同时发送过去。
  • cookie内容的存储是 键/值 值对的方式, 键和值都只能是字符串。

设置会话 : setcookie(key,value,有效期)
>

session

在这里插入图片描述
客户端第一次访问时将信息保存到服务器,同时分配给用户一个固定长度的字符串
(sessionID),并以 cookie方式保存在客户端
在这里插入图片描述

cookie 与 session 的区别
区别 cookie session
存放位置 客户端 服务器端
安全性 不够安全 安全
资源占用 存放在客户端,不占服务器资源 占服务器资源
生命周期 固定时长 每次访问,重新计算时长
文件大小 4k 不限制

php魔术方法

PHP 中把以两个下划线__开头的函数(方法)称为魔术方法(Magic methods),
这些函数不需要显示的调用,而是由某种特定的条件触发。

魔术方法 功能
__construct() 类的构造函数,当一个类被实例化的时候自动调用
__destruct() 类的析构函数,脚本执行结束的时候、销毁对象的时候、重新定义对象的时候
__get() 读取不可访问或不存在属性时被调用
__set() 当给不可访问或不存在属性赋值时被调用
__isset() 当对不可访问属性调用 isset()或 empty()时调用
__unset() 当对不可访问属性调用 unset()时被调用
__sleep() 当使用 serialize时被调用(不需要保存大对象的所有数据时很有用)
__wakeup() 当使用 unserialize时被调用,可用于做些对象的初始化操作
__toString() 当一个类被转换成字符串时被调用
__clone() 进行对象 clone时被调用,用来调整对象的克隆行为
__invoke() 当以函数方式调用对象时被调用
_setstate() 调用 var_export()导出类时,此静态方法会被调用
__call() 调用非 public或不存在的方法时被调用
__callStatic() 调用不可访问或不存在的静态方法时被调用
__debugInfo() 打印所需调试信息

指针

指针 指向 说明
$this 实例化对象 只能应用于成员方法中
可以调用 本类 或从 父类 中继承来的属性和方法
避免用$this 引用静态成员属性和类常量(使用 self)
self 类本身 可以访问 本类 或 父类 中的静态属性和静态方法
parent 父类 访问 父类 中的静态属性和方法

单例模式
单例模式确保某个类只有一个实例


考点知识回顾:
一. 1+X Web前端中级必考 | PHP 技术与应用
二. 1+X Web前端等级考证 | 详解jQuery基础
三. 1+X Web前端等级考证 | 深入浅出MySQL数据库
四. 1+X Web前端等级考证 | Web中级12月最新模拟题


1+X Web前端等级考证 | 2020 12月Web前端开发中级理论 (试卷2) 附答案
1+X Web前端等级考证 | 2020 12月Web前端开发中级实操 (试卷2) 附答案
1+X Web前端等级考证 | 2020 12月Web前端开发中级实操 (试卷3) 附答案
1+X Web前端等级考证 | 2020 12月Web前端开发中级理论 (试卷3) 附答案
1+X Web前端等级考证 | 2020 12月Web前端开发中级实操 (试卷4) 附答案
1+X Web前端等级考证 | 2020 12月Web前端开发中级理论 (试卷4) 附答案
1+X Web前端等级考证 | 2020 12月Web前端开发中级实操 (试卷5) 附答案
1+X Web前端等级考证 | 2020 12月Web前端开发中级理论 (试卷5) 附答案

有时间会持续更新关于1+X 方面的~~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43853746/article/details/108928068

智能推荐

ByteUtil字节工具类_byteutils-程序员宅基地

文章浏览阅读1.4k次。package com.tonglei.util;import java.io.IOException;import java.math.BigInteger;import java.net.Socket;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Ma_byteutils

PHPcms需要用到-程序员宅基地

文章浏览阅读440次。1.每个页面开头都需要添加的四句代码。 <title>{if isset($SEO['title']) && !empty($SEO['title'])}{$SEO['title']}{/if}{$SEO['site_title']}</title> <meta name="keywords" content="{..._phpcms{$next_page[title]}总是提示最后一页

2018-10-31 第7课 直播笔记-程序员宅基地

文章浏览阅读80次。压缩打包介绍 2、gzip压缩工具 yum install -y unzip tar打包后,原文件不会消失,依旧存在。 ...

TCP协议--TCP连接的状态转移_在tcpip建立连接过程中,客户端或服务端的状态转移-程序员宅基地

文章浏览阅读1.3k次。《Linxu高性能服务器编程》阅读笔记:1. TCP服务端连接的状态转移  (1) 服务器调用listen()系统调用进入LISTEN(监听)状态,被动等待客户端连接。  (2) 服务端一旦监听到某个连接请求(收到同步报文段),就将该连接放入内核等待队列中,并向客户端发送带有SYN标志的确认报文段,此时服务端进入SYN_RCVD状态。  (3) 如果服务端成功接收到客户端发送回的确认报文段,就转移至_在tcpip建立连接过程中,客户端或服务端的状态转移

计算机图形学入门:什么是光线追踪?_计算机图形学中的ray tracker和着色器分别起到什么作用-程序员宅基地

文章浏览阅读2.8k次,点赞4次,收藏14次。从年初GDC放出DXR的消息已经有很长一段时间了(最初接触DXR的相关API还是在NVIDIA工作的时候,转眼大半年过去,我已经离开了NVIDIA),这是一篇基于我对光线追踪的了解写的入门文章(因为我本人也只是入门水平)。文中会少量涉及DirectX Raytracing的相关API,大部分还是阐述光线追踪技术的基本原理,在末尾的部分会recap今年GDC上的两篇[1][2]有关光线追踪的演讲。希望不太熟悉这个领域又时常听说光线追踪这个概念的同学能够通过这篇内容粗略地了解整个光线追踪技术的框架。这篇内容会覆_计算机图形学中的ray tracker和着色器分别起到什么作用

【K70例程】015片上16位ADC读取_IAR-程序员宅基地

文章浏览阅读437次。By Mcuzone使用J-LinkV8IAR版本6.6调试串口波特率:115200基于MDKK70-EK_T43硬件平台#define ADC0_CHANA 21 // set to desired ADC0 channel trigger A #define ADC0_CHANB 22 // set to des

随便推点

ubuntu+win 双系统 误删分区 修复grub_ubuntu双系统误删磁盘-程序员宅基地

文章浏览阅读689次。背景:ubuntu18.04 +win10先装的win10 后装的ubuntu。起因:固态硬盘,windows 做了三个分区,CDE。后来嫌弃DE盘没啥用,干脆合并了。之后重启电脑就出现了grub secue解决办法:1. 先使用 ls 命令 查看有多少 分区2. 逐个使用 ls <分区>/boot/grub 查看有无grub配置grub rescue> ls 结果示例# (hd0) , (hd0,m..._ubuntu双系统误删磁盘

RabbitMQ——RabbitMQ搭建及问题_erlang与rabbitmq对应版本-程序员宅基地

文章浏览阅读2.5k次,点赞4次,收藏6次。单点准备版本确定官方给出的RabbitMQ和Erlang对应版本RabbitMQ版本Erlang最低版本Erlang最高版本3.7.1520.3.x22.0.x3.7.14、3.7.13、3.7.12、3.7.113.7.10、3.7.9、3.7.8、3.7.720.3.x21.3.x3.7.6、3.7.5、3.7.4、3.7.33.7.2、3.7..._erlang与rabbitmq对应版本

BlockingQueue常用方法add、off、put、take、poll使用说明_blockingqueue take poll-程序员宅基地

文章浏览阅读4.9k次。1.BlockingQueue的定义首先将BlockingQueue提供的方法的含义解释如下:import java.util.Collection;import java.util.Queue;import java.util.concurrent.TimeUnit;public interface BlockingQueue<E> extends Queue<E> { /** * 1.在不违反容量限制的情况下将指定元素插入队列,成功则立即返回true_blockingqueue take poll

nginx nodejs环境配置_nodejs博客的nginx配置-程序员宅基地

文章浏览阅读779次。首先感谢我同事,参考他的博客,我才完成了我的nodejs博客的配置。nodejs运行之后,关掉链接,网站运行就会断开,需要安装forever,后台执行。安装方法如下(在windows和Linux下都能运行)://forever的安装:npm install forever -g//使用forever启动守护进程:forever start your_app.js//关闭守护进程:forever s..._node.js配置nginx

Linux 下 使用 yum 安装 mysql 的详细步骤及其使用过程_linux用yum安装完mysql后 怎么用-程序员宅基地

文章浏览阅读445次。此文章转载于 http://winteragain.blog.51cto.com/1436066/1147962用yum安装MySql打入如下命令:[root@mysql ~]# yum -y install mysql-server //自动从网上搜索资源并自动下载安装[root@mysql ~]# chkconfig mysqld on //设置开机_linux用yum安装完mysql后 怎么用

Lombok的基本使用_lombok有参午餐构成-程序员宅基地

文章浏览阅读7.6k次,点赞30次,收藏2次。介绍:Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。1.创建maven项目2.导入如响应的jar几插件安装1.导入依赖的jar包 <dependencies> ..._lombok有参午餐构成

推荐文章

热门文章

相关标签