《Hack与HHVM权威指南》——1.5 规则

本节书摘来自华章出版社《Hack与HHVM权威指南》一书中的第1章,第1节,作者 Owen Yamauchi,更多章节内容可以访问“华章计算机”公众号查看。

1.5 规则

类型检查器所执行的规则非常直截了当,它的错误消息被设计成更清晰的解释错误,并提出可能的解决方案。在这一节的学习中,我们将会看到一些更加微妙的案例。

时间: 2024-10-22 20:09:46

《Hack与HHVM权威指南》——1.5 规则的相关文章

《Hack与HHVM权威指南》——1.5.3 属性值初始化

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1.5.3节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 1.5.3 属性值初始化 为了维护类型安全,类型标注过的属性在初始化时,无论是严格模式还是局部模式,类型检查器会强加一些规则.首要目标就是确保属性值在没有初始化为正确类型的值之前,不能被读取. 对于静态的属性值,规则非常简单:任何不可为空的(non-nullable)的静态属性值都必须有一个初始化值.没有显式初

《Hack与HHVM权威指南》——1.5.6 在switch语句中的越界

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1.5.6节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 1.5.6 在switch语句中的越界 在switch语句中有从一个分支不小心越界到另外一个分支的常见错误.Hack添加了一条规则来捕获这种错误.下面将展示一个案例,从一个case分支越界到另外一个分支将会引发一个错误,除非第一个分支是空的: switch ($day) { case 'sun': echo '

《Hack与HHVM权威指南》——1.5.2 覆盖方法的类型

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1.5.2节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 1.5.2 覆盖方法的类型 在Hack的代码之间,继承是更加复杂的相互关系中的一种.这复杂性主要来自于当继承关系被创建时,继承和被继承的代码之间的分离现象.举例来说,如果你有个类型标注为SomeClass的对象并可以调用这个对象的某个方法,那么你可以调用继承自SomeClass的任何类的某个方法.这个调用仍然需

《Hack与HHVM权威指南》——1.3.3 属性

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1.3.3节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 1.3.3 属性 在属性声明之中(不管是静态的还是非静态的),类型标注总是直接出现在属性名之前:class C { public static int $logging_level = 2; private string $name;}初始变量值是被支持的(就像范例中的2被赋值给$logging_level一样

《Hack与HHVM权威指南》——第1章 类型检查

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 第1章 类型检查 类型检查器是Hack语言的标志特性,它对Hack程序静态地进行分析(不用运行它们),并且能够检查很多种错误.这就能够在程序开发初期尽量避免bug,并且使程序更容易阅读和理解.为了增强类型检查器的能力,Hack语言允许编程人员显式地在程序体中标注某些变量值的类型,比如函数参数.函数返回值和属性值,类型检

《Hack与HHVM权威指南》——1.7.1 提炼nullable类型到non-nullable类型

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 1.7.1 提炼nullable类型到non-nullable类型 null检查语句在从空值(nullable)的类型到非空值(non-nullable)类型的转变中经常用到.下面是个通过了类型检查器检查的示例. function takes_string(string $str) { // ... } functio

《Hack与HHVM权威指南》——1.5.1 使用超级全局变量

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1.5.1节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 1.5.1 使用超级全局变量 超级全局变量是在每个代码范围内都存在的全局变量,不需要使用global语句即可使用.这些在运行环境中特殊存在的变量一共有9个,分别是: $GLOBALS $_SERVER $_GET $_POST $_FILES $_COOKIE $_SESSION $_REQUEST $_ENV

《Hack与HHVM权威指南》——1.4 Hack的类型系统

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1.4节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 1.4 Hack的类型系统 Hack提供了一系列强有力的方法来描述类型,在PHP最基本的布尔型.整型.字符串型.数组等类型系统的基础上,添加了很多新的方式来结合它们,并且使之更富有表现力. 原始类型 这里有和PHP一样的原始类型:bool.int.float.string.array和resource,这些都是合法

《Hack与HHVM权威指南》——第1章 类型检查1.7 类型提炼

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1.7节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 1.7 类型提炼 假设你有个?string类型的值,而且准备把这个值传递给一个参数类型为string的函数.那么你怎么把一个类型(?string)转化为另外一个类型(string)呢?或者假设你有个object类型的值,它可能实现或没有实现Polarizable接口.同时,如果它实现了这个接口,你还希望调用这个ob