大家好,又见面了,我是全栈君。
false的七种情况
-
整型0
-
浮点0.0
-
布尔false
-
空字符串”,””
-
字符串’0′
-
空数组[]
-
NULL
超全局数组
-
$GLOBALS,包含下面8个超全局数组的值
-
$_GET
-
$_POST
-
$_REQUERT,包含$_GET,$_POST,$_COOKIE
-
$_SEESION
-
$_COOKIE
-
$_SERVER
$_SERVER['SERVER_ADDR'] //服务器地址
$_SERVER['SERVER_NAME'] //服务名称
$_SERVER['REQUEST_TIME'] //请求时间
$_SERVER['QUERY_STRING'] //请求地址中问号后的内容
$_SERVER['HTTP_REFERER'] //上次请求地址
$_SERVER['HTTP_USER_AGENT'] //浏览器信息
$_SERVER['REMOTE_ARRR'] //客户端请求ip
$_SERVER['REQUEST_URI'] // 请求中脚本名称
$_SERVER['PATH_INFO'] // 请求中路径
-
$_FIELS
-
$_ENV
null的三种情况
-
直接赋值NULL
-
未定义变量
-
unset销毁后的变量
常量
一定定义,不可删除和修改
-
const 更快,是语言结构,可定义类常量
-
define 是函数
预定义常量
-
FILE 文件所在路径+文件名
-
LINE 所在代码行
-
DIR 所在文件夹路径
-
FUNCTION 方法名
-
CLASS 类名
-
TRAIT TRAIT的名称
-
METHOD 类名+方法名
-
NAMESPACE 命名空间名
引用变量
用不同名字访问同一个变量内容,用『&』符号表示
抽象类和接口
抽象类:
-
定义为抽象的类不能被实例化.
-
任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
-
被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
-
继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。
-
例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突。
-
这也适用于 PHP 5.4 起的构造函数。在 PHP 5.4 之前的构造函数声明可以不一样的.
接口:
-
使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
-
接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
-
接口中定义的所有方法都必须是公有,这是接口的特性。
-
要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
-
实现多个接口时,接口中的方法不能有重名。
-
接口也可以继承,通过使用extends操作符.
-
类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误.
区别:
-
对接口的继承使用implements,抽象类使用extends.
-
接口中不可以声明变量,但可以声明类常量.抽象类中可以声明各种变量
-
接口没有构造函数,抽象类可以有
-
接口中的方法默认为public,抽象类中的方法可以用public,protected,private修饰
-
一个类可以继承多个接口,但只能继承一个抽象类
运算符优先级
优先级由高到低排序
-
==递增/递减==
-
非(!)
-
==算术运算符==
-
==大小比较==
-
(不)相等比较
-
引用
-
位运算符(^)
-
位运算符(|)
-
==逻辑与==
-
==逻辑或==
-
==三目==
-
==赋值==
-
and
-
oxr
-
or
浮点数值得精度丢失问题
原因:因为计算机存储是二进制,准换进制时会有精度丢失
解决方案:先将浮点字符串化,再进行整数获取,输出可通过print
$f = 0.57;
$f = $f * 100;
// 输入可通过print
print('%d', $f);
// 用于存储或二次计算,先将浮点字符串化,再进行整数获取
$f = strval($f);
var_dump($f);
echo floor($f);
echo intval($f);
echo (int)($f);
switch 只能判断整型、浮点、字符
变量类型
-
普通变量
-
全局变量,通过
global
定义,可以在局部域调用全局变量,可通过$_GLOBAL['XXX']
读取变量的值 -
静态变量,通过
static
定义,仅在局部域中存在,执行函数离开作用域,其值也不会消失
ip处理函数
-
ip2long()
-
long2ip()
时间日期处理函数
-
date()
-
strtotime()
-
mktime()
-
time()
-
microtime()
-
date_default_timezone_set()
打印处理
-
print() 仅输出单个变量
-
printf() 按格式输出
-
print_r() 格式化输出
-
echo 输出多个变量
-
sprintf() 按格式返回
-
var_dump() 格式化输出,并输出变量类型
-
var_export() 将格式化输出,加true可返回,返回内容可直接做变量使用
序列化
-
serialize()
-
unserialize()
字符串处理
-
implode(),join()
-
explode()
-
strrev() 反转字符
-
trim(),ltrim(),rtrim()
-
strstr() 获取第一次出现指定字符串的字符串
-
number_format() 数字格式化为金钱格式
数组处理
-
array_keys()
-
array_values()
-
array_diff()
-
array_megre()
-
array_shift()
-
array_unshift()
-
array_pop()
-
array_push()
-
sort(), rsort() 对数组升降序排序
-
asort(),arsort() 对数组键值升降序排序
-
ksort(),krsort() 对数组键名升降序排序
文件操作
fopen() 打开文件并指定模式
-
r/r+ 只读打开/读写打开,指针在文件开头
-
w/w+ 只写打开/读写打开,文件存在会清空,不存在会创建
-
a/a+ 写入追加写入/读写的追加写入,指针在文件末尾
-
x/x+ 写入/读写打开,指针开头,文件存在返回false,不存在就直接创建
-
b 二进制打开
写入
-
fwrite()
-
fputs()
读取
-
fread() 获取指定长度字符
-
fgets() 获取一行字符
-
fgetc() 获取一个字符
关闭 fopen()
文件大小 filesize()
文件复制 copy()
文件删除 unlink()
文件类型 filetype()
重命名或移动 rename()
文件属性
-
file_exist()
-
is_readable()
-
is_writable()
-
is_executable()
-
filectime() 创建时间
-
fileatime() 访问时间
-
filemtime() 更新时间
其他不需要fopen()打开的函数
-
file_get_contents()
-
file_put_contents()
其他
-
file()整个文件内容按行读取到一个数组里
-
readfile()整个文件读取出来,并输出
远程访问
php.ini
中打开 allow_url_fopen
配置,http协议只能使用只读,ftp协议,只能只读或只写
目录操作
名称相关
-
basename() 文件基础名称
-
dirname() 文件夹名称
-
pathinfo() 文件信息数组
目录读取
-
opendir()
-
readdir()
-
closedir()
-
rewinddir() 重置句柄
-
disk_free_space()
-
disk_total_space()
目录删除 rmdir()
目录必须为空
目录创建 mkdir()
重命名或移动 rename()
设计模式
-
工厂模式
-
单例模式
-
适配器模式
-
观察者模式
-
策略模式
-
注册树模式
魔术方法
-
__construct()
-
__destruct()
-
__call()
-
__callStatic()
-
__get()
-
__set()
-
__isset()
-
__unset()
-
__sleep()
-
__wakeup()
-
__toString()
-
__close()
网络协议
http状态码
-
200 请求成功
-
204 not content
-
206 reset content
-
301 永久重定向
-
302 临时重定向
-
307 临时重定向
-
400 错误请求
-
401 缺少认证信息
-
403 拒绝
-
404 不存在
-
500 服务器异常
-
502 Bad Gateway
-
503 服务器超负载或停机维护
OSI七层协议
-
物理层 建立、维护、断开物理连接
-
数据链路层 建立逻辑连接,进行硬件地址寻址,差错校验等功能
-
网络层 进行逻辑地址寻址,师兄不同网络之间的路径选择
-
传输层 定义传输数据的协议端口号,一级流控和差错校验。协议有TCP/UDP,数据包一旦离开网卡即进入网络传输层
-
会话层 建立、管理、终止会话
-
表示层 数据的表示、安全、压缩
-
应用层 网络服务与最终用户的一个借口,协议有:http(80),ftp(21),tftp,smtp(25),snmp,dns(53),telnet(23),https(443),pop3(110),dhcp
HTTP协议的工作特点和工作原理
工作特点:
-
基于B/S模式
-
通信开销小,简单快速,传输成本低
-
使用灵活,可使用超文本传输协议
-
节省传输时间
-
无状态
工作原理:
客户端发送请求给服务器,建立一个TCP连接,指定端口号,默认80,连接到服务器,服务器监听到浏览器的请求,一旦监听到客户端的请求,分析请求类型后,服务器会向客户端发送状态信息和数据内容
HTTP协议常见请求头/响应头
-
Content-Type 指定数据内容类型
-
Accept 指定客户端能接受数据内容类型
-
Origin 最初请求来源(POST)
-
Cookie
-
Cache-Control 指定请求的缓存机制
-
User-Agent 用户浏览器信息
-
Referrer 上级请求路径
-
X-Forwarded-For 请求端真实ip
-
Access-Control-Allow-Origin 允许其他请求域名,用于跨域
-
Last-Modified 最后响应时间
HTTPS的工作原理
HTTPS是一种基于SSL/TLS的HTTP协议,所有的HTTP数据都是SSL/TLS协议封装之上传输的
HTTPS是在HTTP协议的基础上,添加了SSL/TLS握手一级数据加密传输,也属于应用层协议
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111974.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...