PHP 基础知识
文章目录
PHP手册
查找 php.ini 路径
|
|
- 操作符 两个相连的冒号: 范围解析操作符:: 执行操作符`
- getenv 获取一个系统环境变量的值
- php设置错误信息输出级别:
|
|
- array
|
|
- php 编码转换函数
|
|
- 格式化输出函数
|
|
- $_SERVER
|
|
- php变量定义特殊之处
|
|
- exec与shell_exec区别:
这两个函数都是执行Linux命令函数,不同的是获取返回结果不一样,exec只能获取最后一行数据,shell_exec则可以获取全部数据。
-
编码知识
Base64
- Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。
- php 用base64_encode() 编码的数据要比原始数据多占用 33% 左右的空间。
- base64编码中的符号"="、"+"、"/“不适合在URL里传输,所以要替换为 ‘,’, ‘_’, ‘(',这样就免去了在URL编解码和数据库存储时所要作的转换。
-
浮点数比较
需要用到高精度的比较函数,不然会比较失败(使用bccomp,比较浮点数时bccomp第三个参数必须加上,不加第三个参数则是比较整数位)
-
php字符串块和代码块处理方式:
- Heredoc结构:第三种表达字符串的方法是用 heredoc 句法结构:«<。在该运算符之后要提供一个标识符,然后换行。接下来是字符串 string 本身,最后要用前面定义的标识符作为结束标志。
- Nowdoc结构:就象 heredoc 结构类似于双引号字符串,Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。
-
pear和pecl的区别和联系
Pear:是PHP的扩展代码包,所有的扩展均以PHP代码的形式出现,功能强大,安装简单,甚至可以改改就用。使用的时候,要在代码中进行Include才能够使用。
Pecl:是PHP的标准扩展,可以补充实际开发中所需的功能,所有的扩展都需要安装,在Windows下面以Dll的形式出现,在linux下面,需要单独进行编译,它的表现形式为根据PHP官方的标准用C语言写成,尽管源码开放但是一般人无法随意更改源码。
最直接的表述:Pear是PHP的上层扩展,Pecl是PHP的底层扩展。
-
闭包
|
|
-
php内存管理-垃圾回收机制|深拷贝与浅拷贝、写时拷贝
PHP自带垃圾回收机制,PHP进行内存管理的核心算法一共两项:一是引用计数,二是写时拷贝。
深拷贝:赋值时值完全复制,完全的copy,对其中一个作出改变,不会影响另一个
浅拷贝:赋值时,引用赋值,相当于取了一个别名。对其中一个修改,会影响另一个
PHP中, = 赋值时,普通对象是深拷贝,但对对象来说,是浅拷贝。也就是说,对象的赋值是引用赋值。(对象作为参数传递时,也是引用传递,无论函数定义时参数前面是否有&符号)
写时拷贝
定义:当你把$a赋值给$b的时候,$a的值并没有真的复制了一份,这样是对内存的极度不尊重,也是对时间复杂度的极度不尊重,计算机仅仅是将$b指向了$a的值而已,这就叫多快好省。那么,什么时候真正的发生复制呢?就是当我们修改$a的值为123的时候,这个时候就不得已进行复制,避免$b的值和$a的一样。