引用变量考察点
回顾真题
什么是引用变量?在php中,用什么符号定义引用变量?
考点分析
分析:考官考点
PHP引用变量的概念及定义方式
概念:在PHP中引用意味着用不同的名字访问同一个变量的内容
定义方式:&符号
PHP引用变量的原理
memory_get_usage();查看内存的使用情况
xdebug_debug_zval();变量容器,管理变量
unset只会取消引用,不会销毁空间
类内的使用(对象本身就是引用传递)
一网打尽
图像画图题
常量以及数据类型的考点
回顾真题
PHP中字符串的定义方式以及各自的区别?
考点分析
定义方式以及各自的区别
定义方式:单引号,双引号,以及heredoc和newdoc
区别:单引号不能解析变量;单引号不能解析转义字符,只能解析单引号和反斜线本身;变量和变量、变量和字符串、字符串和字符串之间可以用.连接
双引号可以解析变量,变量可以使用特殊字符和{}包含;双引号可以解析所有转义字符;也可以使用.连接
单引号效率高于双引号
Heredoc 类似单引号;newdoc动车类似双引号,都用于处理大数据
写法:
//heredoc
$str=<<
数据类型
三大数据类型(标量、复合、特殊)
浮点类型:不能用于比较运算
布尔类型:FALSE的七种类型(0,0.0,' ','0',false,array(),NULL)
数组类型:
超全局数组考点:
($_GET[] 获得以GET方法提交的变量数组
$_POST[] 获得以POST方法提交的变量数组
$_COOKIE[] 获取和设置当前网站的Cookie标识
$_SESSION[] 取得当前用户访问的唯一标识,以数组形式体现,如sessionid以及自定义session数据
$_ENV[] 当前php环境变量数组
$_SERVER[] 当前php服务器变量数组
$_FILES[] 上传文件时提交到当前脚本的参数值,以数组形式体现
$_REQUEST[] 包含当前脚本提交的全部请求,$_GET、$_POST、$_COOKIE的所有动作
$GLOBALS[] 包含正在执行脚本所有超级全局变量的引用内容)
$_SERVER[]考点
$_SERVER["SERVER_ADDR"] 当前运行脚本的服务器的ip地址
$_SERVER["SERVER_NAME"] 输出配置文件httpd.conf中的ServerName
$_SERVER["REQUEST_TIME"] 得到请求开始时的时间戳
$_SERVER["QUERY_STRING"] 服务器请求时?后面的参数
$_SERVER["HTTP_USER_AGENT"] 获取用户相关信息,包括用户浏览器、操作系统等信息
$_SERVER["HTTP_REFERER"]从哪儿过来的
$_SERVER["REMOTE_ADDR"] 浏览网页的用户ip
$_SERVER["REQUEST_URI"] 当前脚本路径,根目录之后的目录
$_SERVER["PATH_INFO"] 当前脚本所在文件系统
NULL(三种情况:赋值为NULL,未定义的变量,unset销毁的变量)
常量
定义:const,define
const更快,是语言结构;define是函数;define不能用于常量的定义,const可以;常量一经定义,不能被修改,不能被删除
预定义常量:
- _LINE_
返回文件中的当前行号。 - _FILE_
返回所在文件的完整路径。包含文件名 - _FUNCTION_
返回所在函数名称。 - _CLASS_
返回所在类的名称。 - _METHOD_
返回所在类方法的名称。需要注意_METHOD返回的是"class::function"的形式,而_FUNCTION则返回"function"的形式。
6._DIR_
返回文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(FILE)。除非是根目录,否则目录中名不包括末尾的斜杠。不包含文件名。(PHP 5.3.0中新增) =
7._NAMESPACE_
当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
8._TRAIT_
Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)
运算符考察点
真题回顾
foo()和@foo()之间的区别
考点分析
php的运算符的错误控制符@
延伸:php所有的运算符考点
运算符的优先级
递增/递减>!>算数与不能算符>大小比较>不相等比较>引用>位运算(^)>位运算(|)>逻辑与>逻辑或>三目>赋值>and>xor>or
括号的使用可以增加可读性,推荐使用
比较运算符
递增递减运算符
逻辑运算符
短路作用
$a=false ||true;//true
$b=false or true;//false
流程控制
真题回顾
请列出3种php数组循环的操作方法,并注明各种循环的区别。
考点分析:
php遍历数组的三种方式以及各自的区别
for循环
foreach循环
while、list、each()组合循环
区别:for只能遍历索引数组;foreach可以遍历索引和关联数组,联合使用list()、while()、each()循环同样可以遍历索引和关联数组;区别在于foreach遍历会对数组进行reset()操作
延伸PHP分支考点:if……elseif(把优先范围小的放在前面)
switch……case……和if不同的是switch后面的控制表达式的数据类型只能是整型、浮点、字符串
continue语句作用到switch的作用类似于break】
效率:如果条件比一个简单的比较复杂的多或者在一个很多次的循环中,switch语句可能会快一些
自定义函数以及内部函数的考点
主要知识:变量的作用域以及静态变量
延伸:函数的参数以及参数的引用传递
延伸:函数的返回值以及引用返回
延伸:外部文件导入
延伸:系统内置函数
变量的作用域也称为变量的范围,global关键字及超全局变量
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值不会消失;static关键字:仅初始化一次,初始化时需要赋值,每次执行函数该值会保留,;static修饰的变量是局部的,仅在函数内部有效;可以记录调用的次数,某一些条件下可以终止递归
默认情况下,函数参数通过值传递;如果希望允许函数修改它的值,必须通过引用传递
$a=1;
function myfun( $a)
{
$a=2;
}
myfunc($a);
echo $a;
函数的返回值
只通过return语句返回;返回值为任意数据类型;返回语句会终止函数执行,并将控制权交回函数调用处;省略return,返回值为NULL,不能有多个返回值;
引用返回:&
require和include的区别
发生错误是include为警告程序继续执行,require出错时发生致命错误,程序终止执行;加个once会检查文件是否被包含过,如果是则不会包含
系统内置函数
时间日期函数
IP处理函数:ip2long()、long2ip()
打印函数:print()、printf()、print_r()、echo()、sprintf()、var_dump()、var_export()
序列化和反序列化:serialize()、unserialize()
字符串处理函数
数组处理函数
正则表达式
手机号的正则表达式的编写方法
延伸:正则表达式的组成及编写方法
正则表达式的作用:分割查找匹配替换字符串
分隔符
通用原子
元字符
模式修正符
后向引用()和贪婪模式 ?/U
正则表达式:PCRE函数:preg_match()、preg_match_all()、preg_replace()、preg_split()
中文匹配:utf-8汉字编码范围是0x4e00-ox9fa5,在gb2312环境下,0xb0-0xf7,0xa1-0xfe(使用chr转换为字符)
文件及目录处理考点
真题回顾
不断在文件hello.txt头部写入一行“hello world”字符串,要求代码完整
考官考点
文件的读取/写入操作
延伸:目录操作函数、其他文件操作
fopen()函数
用来打开一个文件,打开时需要指定打开模式
打开模式:r/r+(r只读、r+读写方式、指针指向文件开头)、w/w+(写入方式打开,清空文件,文件不存在,创建文件)、a/a+(追加方式)、x/x+(写入方式,存在报错)、b(二进制文件)、t(window独有)
写入函数 fwrite()、fputs()
读取函数 fread()、fgets()读取行、fgetc()读取一个字符
关闭文件 fclose()
不需要fopen()打开的函数
file_get_contents()
file_put_contents()
其他读取函数:file()读取到数组,readfile()读取并且输出到缓存区
访问远程文件
开启allow_url_fopen,HTTP协议连接只能使用只读,FTP协议可以使用只读或者只写
目录操作函数
名称相关:basename()、dirname()、pathinfo()
目录读取:opendir()、readdir()、closedir()、rewinddir()
目录删除:rmdir()注意先删除文件再删除目录
目录创建:mkdir()
文件大小:filesize()
目录大小:disk_free_space()、disk_totlal_space()
文件拷贝:copy()
删除文件:unlink()
文件类型:filetype()
重命名文件或者目录:rename()
文件截取:ftruncate()
文件属性:file_exists()、is_readable()、is_writable()、is_executable()(是否可执行)、filectime()(修改的时间)、fileatime()(访问的时间)、filemtime()(整个的修改时间)
文件锁:flock()
文件指针:ftell()、fseek()、rewind()
php会话控制技术
真题回顾
简述cookie和session的区别以及各自的工作机制,存储位置等,简述cookie的优缺点。
考点解析
为什么要使用会话控制技术
web使用http协议,http协议为无状态操作,没有办法保持用户的登录状态,会话控制技术允许服务器跟踪客户端做出的连续请求;
实现方式(通过GET参数传递)
cookie(工作原理:他是一种服务器发送给客服端的片段信息,再存储在客服端的内存或者硬盘中的技术--存储在浏览器的文件,包含客服端的信息;)
Cookie操作
写 setcookie(value,path,secure);
读$COOKIE
删除操作:让他过期
Cookie的优缺点
优点:不会占用服务器资源,效率高;缺点也是cookie在服务端, 不建议把敏感信息存在cookie,而且用户有权限禁止cookie的使用;
Session
存储在服务器端的文件中
Session操作
session_start();
$SESSION;
session_destroy();
session的配置
sessio.auto_start
session.cookie_domain
session.cookie_filetime
session.cookie_path
session.name
session.save_path
session.use_cookies
session.use_trans_sid
session.gc_probability
session.gc_divisor
session.gc_maxlifetime
swssion.save_handler
session优缺点
比较安全,占用资源,分布式有点问题,redis可以解决
传递sessionid的问题
session_name 和session_id传递
SID
session存储
session_set_save_handler()
mysql、memcache、redis等
面向对象
真题回顾
PHP的类权限控制修饰符
考点延伸
延伸:面向对象的封装、继承、多态
延伸:魔术方法
延伸:设计模式
类权限修饰符 public 、protected、private
封装:成员权限
继承:单一继承,方法重写(parent调用)
多态:抽象类和接口
魔术方法和常见的设计模式
网络协议的相关考点
真题回顾
HTTP/1.1中,状态码 200 301 304 403 404 500 的含义
考点分析
状态码
延伸:OSI七层模型
延伸:HTTP协议的工作特点和工作原理
延伸:HTTP协议常见请求/响应头和响应方法
延伸:HTTPS协议的工作原理
延伸:常见网络协议以及端口
http状态码:200,204,206,301,302,303,304,307,400,401,403,404,500,503
七层模型:物理层、数据链路层、网络层、传输层(tcp,udp)、会话层、表示层、应用层(http,ftp,tftp,smtp,sntp,dns,telnet,https,pop3,dhcp)
HTTP的工作特点:
基于B/S模式
通信开销小、简单快速、传输成本低
使用灵活、可使用超文本传输协议
节省传输时间
无状态
工作原理:客服端发送请求给服务器,创建一个tcp连接,指定端口号,默认80,连接到服务器,服务器监听浏览器请求,一旦监听到客服端请求,分析请求类型后,服务端会给客服端返回状态信息和数据内容
HTTP请求响应头:
Content-Type(请求实体信息对应的mime信息)、Accept(指定客户端能接受的内容类型)、Origin(最初的请求来源于哪儿)、Cookie(HTTP请求发送给cookie的值)、Cache-control(指定请求的缓存机制)、User-Agent(用户信息)、Referrer(上级请求路径)、 X-Forwarded-For(真实ip)、Access-Control-Allow-Origin(允许特定的域名访问。跨域)、Last-Modified(请求资源的最后响应时间)
Http协议的请求方法:GET(查询)、POST(创建)、HEAD(不会回传资源信息)、OPTIONS(服务器功能是否正常)、PUT(修改)、DELETE(删除)、TRACE(测试)
HTTP协议的GET和POST请求方法的区别
HTTPS的工作原理
常见网络协议含义及端口
ftp:21 文件传输协议
Telent:23 远程登录的端口
smtp:25 简单邮件传输协议
POP3:110 接受邮件
http:80 超文本传输协议
DNS:53 域名解析服务
开发环境及配置考点
回顾真题
版本控制软件
延伸:php的运行原理
延伸:;php的配置项
版本控制软件:集中式(中央服务器:CVS和svn)和分布式(git)
运行原理:nginx+php-fpm
CGI:联系webserver与PHP当中的解析器
FastCGI:CGI的升级版本
php-ftp:进程管理器
PHP常见配置项
register_globals(注入变量)、allow_url_fopen(允许远程文件打开)、all_iurl_include(允许远程文件包含)、date.timezone(设置时区)、display_errors(显示错误)、error_reporting(错误级别)、safe_model(安全模式)、upload_max_filesize(上传的最大文件大小)、max_file_uploads(上传的最大文件数量)、post_max_size()
https://www.cnblogs.com/wujuntian/p/5768336.html