当前位置: 首页 > 后端技术 > PHP

PHP手册阅读笔记-语言参考

时间:2023-03-29 22:57:52 PHP

我打算先把PHP手册好好过一遍。记录一些以前不知道和不清楚的知识。语言参考>类型【新知识】使用settype(mixed$var,string$type)强制转换类型。使用is_type函数来确定变量的类型。例如:if(is_int($an_int)){$an_int+=4;}if(is_string($a_bool)){echo"String:$a_bool";}判断变量is_array(mixed$var)is_bool(mixed$var)is_float(mixed$var)is_integer(mixed$var)is_null(mixed$var)is_numeric(mixed$var)//检测变量是数字还是数字字符串is_object(mixed$var)is_resource(mixed$var)is_scalar(mixed$var)//检查变量是否为整数、浮点数、字符串或booleanis_string(mixed$var)判断函数和方法function_exists(string$function_name)method_exists(mixed$object,string$method_name)//判断classmethodBoolean布尔型[遇到坑](string)'0.00'被认为是True不为空$str='0.00';$ret=!empty($str)?$str:'5.00';echo$ret;//output:0.00[遇到一个坑]当一个字符串和一个数字比较时,先转为数字再比较//全部转为数字时,会是0var_dump(0=='all');//TRUE,takecareIntegerInteger【新知识】整数的最大值可以用常量PHP_INT_MAX表示【新知识】PHP没有像C++/JAVA那样的整数除法运算,类似于1/2,PHP返回float0.5[旧评论]转换为整数可以用(int)或(integer)进行转换。或者通过函数intval()进行转换。Float浮点型【新认知】浮点数比较方法StringString【新知识】利用函数ord()和chr()实现ASCII码和字符之间的转换(PS:这个和Python是一样的)【新知识】PHP中没有单独的“byte”类型,已经被string代替。数组【新认知】unset()函数允许删除数组中的某个键,但不会对数组的键重新建立索引。可以使用array_values()函数重新索引。【遇到陷阱】避免写数组$foo[bar],使用$foo['bar'][新理解]对象类型转数组,结果为数组,其单位为对象的属性.键名将是成员变量名,但有一些例外:整数属性不可访问;私有变量以类名为前缀;受保护的变量以“*”为前缀。这些前缀前后都有NULL字符。【新认知】循环中改变单位,可以用引用pass来做//PHP5foreach($colors作为&$color){$color=strtoupper($color);}unset($color);/*确保下面的写法将[新认知]类型转换为NULL类型,(unset)$val[新认知]字符串字面量和变量转换为二进制字符串(PS:和想象的不一样)Variable变量范围【老点评】使用global,$GLOBALS来实现全局变量或者超全局变量【新认知】静态变量只能简单赋值,不是表达式。静态变量在第一次赋值后不会重新定义,可以用来统计递归函数。来自PHP外部的变量【新认知】变量名中的点和空格转换为下划线,例如变为$_REQUEST["a_b"]语言引用>流程控制foreach[新认知]使用list()作为嵌套数组unpackbreak【新认知】break可以接受一个可选的数字参数来决定跳出多少个循环。break相当于break1continue【新认知】continue可以接受一个可选的数字参数来决定跳转到循环结束的次数。continue等同于continue1语言参考>Constant魔法常量【新认知】这些变量叫做魔法常量__LINE____FILE____DIR____FUNCTION____CLASS____TARIT____MRTHOD____NAMESPACE__语言参考>类和对象的基本概念【新认知】::class,使用ClassName::class获取字符串,includingthenamespace//output:NS\ClassName类常量【新认知】接口中可以定义常量【新认知】可以使用变量动态调用类,但变量的值不能是关键字(self、parent、static)。魔术方法【新认知】不能在__toString()方法中抛出异常,会导致致命错误。类型约束【新认知】PHP5可以使用类型约束,可以指定函数的参数必须是对象,接口,数组,可调用的后期静态绑定[新认知]后期静态绑定,static::不再解析为definition中当前方法所在的类,它是在实际运行时计算的。//output:BLanguageReference>Generator【新认知】生成器汗水的核心是yield关键字。它最简单的调用形式看起来像一个return语句,除了正常的return返回一个值并终止函数的执行,而yield返回一个值给循环遍历生成器的代码并且只暂时执行生成器代码123语言参考>预定义变量超全局变量$GLOBALS$_SERVER$_GET$_POST$_FILES$_REQUEST$_SESSION$_ENV$_COOKIE$php_errormsg//之前的错误信息$HTTP_RAW_POST_DATA//原始POST数据$http_response_header//HTTP响应头$argc//参数个数$argv//上面的参数数组