1.Hypertxt Processing:超文本预处理工具
2.用途:第一,服务端脚本。需要三部分,web服务器,web浏览器,PHP解释器(CGI或服务器模 块)。
第二,命令行脚本。直接使用PHP解释器。常用于cron(Linux)或Task Scheduler执行日 常脚本。
第三,编写桌面应用程序。PHPGTK。
3.FPM(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的。
特性: 第一,支持平滑的停止/启动的高级进程管理功能;
第二,可以工作于不同的 uid/gid/chroot 环境下,并监听不同的端口和使用不同的 php.ini 配置文件(可取代 safe_mode 的设置);
第三,发生意外情况的时候能够重新启动并缓存被破坏的 opcode;
第四,动态/静态子进程产生;
4.PECL :
pear打包的PHP扩展库仓库。扩展库名字是extname。
5.建立PECL共享库:
法一,PEAR编译共享库,使用PECL命令。
法二,phpize编译。phpize是准备php编译环境的。
6.php-config
是一个简单的命令行脚本,用于获取php配置信息
7.配置文件 php.ini
php.ini在php启动时读取,对于服务器模块的php,仅在web服务器启动时读取。而对于CGI和CLI模式下,每次调用都读取。
8. 如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。
9.如果在HTML中嵌入PHP脚本
要输出大段文本时,跳出 PHP 解析模式通常比将文本通过echo或print输出更有效率。
10.php变量类型:
整型,布尔,浮点,字符串四种标量类型。
array,object两种复合类型。
null,resource两种资源类型。
变量的类型通常不是由程序员设定的,确切地说,是由 PHP 根据该变量使用的上下文在运行时决定的。
如果想查看某个表达式的值和类型,用var_dump()函数。
如果只是想得到一个易读懂的类型的表达方式用于调试,用gettype()函数。要查看某个类型,不要用gettype(),而用is_type函数。
如果要将一个变量强制转换为某类型,可以对其使用强制转换或者settype()函数。
11.boolean
当转换为boolean时,以下值被认为是FALSE:
布尔值FALSE本身
整型值 0(零)
浮点型值 0.0(零)
空字符串,以及字符串"0"
不包括任何元素的数组
不包括任何成员变量的对象(仅 PHP 4.0 适用)
特殊类型NULL(包括尚未赋值的变量)
从空标记生成的SimpleXML对象
所有其它值都被认为是TRUE(包括任何资源)。
12.Integer
PHP_INT_SIZE:表示整数字长。
PHP_INT_MAX:表示整数最大值。不同平台值是不一样的。
整数溢出:
如果给定的一个数超出了integer的范围,将会被解释为float。同样如果执行的运算结果超出了integer范围,也会返回float。
当从浮点数转换成整数时,将向下取整。round()四舍五入.
13.浮点数
NaN
某些数学运算会产生一个由常量NAN所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值进行的松散或严格比较的结果都是FALSE。由于NAN代表着任何不同值,不应拿NAN去和其它值进行比较,包括其自身,应该用is_nan()来检查。
所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者gmp 函数。
14.字符串
1>表示方式:单引号,双引号,heredoc,newdoc。
2>heredoc ,类似于双引号字符串。结束时所引用的标识符必须在该行的第一列,而且,标识符的命名也要像其它标签一样遵守 PHP 的规则:只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。 要注意的是结束标识符这行除了可能有一个分号(;)外,绝对不能包含其它字符。这意味着标识符不能缩进,分号的前后也不能有任何空白或制表符。更重要的是结束标识符的前面必须是个被本地操作系统认可的换行,而结束定界符(可能其后有个分号)之后也必须紧跟一个换行。
3>newdoc类似于单引号字符串。一个 nowdoc 结构也用和 heredocs 结构一样的标记<<<, 但是跟在后面的标识符要用单引号括起来,即<<<'EOT'。Heredoc 结构的所有规则也同样适用于 nowdoc 结构,尤其是结束标识符的规则。
4>用花括号{和}把它括起来即可。由于{无法被转义,只有$紧挨着{时才会被识别
5>存取和修改字符串中的字符. string中的字符可以通过一个从 0 开始的下标,用类似array结构中的方括号包含对应的数字来访问和修改,比如$str[42]。可以把string当成字符组成的array。函数substr()和substr_replace()可用于操作多于一个字符的情况。Note:string也可用花括号访问,比如$str{42}。
用超出字符串长度的下标写入将会拉长该字符串并以空格填充。非整数类型下标会被转换成整数。非法下标类型会产生一个E_NOTICE级别错误。用负数下标写入字符串时会产生一个E_NOTICE级别错误,用负数下标读取字符串时返回空字符串。写入时只用到了赋值字符串的第一个字符。用空字符串赋值则赋给的值是 NULL 字符。
6>一个值可以通过在其前面加上(string)或用strval()函数来转变成字符串。
在一个需要字符串的表达式中,会自动转换为string。比如在使用函数echo或print时,或在一个变量和一个string进行比较时,就会发生这种转换。
一个布尔值boolean的TRUE被转换成string的"1"。Boolean的FALSE被转换成""(空字符串)
数组array总是转换成字符串"Array"。NULL总是被转变成空字符串。
该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。合法数值由可选的正负号,后面跟着一个或多个数字(可能有小数点),再跟着可选的指数部分。指数部分由 'e' 或 'E' 后面跟着一个或多个数字构成
7.数组
1>此外key会有如下的强制转换:
包含有合法整型值的字符串会被转换为整型。例如键名"8"实际会被储存为8。但是"08"则不会强制转换,因为其不是一个合法的十进制数值。
浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名8.7实际会被储存为8。
布尔值也会被转换成整型。即键名true实际会被储存为1而键名false会被储存为0。
Null会被转换为空字符串,即键名null实际会被储存为""。
数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。
2>注意这里所使用的最大整数键名不一定当前就在数组中。它只要在上次数组重新生成索引后曾经存在过就行了。unset数组后索引并不从0开始。
3>转为数组
对于任意integer,float,string,boolean和resource类型,如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。如果一个object类型转换为array,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:整数属性不可访问;私有变量前会加上类名作前缀;保护变量前会加上一个 '*' 做前缀。这些前缀的前后都各有一个 NULL 字符。这会导致一些不可预知的行为。将NULL转换为array会得到一个空的数组。
数组(Array)的赋值总是会涉及到值的拷贝。注意这点。
8.对象。
如果将一个对象转换成对象,它将不会有任何变化。如果其它任何类型的值被转换成对象,将会创建一个内置类stdClass的实例。如果该值为NULL,则新的实例为空。数组转换成对象将使键名成为属性名并具有相对应的值。对于任何其它的值,名为scalar的成员变量将包含该值。
9.资源
一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
转换资源:由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
释放资源:由于 PHP 4 Zend 引擎引进了引用计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。因此,很少需要手工释放内存。
10.NULL
使用(unset) $var将一个变量转换为null将不会删除该变量或 unset 其值。仅是返回NULL值而已。