Skip to content

Commit

Permalink
Fix typos
Browse files Browse the repository at this point in the history
  • Loading branch information
zither committed Jan 17, 2015
1 parent 95651d4 commit 27ef81a
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 9 deletions.
4 changes: 2 additions & 2 deletions book/chapt05/05-07-class-object.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -168,14 +168,14 @@ zend_objects_new函数会初始化对象自身的相关信息,包括对象归
这个函数的流程是这样的:

* 第一步,获取对象的属性,如果存在,转第二步;如果没有相关属性,转第三步
* 第二步,从对象的properties查找是否存在与名称对应的属性存在,如果存在返回结果,如果不存在,转第三步
* 第二步,从对象的properties查找是否存在与名称对应的属性,如果存在返回结果,如果不存在,转第三步
* 第三步,如果存在__get魔术方法,则调用此方法获取变量,如果不存在,转第四步
* 第四步,如果type=BP_VAR_IS,返回 &EG(uninitialized_zval_ptr),否则报错

成员变量的设置最终调用的是zend_std_write_property函数。整个执行流程如下:

* 第一步,获取对象的属性,如果存在,转第二步;如果没有相关属性,转第四步
* 第二步,从对象的properties查找是否存在与名称对应的属性存在,如果存在,转第三步,如果不存在,转第四步
* 第二步,从对象的properties查找是否存在与名称对应的属性,如果存在,转第三步,如果不存在,转第四步
* 第三步,如果已有的值和需要设置的值相同,则不执行任何操作,否则执行变量赋值操作,
此处的变量赋值操作和常规的变量赋值类似,有一些区别,这里只处理了是否引用的问题
* 第四步,如果存在__set魔术方法,则调用此方法设置变量,如果不存在,转第五步
Expand Down
10 changes: 5 additions & 5 deletions book/chapt05/05-09-spl.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ SPL的代码结构和其它扩展一样,一个主文件spl.c,它包括模块

### 标准异常类

SPL提供了一系列的标准异常类,包括逻辑异常和运行时异常逻辑异常下又包括函数调用失败异常、数据域异常、参数异常、长度异常等子类;
SPL提供了一系列的标准异常类,包括逻辑异常和运行时异常。逻辑异常下又包括函数调用失败异常、数据域异常、参数异常、长度异常等子类;
运行时异常包括越界异常、溢出异常、范围异常(通常这里是指一个算术错误)、下溢异常(如当从一个空集合中移除一个元素)和不确定值异常。
以上的分类也在代码层面体现,在spl_exceptions的模块初始化函数中,这两类被明显分开。
这是业务在代码中的一种体现,我们在实现工作中的需求时,一个大的需求在分解后可能需要按函数或按类,
甚至按文件进行物理上的分隔。SPL的异常类只是一个壳,他们都是从Exception继承下来的,所有的方法完全继承自Exception类。
如果我们需要在项目中应用SPL的异常类,可以有选择的继承这些类,当有特定的需求需要实现时,可以覆盖这些方法继承自Exception类的方法
如果我们需要在项目中应用SPL的异常类,可以有选择的继承这些类,当有特定的需求需要实现时,可以覆盖这些类继承自Exception类的方法

[Exception](http://cn2.php.net/manual/zh/class.exception.php)是PHP中所有异常的基类,
自从PHP5.1.0开始引入,自此,我们可以以面向对象的方式处理错误。
Expand Down Expand Up @@ -60,9 +60,9 @@ message表示异常的消息内容,其对应getMessage方法。message是自
对于PHP内核来说,创建Exception对象时,有无message参数会影响 getMessage方法的返回值,
以及显示异常时是否有with message %s等字样。message成员变量的作用是为了让用户更好的定义说明异常类。

code表示异常代码,其对应getCode方法。和meesage成员变量一样,code也是用户自定义的内容,默认为0。
code表示异常代码,其对应getCode方法。和message成员变量一样,code也是用户自定义的内容,默认为0。

file表示抛出异常的文件名,其对应getFile方法,返回值为执行文件的文件名,在PHP内核中存储此文件名的字段为 EG(active_op_array)->filename
file表示抛出异常的文件名,其对应getFile方法,返回值为执行文件的文件名,在PHP内核中存储此文件名的字段为 EG(active_op_array)->filename
此字段的值在生成一个opcode列表时,PHP的内核会将此前正在编译文件的文件名赋值给opcode的filename属性,
如生成一个函数的op_array,在初始化op_array时,会执行上面所说的赋值操作,这里的赋值是通过编译的全局变量来传递的。
当代码执行时,EG(active_op_array)表示正在执行的opcode列表。
Expand Down Expand Up @@ -125,7 +125,7 @@ SplFixedArray类提供了数组的主要功能。
在获取数组元素值时,如果所传递的不是整数的下标,则抛出RuntimeException: Index invalid or out of range异常。
与获取元素末端,在设置数组元素时,如果所传递的不是整数的下标,会抛出RuntimeExceptione异常。
如果所设置的下标已经存在的值,则会先释放旧值的空间,然后将新的值指向旧值的空间。
当通过unset函数翻译数组中的元素时,如果参数指定的下标存在值,则释放值所占的空间,并设置为NULL。
当通过unset函数释放数组中的元素时,如果参数指定的下标存在值,则释放值所占的空间,并设置为NULL。

SplObjectStorage类实现了对象存储映射表,应用于需要唯一标识多个对象的存储场景。
在PHP5.3.0之前仅能存储对象,之后可以针对每个对象添加一条对应的数据。
Expand Down
4 changes: 2 additions & 2 deletions book/chapt05/05-10-summary.markdown
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# 第十节 小结

编程语言的实现是一门非常复杂的工程。包括语法实现,对象模型。流程结构等等的设计和实现。
在面向对象语言中对象模型是尤为重要的,PHP的对象模型比较常规和Java/C++类似。
在面向对象语言中对象模型是尤为重要的,PHP的对象模型比较常规和Java/C++类似。

本章从面向对象的概念开始,依次介绍了类在PHP内核中的内存表示
本章从面向对象的概念开始,依次介绍了类在PHP内核中的内存表示,
以及抽象类,接口,final类在实现级别上的异同。随后介绍了类的成员变量,
成员方法的内部存储方式。面向对象中的继承,封装和抽象的实现。

Expand Down

0 comments on commit 27ef81a

Please sign in to comment.