Skip to content

Commit

Permalink
fix links.
Browse files Browse the repository at this point in the history
  • Loading branch information
walu committed Dec 23, 2012
1 parent 3cd06b2 commit 7826efe
Show file tree
Hide file tree
Showing 10 changed files with 51 additions and 64 deletions.
10 changes: 5 additions & 5 deletions 1.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# 1 PHP的生命周期

## 目录
* 1. [让我们从SAPI开始](1.1.html)
* 2. [PHP的启动与终止](1.2.html)
* 3. [PHP的生命周期](1.3.html)
* 4. [线程安全](1.4.html)
* 5. [小结](1.5.html)
* 1. [让我们从SAPI开始](1.1.md)
* 2. [PHP的启动与终止](1.2.md)
* 3. [PHP的生命周期](1.3.md)
* 4. [线程安全](1.4.md)
* 5. [小结](1.5.md)

在平常的Web环境中,我们并不需要单独启动PHP,它一般都会作为一个模块自动加载到web-server里面去,如apache加载的php5.so。只要我们启动了web-server,被一起加载的php便会和服务器一起解析被请求的php脚本。

Expand Down
13 changes: 6 additions & 7 deletions 10.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
# 10 PHP中的面向对象(一)

<ul class="catalog">
<li> [1. zend_class_entry](ch10.1.html) </li>
<li> [2. 定义一个类](ch10.2.html) </li>
<li> [3. 定义一个接口](ch10.3.html) </li>
<li> [4. 类的继承与接口的实现](ch10.4.html) </li>
<li> [5. 小结](ch10.5.html) </li>
</ul>
* [1. zend_class_entry](10.1.md)
* [2. 定义一个类](10.2.md)
* [3. 定义一个接口](10.3.md)
* [4. 类的继承与接口的实现](10.4.md)
* [5. 小结](10.5.md)

面向对象的概念这里就不再叙述了。原书中把这一部分的知识分开到PHP4和PHP5中来讲的,这里我做了大幅的调整,几乎是进行了重写。前一部分主要介绍了如何定义类、接口等一些声明类的操作。后一部分主要介绍了对象的使用等一些对实例的操作。


Expand Down
10 changes: 5 additions & 5 deletions 11.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# 11 PHP中的面向对象(二)

<ul class="catalog">
<li> [1. 生成对象的实例与调用方法](ch11.1.html) </li>
<li> [2. 读写对象的属性](ch11.2.html) </li>
<li> [3. 小结](ch11.3.html) </li>
</ul>

* [1. 生成对象的实例与调用方法](11.1.md)
* [2. 读写对象的属性](11.2.md)
* [3. 小结](11.3.md)

上一章里,我们看了一下如何在PHP扩展里定义类与接口,那这一章里我们将入手一下如何在PHP扩展中操作类的实例————对象。
PHP语言中的面向对象其实是分为三个部分来实现的,class、object、refrence。class就是我们所说的类,可以直观的理解为前面章节中所描述的zend_class_entry。object就是实际的对象。每一个zval并不直接包含具体的object,而是通过一个索引--refrence与其联系。也就是说,每个class都有很多个object实例,并把他们统一的放在一个数组里,每个zval只要记住自己相应的key就行了。如此一来,我们在传递zval时候,实际上传递的是一个索引,而不是内存中具体的对象数据。

Expand Down
11 changes: 4 additions & 7 deletions 3.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
# 3 内存管理

<ul class="catalog">
<li><ul>
<li> [1. 内存管理](ch3.1.html) </li>
<li> [2. 引用计数](ch3.2.html) </li>
<li> [3. 总结](ch3.3.html) </li>
</ul></li>
</ul>
* [1. 内存管理](3.1.md)
* [2. 引用计数](3.2.md)
* [3. 总结](3.3.md)

脚本语言与编译型语言最根本的区别可能就在内存管理上。但这并不限于脚本语言,现在越来越多的语言不再允许用户直接操作内存,而由虚拟机来代替用户负责内存的分配及回收,如C#、Java、PHP等。


Expand Down
15 changes: 6 additions & 9 deletions 4.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
# 4 动手编译PHP

<ul class="catalog">
<li><ul>
<li> [1. 编译前的准备](ch4.1.html) </li>
<li> [2. PHP编译前的config配置](ch4.2.html) </li>
<li> [3. Unix/Linux平台下的编译](ch4.3.html) </li>
<li> [4. 在Win32平台上编译PHP](ch4.4.html) </li>
<li> [5. 小结](ch4.5.html) </li>
</ul></li>
</ul>
* [1. 编译前的准备](4.1.md)
* [2. PHP编译前的config配置](4.2.md)
* [3. Unix/Linux平台下的编译](4.3.md)
* [4. 在Win32平台上编译PHP](4.4.md)
* [5. 小结](4.5.md)

到现在为止,你肯定应该在至少一种平台上安装过PHP,并用它来开发你的web程序了。你可能下载的win32平台下的iis或者apache对应的安装包,也可能使用了由第三方提供的linux、bsd等平台下的二进制包。而现在,则是我们动手自己编译PHP的时候了。这也是我们动手开发第一个扩展的最后一项准备知识了。
强烈推荐你在Linux下调试本章的程序,因为win部分我还没有翻译,:-)

Expand Down
14 changes: 5 additions & 9 deletions 5.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
# 5 Your First Extension

<ul class="catalog">
<li><ul>
<li> [1. 一个扩展的基本结构](ch5.1.html) </li>
<li> [2. 编译我们的扩展](ch5.2.html) </li>
<li> [3. 静态编译](ch5.3.html) </li>
<li> [4. 编写函数](ch5.4.html) </li>
<li> [5. 小结](ch5.5.html) </li>
</ul></li>
</ul>
* [1. 一个扩展的基本结构](5.1.md)
* [2. 编译我们的扩展](5.2.md)
* [3. 静态编译](5.3.md)
* [4. 编写函数](5.4.md)
* [5. 小结](5.5.md)
每一个PHP扩展都至少需要两个文件:一个配置文件和一个源文件。配置文件用来告诉编译器应该编译哪几个文件,以及编译本扩展是否需要的其它lib。


Expand Down
11 changes: 6 additions & 5 deletions 6.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
# 6 函数返回值

本章目录:<ul class="catalog">
<li> [1. 一个特殊的参数:return_value](ch6.1.html) </li>
<li> [2. 引用与函数的执行结果](ch6.2.html) </li>
<li> [3. 小结](ch6.3.html) </li>
</ul>
本章目录

* [1. 一个特殊的参数:return_value](6.1.md)
* [2. 引用与函数的执行结果](6.2.md)
* [3. 小结](6.3.md)

PHP语言中函数的返回值是通过return来完成了,就像下面的程序:
````php
<?php
Expand Down
9 changes: 4 additions & 5 deletions 7.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# 7 函数的参数

<ul class="catalog">
<li> [1. zend_parse_parameters](ch7.1.html) </li>
<li> [2. Arg Info 与类型绑定](ch7.2.html) </li>
<li> [3. 小结](ch7.3.html) </li>
</ul>
* [1. zend_parse_parameters](7.1.md)
* [2. Arg Info 与类型绑定](7.2.md)
* [3. 小结](7.3.md)

前面的章节我们look了一下如何在扩展中定义函数,它们的实现大都比较简单,但是在实际工作中,肯定会碰到函数接收参数的问题,而它就是我们这一章要讲解的内容。


Expand Down
11 changes: 5 additions & 6 deletions 8.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
# 8 使用HashTable与{数组}

<ul class="catalog">
<li> [1. 数组(C中的)与链表](ch8.1.html) </li>
<li> [2. 操作HashTable的API](ch8.2.html) </li>
<li> [3. 在内核中操作PHP语言中数组](ch8.3.html) </li>
<li> [3. 小结](ch8.4.html) </li>
</ul>
* [1. 数组(C中的)与链表](8.1.md)
* [2. 操作HashTable的API](8.2.md)
* [3. 在内核中操作PHP语言中数组](8.3.md)
* [3. 小结](8.4.md)

在C语言中,我们可以自定义各种各样的数据结构,用来把很多数据保存在一个变量里面,但是每种数据结构都有自己的优缺点,PHP内核规模如此庞大,是否已经找到了一些非常棒的解决方法呢?


Expand Down
11 changes: 5 additions & 6 deletions 9.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
# 9 PHP中的资源类型

<ul class="catalog">
<li> [1. 复合类型的数据——{资源}](ch9.1.html) </li>
<li> [2. Persistent Resources](ch9.2.html) </li>
<li> [3. {资源}自有的引用计数](ch9.3.html) </li>
<li> [4. 小结](ch9.4.html) </li>
</ul>
* [1. 复合类型的数据——{资源}](9.1.md)
* [2. Persistent Resources](9.2.md)
* [3. {资源}自有的引用计数](9.3.md)
* [4. 小结](9.4.md)

截止到现在,我们已经熟悉了PHP语言中的字符串、数字、布尔以及数组类型的数据类型了,接下来,我们将接触另外一种PHP独特的数据类型——资源(Resource)。


Expand Down

0 comments on commit 7826efe

Please sign in to comment.