关闭

80-定义接口

80-定义接口定义一个接口还是很方便的,我先给出一个PHP语言中的形式。 那它在扩展中的实现是这样的。zend_class_entry *i_myinterface_ce;static zend_function_entry i_myinterface_method[]=...
阅读(549) 评论(0)

79-命名空间

79-命名空间在维基百科中,对命名空间的定义是: 命名空间(英语:Namespace)表示标识符(identifier)的上下文(context)。一个标识符可在多个命名空间中定义, 它在不同命名空间中的含义是互不相干的。在编程语言中,命名空间是一种特殊的作用域,它包含了处于该作用域内的标识符, 且本身也用一个标识符来表示,这样便将一系列在逻辑上相关的标识符用一个标识符组织了起来。 函数和类的作用域...
阅读(482) 评论(0)

78-对象属性读写

78-对象属性读写这一节主要描述与对象属性有关的东西。有关如何对它进行定义的操作我们已经在上一章中描述过了,这里不再叙述,只讲对其的操作。读取对象的属性ZEND_API zval *zend_read_property(zend_class_entry *scope, zval *object, char *name, int name_length, zend_bool silent TSRMLS...
阅读(848) 评论(0)

77-创建对象实例

77-创建对象实例为了操作一个对象,我们需要先获取这个对象的实例,而这有肯定会涉及调用对象的构造方法。首先我们先了解下一个object在PHP内核中到底是如何实现的。typedef struct _zend_object_value { zend_object_handle handle; zend_object_handlers *handlers; } zend_object_v...
阅读(713) 评论(0)

76-对象

76-对象对象是我们可以进行研究的任何事物,世间万物都可以看作对象。它不仅可以表示我们可以看到的具体事物, 也可以表示那些我们看不见的事件等。对象是一个实体,它具有状态,一般我们用变量来表示, 同时它也可以具有操作行为,一般用方法来表示,对象就是对象状态和对象行为的集合体。在之前我们很多次的说到类,对于对象来说,具有相同或相似性质的对象的抽象就是类。 因此,对象的抽象是类,类的具体化就是对象,我们常...
阅读(845) 评论(0)

75-保留类与特殊类

75-保留类与特殊类在面向对象语言中,都会内置一些语言内置提供的基本功能类,比如JavaScript中的Array,Number等类, PHP中也有很多这种类,比如Directory,stdClass,Exception等类,同时一些标准扩展比如PDO等扩展中也会定义一些类, PHP中类是不允许重复定义的,所以在编写代码时不允许定义已经存在的类。同时PHP中有一些特殊的类:self,static和p...
阅读(770) 评论(0)

74-魔术函数与延迟绑定

74-魔术函数与延迟绑定PHP中有一些特殊的函数和方法,这些函数和方法相比普通方法的特殊之处在于:用户代码通常不会主动调用, 而是在特定的时机会被PHP自动调用。在PHP中通常以”“打头的方法都作为魔术方法, 所以通常不要定义以”“开头的函数或方法。 例如:__autoload()函数, 通常我们不会手动调用这个函数, 而如果在代码中访问某个未定义的方法, 如过已经定义了__autoload()函数...
阅读(625) 评论(0)

73-继承,多态与抽象类

73-继承,多态与抽象类继承继承是一种关联类的层次模型,它可以建立类之间的关系,并实现代码重用,方便系统扩展。 继承提供了一种明确表述共性的方法,是一个新类从现有的类中派生的过程。 继承产生的新类继承了原始类的特性,新类称为原始类的派生类(或子类), 而原始类称为新类的基类(或父类)。派生类可以从基类那里继承方法和变量, 并且新类可以重载或增加新的方法,使之满足自己的定制化的需要。PHP中使用ext...
阅读(768) 评论(0)

72-访问控制

72-访问控制面向对象的三大特性(封装、继承、多态),其中封装是一个非常重要的特性。封装隐藏了对象内部的细节和实现, 使对象能够集中而完整的描述并对应一个具体的事物, 只提供对外的访问接口,这样可以在不改变接口的前提下改变实现细节,而且能使对象自我完备。 除此之外,封装还可以增强安全性和简化编程。 在面向对象的语言中一般是通过访问控制来实现封装的特性。 PHP提供了public、protected及...
阅读(642) 评论(0)

71-类的定义

71-类的定义在这一节中,我们正式的定义一个类。首先我给出PHP语言的实现:<?php class myclass { public $public_var; private $private_var; protected $protected_var; public static $static_var; public function __construct(...
阅读(668) 评论(0)

70-类的原型zend_class_entry

70-类的原型zend_class_entryzend_class_entry是内核中定义的一个结构体,是内核实现PHP语言中类与对象的一个非常基础、关键的结构类型。他就相当于我们定义的类的原型。如果我们想获得一个名字为myclass的类该怎么做呢?首先我们定义一个zend_class_entry变量,并为它设置名字,最后注册到runtime中去。zend_class_entry *myclass_...
阅读(763) 评论(0)

69-类的成员方法

69-类的成员方法成员方法从本质上来讲也是一种函数,所以其存储结构也和常规函数一样,存储在zend_function结构体中。 对于一个类的多个成员方法,它是以HashTable的数据结构存储了多个zend_function结构体。 和前面的成员变量一样,在类声明时成员方法也通过调用zend_initialize_class_data方法,初始化了整个方法列表所在的HashTable。 在类中我们如...
阅读(624) 评论(0)

68-类的成员变量

68-类的成员变量在上一小节,我们介绍了类的结构和声明过程,从而,我们知道了类的存储结构,接口抽象类等类型的实现方式。 在本小节,我们将介绍类的成员变量和成员方法。首先,我们看一下,什么是成员变量,什么是成员方法。类的成员变量在PHP中本质上是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的。 类的成员变量也称为成员属性,它是现实世界实体属性的抽象,是可以用来描述对象状态的数据。类...
阅读(559) 评论(0)

67-类的结构和实现

67-类的结构和实现面向对象编程中我们的编程都是围绕类和对象进行的。那在PHP内部类是怎么实现的呢? 它的内存布局以及存储是怎么样的呢?继承、封装和多态又是怎么实现的呢?类的结构首先我们看看类是什么。类是用户定义的一种抽象数据类型,它是现实世界中某些具有共性事物的抽象。 有时我们也可以理解其为对象的类别。类也可以看作是一种复合型的结构,其需要存储多元化的数据, 如属性、方法、以及自身的一些性质等。类...
阅读(622) 评论(0)

66-面向对象开篇

66-面向对象开篇面向对象是一种编程范式,它将对象作为程序的基本单元,将程序和数据封装起来, 以此来提高程序的重用性、灵活性和可扩展性。目前很多语言都支持面向对象编程,既然对象对象是一种范式,其实这就和具体的编程语言没有直接关系, 只不过很多语言将这个范式作为语言的基本元素,使用C语言也能够进行面向对象编程。面向对象的程序设计中包含: 类。类是具体事物的抽象。通常类定义了事物的属性和所能完成的工作。...
阅读(528) 评论(0)
128条 共9页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:169531次
    • 积分:2876
    • 等级:
    • 排名:第12841名
    • 原创:124篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类