资讯专栏INFORMATION COLUMN

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

Developer / 1214人阅读

摘要:最近计划把手册,认真的先过一遍。语言参考类型新认知强制转换类型用。后期静态绑定从这里开始语言参考生成器新认知生成器汗水的核心是关键字。语言参考预定义变量超全局变量前一个错误信息原始数据以上

最近计划把 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 ) //检测变量是否是一个标量  integer、float、string 或 boolean
is_string( mixed $var )

判断函数和方法

function_exists( string $function_name )
method_exists( mixed $object, string $method_name ) // 判断类的方法
Boolean 布尔类型

【遇到坑】(string) "0.00" 被认为是 True,且不为空

$str = "0.00";
$ret = !empty($str) ? $str : "5.00";
echo $ret;
//output:0.00

【遇到坑】当字符串 与 数字比较时,会被转换为数字之后进行比较

//将all转换为数字时候为0
var_dump(0 == "all"); // TRUE, take care
Integer 整型

【新认知】整型的最大值可以用常量 PHP_INT_MAX 表示

【新认知】PHP 没有像 C++ / JAVA 的整除运算,类似 1 / 2 ,PHP 返回 float 0.5

【旧回顾】转换为整型可以用(int) 或者 (integer) 强制转换。或者通过函数 intval() 来转换。

Float 浮点型

【新认知】比较浮点数的方法


String 字符串

【新认知】使用函数 ord()chr() 实现 ASCII 码和字符间的转换(PS:这点和 Python 是一样的)
【新认知】 PHP 中没有多带带的“byte”类型,已经用字符串来代替了。

Array 数组

【新认知】 unset()函数允许删除数组中的某个键,但是数组的键不会重新索引。可以使用 array_values() 函数重新索引。
【遇到坑】避免数组 $foo[bar] 的写法,使用 $foo["bar"]
【新认知】如果一个object类型转换为 array,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:整数属性不可访问;私有变量前会加上类名作前缀;保护变量前会加上一个 "*" 做前缀。这些前缀的前后都各有一个 NULL 字符。

【新认知】 在循环中改变单元,可以用个引用传递来做到

// PHP 5
foreach ($colors as &$color) {
    $color = strtoupper($color);
}
unset($color); /* ensure that following writes to
类型转换

【新认知】转换为NULL类型,(unset) $val

【新认知】将字符串文字和变量转换为二进制字符串 (PS:和想象中不一样)


语言参考 > 变量
变量范围

【旧回顾】 使用global$GLOBALS 来实现全局变量或者超全局变量

【新认知】 静态变量只能简单赋值,不能是表达式。静态变量第一次赋值之后不会再被重新定义,可以用于递归函数的计数。

来自PHP外的变量

【新认知】变量名中的点和空格被转换成下划线 例如 变成 $_REQUEST["a_b"]

语言参考 > 流程控制 foreach

【新认知】用list()为嵌套数组解包

break

【新认知】break 可以接受一个可选的数字参数来决定跳出几重循环。break 相当于 break 1

continue

【新认知】continue 可以接受一个可选的数字参数来决定跳到几重循环结尾。continue 相当于 continue 1

语言参考 > 常量 魔术常量

【新认知】原来这些变量叫做 魔法常量

__LINE __ 
__FILE__
__DIR__
__FUNCTION__
__CLASS__
__TARIT__
__MRTHOD__
__NAMESPACE__
语言参考 > 类与对象 基本概念

【新认知】::class, 使用ClassName::class 可以获得一个字符串,包含命名空间


//output: NSClassName
类常量

【新认知】接口中可以定义常量
【新认知】可以用一个变量来动态调用类,但该变量的值不能为关键词(self, parent, static)。

魔术方法

【新认知】不能在__toString() 方法中抛出异常,这样会出现致命错误。

类型约束

【新认知】PHP5 可以使用类型约束,函数的参数可以制定必须为 对象,接口,数组,callable

后期静态绑定

【新认知】后期静态绑定,static:: 不再被解析为定义在当前方法所在的类,而是在实际运行时计算。


//output: B
语言参考 > 生成器

【新认知】生成器汗水的核心是yield关键字。它最简单的调用形式看起来像一个return声明,不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给循环调用此生成器的代码而且只是暂时执行生成器代码

1
2
3
语言参考 > 预定义变量 超全局变量
$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_REQUEST
$_SESSION
$_ENV
$_COOKIE
$php_errormsg //前一个错误信息 
$HTTP_RAW_POST_DATA //原始POST数据
$http_response_header //HTTP Response Header
$argc //argument numbers
$argv //argument array

以上

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23245.html

相关文章

  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    caspar 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    nihao 评论0 收藏0
  • SegmentFault 技术周刊 Vol.40 - 2018,来学习一门新的编程语言吧!

    摘要:入门,第一个这是一门很新的语言,年前后正式公布,算起来是比较年轻的编程语言了,更重要的是它是面向程序员的函数式编程语言,它的代码运行在之上。它通过编辑类工具,带来了先进的编辑体验,增强了语言服务。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不觉已经到来了,总结过去的 2017,相信小伙们一定有很多收获...

    Drummor 评论0 收藏0
  • AI开发书籍分享

    摘要:编程书籍的整理和收集最近一直在学习深度学习和机器学习的东西,发现深入地去学习就需要不断的去提高自己算法和高数的能力然后也找了很多的书和文章,随着不断的学习,也整理了下自己的学习笔记准备分享出来给大家后续的文章和总结会继续分享,先分享一部分的 编程书籍的整理和收集 最近一直在学习deep learning深度学习和机器学习的东西,发现深入地去学习就需要不断的去提高自己算法和高数的能力然后...

    huayeluoliuhen 评论0 收藏0
  • AI开发书籍分享

    摘要:编程书籍的整理和收集最近一直在学习深度学习和机器学习的东西,发现深入地去学习就需要不断的去提高自己算法和高数的能力然后也找了很多的书和文章,随着不断的学习,也整理了下自己的学习笔记准备分享出来给大家后续的文章和总结会继续分享,先分享一部分的 编程书籍的整理和收集 最近一直在学习deep learning深度学习和机器学习的东西,发现深入地去学习就需要不断的去提高自己算法和高数的能力然后...

    antz 评论0 收藏0

发表评论

0条评论

Developer

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<