现代php 阅读笔记,PHP 手册阅读笔记 - 语言参考篇

0818b9ca8b590ca3270a3433284dd417.png

最近计划把 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 浮点型

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

$a = 1.23456789

$b = 1.23456780

$epsilon = 0.00001

if (abs($a - $b) < $epsilon) {

echo 'true';

}

String 字符串

【新认知】使用函数 ord() 和 chr() 实现 ASCII 码和字符间的转换(PS:这点和 Python 是一样的)

【新认知】 PHP 中没有单独的“byte”类型,已经用字符串来代替了。

Array 数组

【新认知】 unset()函数允许删除数组中的某个键,但是数组的键不会重新索引。可以使用 array_values() 函数重新索引。

【遇到坑】避免数组 $foo[bar] 的写法,使用 $foo['bar']

【新认知】如果一个object类型转换为 array,则结果为一个数组,其单元为该对象的属性。键名将为成员变量名,不过有几点例外:整数属性不可访问;私有变量前会加上类名作前缀;保护变量前会加上一个'*'做前缀。这些前缀的前后都各有一个 NULL 字符。

class A {

private $A; // This will become '\0A\0A'

}

class B extends A {

private $A; // This will become '\0B\0A'

public $AA; // This will become 'AA'

}

var_dump((array) new B());

?>

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

// PHP 5

foreach ($colors as &$color) {

$color = strtoupper($color);

}

unset($color); /* ensure that following writes to

类型转换

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

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

$binary = (binary)$string;

$binary = b"binary string";

语言参考 > 变量

变量范围

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

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

function test()

{

static $count = 0;

$count++;

echo $count;

if ($count < 10) {

test();

}

$count--;

}

?>

来自PHP外的变量

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

语言参考 > 流程控制

foreach

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

$array = [

[1, 2],

[3, 4],

];

foreach ($array as list($a, $b)) {

// $a contains the first element of the nested array,

// and $b contains the second element.

echo "A: $a; B: $b\n";

}

?>

break

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

continue

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

语言参考 > 常量

魔术常量

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

__LINE __

__FILE__

__DIR__

__FUNCTION__

__CLASS__

__TARIT__

__MRTHOD__

__NAMESPACE__

语言参考 > 类与对象

基本概念

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

namespace NS {

class ClassName {

}

echo ClassName::class;

}

?>

//output: NS\ClassName

类常量

【新认知】接口中可以定义常量

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

魔术方法

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

类型约束

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

后期静态绑定

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

class A {

public static function who() {

echo __CLASS__;

}

public static function test() {

static::who(); // 后期静态绑定从这里开始

}

}

class B extends A {

public static function who() {

echo __CLASS__;

}

}

B::test();

?>

//output: B

语言参考 > 生成器

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

function gen_one_to_three() {

for ($i = 1; $i <= 3; $i++) {

//注意变量$i的值在不同的yield之间是保持传递的。

yield $i;

}

}

$generator = gen_one_to_three();

foreach ($generator as $value) {

echo "$value\n";

}

?>

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

以上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mongodb连接失败_mongodb 数据库及数据分页

本文转载于 SegmentFault 社区作者&#xff1a;小小蚊子在做自己的一个小项目时&#xff0c;新学习了 mongodb非关系型数据库&#xff0c;使用了 mongoose封装好的查询方法&#xff0c;包括数据库分页用到的limit和 skip 方法&#xff0c;这里记录下。一mongodb 数据库连接参照…

mysql 关联查询_Mysql查询优化器,再也不会因为该什么时候建立索引发愁了

优化器的作用&#xff1a;我们知道&#xff0c;一条SQL语句&#xff0c;可以有很多执行方式&#xff0c;最后都返回相同的结果&#xff0c;而优化器的作用就是找到最好的执行计划。一、RBO-基于规则的优化器(rule)系统内置的一套硬编码规则&#xff0c;根据规则生成执行计划&am…

购物车的收货地址js php,Javascript实现购物车功能的详细代码

我们肯定都很熟悉商品购物车这一功能&#xff0c;每当我们在某宝某东上购买商品的时候&#xff0c;看中了哪件商品&#xff0c;就会加入购物车中&#xff0c;最后结算。购物车这一功能&#xff0c;方便消费者对商品进行管理&#xff0c;可以添加商品&#xff0c;删除商品&#…

CLI下的网页浏览器之二——Lynx

出自&#xff1a;http://vb2005xu.javaeye.com/blog/230044 Lynx浏览器使用指南 Lynx是一个字符界面下的全功能的WWW浏览器。Lynx 可以运行在很多种操作系统下&#xff0c;如VMS, UNIX, Windows 95, Windows NT等&#xff0c;当然也包括Linux。 由于没有漂亮的图形界面&#xf…

stm32 整数加法循环时间_【教学设计】小数加法教学设计

小数加法教学设计刘秀锦舞钢市特殊教育学校教材分析本节课是第四单元“小数加减法”的第一课时&#xff0c;小数加减法是以整数加减法为基础进行教学的&#xff0c;本节课走踏实了&#xff0c;后边的知识才能顺利的进行下去&#xff0c;所以本节课还是以小步走、学一点、练一点…

天锐绿盾解密_天锐绿盾数据防泄密系统

天锐绿盾数据防泄密系统&#xff08;简称数据防泄密系统&#xff09;是一套从源头上保障数据安全和使用安全的软件系统。包含了文件透明加解密、内部文件流转、密级管控、离线管理、文件外发管理、灵活的审批流程、工作模式切换、服务器白名单等功能&#xff0c;并全面覆盖Mac、…

矩阵维度必须一致_如何从看得懂到会使用矩阵思维

本来我一开始是想学习如何使用艾森豪威尔矩阵的&#xff0c;但是利用学习观的方法想去网上找有关艾森豪威尔矩阵的例子时&#xff0c;发现网上几乎没有&#xff0c;网上能搜出来的都是对这个矩阵的介绍&#xff0c;看完这些介绍你会发现很简单&#xff0c;都能看懂&#xff0c;…

numpy 归一化_归一化(MinMax)和标准化(Standard)的区别

此文参考https://blog.csdn.net/u010947534/article/details/86632819定义上的区别归一化&#xff1a;将数据的值压缩到0到1之间&#xff0c;公式如下标准化&#xff1a;将数据所防伪均值是0&#xff0c;方差为1的状态&#xff0c;公式如下&#xff1a;归一化、标准化的好处&am…

python多态_Python基础入门18节-第十六节 面向对象如何理解多态

多态是面向对象的一大特性&#xff0c;Python本身也是一门多态性的语言。在Python中要实现多态&#xff0c;还是得借助于上节提到的继承。假设有这么一个场景&#xff0c;在夏季我们可以看到荷花、牡丹花、太阳花&#xff0c;夏天一到这些花全都开放了。这些花我们就将它理解多…

linux重启后root密码错误,Linux技巧| 解决Debian Root密码忘记的问题

Debian Root密码忘记开机 grub 菜单下进入单用户模式进行修改密码/修改系统文件。解决过程注&#xff1a;本教程适用于 Debian 7 8 91. 首先。重启一下系统。在开机 grub 内核选择菜单那里&#xff0c;迅速按“e”。2. 将光标移动到“linux”开头的那一行&#xff0c;将原来的“…

SilverLight学习笔记--Silverlight中WebService通讯

本文我们学习如何在Silverlight中使用WebService进行通讯。 新建项目Silverlight应用程序&#xff0c;命名为&#xff1a;SLWebService。在服务器端我们需要做两项目工作: 1、在Web项目中新建一个类Person&#xff0c;我们将在WebService中返回它的实例化对象。Person类定义如下…

导出文件_一招解决PDF文件导出图片

将PDF文件保存为高清图片是经常需要进行的保存方式之一&#xff0c;因为PDF文件虽然安全性高&#xff0c;但是相比较图片而言&#xff0c;还是不易进行查看的&#xff0c;那么如何将PDF文件导出图片呢&#xff1f;以前也了解过很多方法&#xff0c;不过最好的当然不是截图了。虽…

linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...

2019年5月&#xff0c;Kubernetes社区(后面简称”社区“)修复了标号为CVE-2019-11244的安全漏洞&#xff0c;这个修复方案似乎并不彻底&#xff0c;于是有人发布Issue对此提出异议&#xff0c;希望提供进一步修复方案。虽然Kubernetes已经非常安全&#xff0c;但对于一些安全标…

高中数学40分怎么办_2019年第35届全国高中数学联赛试题及参考答案

2019年第35届全国高中数学联赛考试已结束&#xff0c;本文收集整理本次数学联赛的试题和参考答案&#xff0c;以供大家了解参考。本次数学联赛由全国高中数学联赛组委会统一命题&#xff0c;共分为一试和二试。一试时间为80分钟&#xff0c;包括8道填空题(每题8分)和3道解答题(…

一个把图片保存到SQL数据库的工具

因公司的业务需要,会把很多图片保存到数据库中.因此做了一个很简单的工具,把图片保存到SQL数据库中.1.可以连接到不同服务器上的SQL数据库,可以选择操作各个表;2.可以指定保存到数据库的图片格式(JPG or BMP);3.可以用windows图片和传真查看器预览图片.下载地址:一个把图片保存…

redis 哨兵_Redis哨兵机制的原理介绍

php中文网最新课程每日17点准时技术干货分享本篇文章给大家带来的内容是介绍Redis的哨兵机制&#xff0c;让大家了解哨兵机制的原理和如何实现。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。概述Redis的复制有一个缺点&#xff0c;当主…

BoooLee pyretoolkit -- 一个基于python re模块的在线正则表达式测试工具

为了学习python re模块正则表达式&#xff0c;寻找了一些正则表达式工具&#xff0c;除了komodo捆绑的rx toolkit外&#xff0c;其他的测试工具都是基于.net或其他引擎的&#xff0c;语法上多少有点出入。 干错自己写一个&#xff0c;用了2天时间&#xff0c;python re googl…

【大数据】NiFi 的基本使用

NiFi 的基本使用 1.NiFi 的安装与使用1.1 NiFi 的安装1.2 各目录及主要文件 2.NiFi 的页面使用2.1 主页面介绍2.2 面板介绍 3.NiFi 的工作方式3.1 基本方式3.2 选择处理器3.3 组件状态3.4 组件的配置3.4.1 SETTINGS&#xff08;通用配置&#xff09;3.4.2 SCHEDULING&#xff0…

linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...

作业一&#xff1a;1)将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖)cat /etc/passwd /etc/group > /1.txt2)将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加)cat /etc/passwd /etc/shadow >> /2.txt3)将/1.txt、/2.…

sqlserver大数据表操作慢_架构师必看!操作日志系统搭建秘技

​在Java开发中&#xff0c;我们经常会遇到一个棘手的问题&#xff1a;记录用户的操作行为。某些操作是相对简单的&#xff0c;我们可以逐条记录。但是某些操作行为却很难记录&#xff0c;例如编辑操作。在某一次操作中&#xff0c;用户可能编辑了对象A的几个属性&#xff0c;而…