大家好,又见面了,我是全栈君。
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握手一级数据加密传输,也属于应用层协议
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111974.html原文链接:https://javaforall.cn