目录

关键字:数组概念
传统上把数组(array)定义为一组有某种共同特性的元素,这里的共同特性包括相似性(车模、棒球队、水果类型等)和类型(例如所有元素都是字符串或整数)等,每个元素由一个特殊的标识符来区分,这称为健(key)。请注意,上面这句话中的传统上一词,因为现在可以摒弃这种定义,数组结构中可以包括完全无关的元素。PHP则更进一步,数组中的元素甚至可以不属于同一种类型。 了解更多
关键字:array()
数组是PHP最重要的数据结构之一,数组在PHP的用处很广泛。与其他很多语言的数组实现方式不同,PHP不需要在创建数组时指定其大小。事实上,因为PHP是一种松散类型的语言,所以甚至不需要在使用数组前先行声明,尽管没有限制,PHP仍提供了正式和非正式的数组声明方法。两个方法各有优点,都值得学习。本节将分别讨论这两种方法,首先来介绍非正式的方法。 了解更多
关键字:添加与删除元素
有时候我们需要扩展一个数组,或者删掉数组的一部分,PHP为扩展和缩小数组提供了一些函数。对于那些希望模仿各种队列实现(FIFO、LIFO)的程序员来说,这些函数可以提供便利。顾名思义,从这些函数的函数名(push、pop、shift和unshift)就清楚地反映出其作用。 了解更多
关键字:查找元素
查找、筛选与搜索数组元素是数组操作的一些常见功能。下面来介绍一下几个相关的函数。in_array()函数在一个数组汇总搜索一个特定值。如果在一个数组中找到一个指定的键,函数array_key_exists()返回true,。array_search()函数在一个数组中搜索一个指定的值。array_keys()函数返回一个数组,其中包含所搜索数组中找到的所有键。 了解更多
关键字:遍历数组
使用数组的过程中经常要遍历数组。通常需要遍历数组并获得各个键或值(或者同时获得键和值),所以毫不奇怪,PHP为此提供了一些函数来满足需求。许多函数能完成两项任务,不仅能获取当前指针位置的键或值,还能将指针移向下一个适当的位置。 了解更多
关键字:数组指针
要使用数组中的元素,就需要数组的定位。定位的实现需要借助数组指针来完成。PHP中有很多函数可以移动数组指针。下面将给大家介绍几个。next()函数返回紧接着放在当前数组指针下一个位置的数组值。prev()函数返回位于当前指针前一个位置的数组值。 了解更多
关键字:数组排序
对一个数组的元素排序是很常见的编程任务,比如顺序、逆序,还有排序是否保持元素的键值对问题,下面开始研究下这些问题。sort()函数对数组进行排序,各元素按值由低到高的顺序排列。rsort()函数与sort()函数相同,只不过它以相反的顺序(降序)对数组进行元素排序。 了解更多
关键字:array_merge(),array_combine()
array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。array_combine()函数会得到一个新数组,它由一组提交的键和对应的值组成。 了解更多
关键字:array_slice()与array_splice()的使用
array_slice()函数将返回数组中的一部分,从键offset开始,到offset+length位置结束。array_splice()函数会删除数组中从offset开始到offset+length 结束的所有元素,并以数组的形式返回所删除的元素。 了解更多
关键字:array_intersect(),array_diff()
array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。函数array_diff()返回出现在第一个数组中但其他输入数组中没有的值。这个功能与array_intersect()相反。 了解更多
关键字:继承
人们习惯于按有组织的层次关系思考问题。因此,毫不奇怪,继承这个概念广泛应用于日常生活的很多方面。很多系统都相当依赖于层次概念,公司管理结构、美国税务系统和我们对动植物世界的研究体系只是其中的几个例子。因为面向对象程序设计的前提是:对于要用代码实现的真实世界环境,能够用更接近人的方式对这个环境的性质和行为进行建模,所以还能够表示层次关系就非常有意义。 了解更多
关键字:构造函数继承
关于类继承,总有一个常见的问题,这就是构造函数的使用。子类实例化时会执行父类的构造函数吗?如果是这样,倘若子类也有自己的构造函数会怎么样?子类构造函数在父类构造函数之后执行,还是会覆盖父类的构造函数?构造函数的继承节省的是代码的重写,而不是方法的声明,也就是说,在父类中声明的构造函数必须再在子类中声明一次,其实,这也是一个重写的过程。 了解更多
关键字:接口
接口定义了实现某种服务的一般规范,声明了所需的函数和常量,但不指定如何实现。之所以不给出实现的细节,是因为不同的实体可能需要用不同的方式来实现公共的方法定义。关键是要建立必须实现的一组一般原则,只有满足了这些原则才能说实现了这个接口。接口中不定义类成员!类成员的定义完全交给实现类来完成。 了解更多
关键字:接口
上一节介绍了PHP的接口,这里来看看如何更好地使用这个OOP特性。通过implements来实现一个接口时,只需要写出抽象方法,不需要给出具体实现,否则将会如下报错:Fatal error: Interface function User::getName() cannot contain body。PHP还可以实现多个接口,一个类可以实现多个接口。 了解更多
关键字:抽象类
抽象类是不能实例化的类,只能作为由其他类继承的基类。例如,考虑一个名为Media的类,它用来描述各种公开资料的共同性质,因为Media不表示真实的实体,而是一些相似的泛化表示,所以你不会希望直接对其进行实例化。为确保这种情况不会发生,可以声明这个类是抽象的。然后再由各种派生的Media类继承此抽象类,这保证了子类直接的一致性,因为在抽象类中定义的所有方法都必须在子类中实现。 了解更多
关键字:命名空间
随着你的类库的不断扩展,最后很可能会遇这样一种情况:两个类库使用了相同的类名。不过有史以来,由于要求每个类有唯一的类名,所以不可能在同一个PHP脚本中使用两个同名的类。随着你的PHP代码库的增长,对之前定义的函数和类名进行修改时风险也更高了,当你试图增加第三方组件或插件时问题更严重,如果存在两个或两个以上的代码集实现了一个“Database”和“User”类会怎么样? 了解更多
关键字:类
日常环境由无数实体组成:植物、人群、交通工具、食物……实在是太多了,光是把它们列出来都要花上几个小时的时间。每个实体都由一组性质和行为来定义。例如,一个交通工具可以定义有颜色、轮胎数、制造商、型号和容量等性质,并定义有停止、前进、转弯和鸣笛等行为。在OOP术语中,实体的性质和行为的具体定义称为类(class)。 了解更多
关键字:对象
类提供了一个基础,可以在此基础上创建实体(即这个类所建模的实体)的特定实例,这些特定实例称为对象(object)。例如,员工管理应用程序可能包括一个EmPloyee 类。然后可以用这个类来创建和维护特定实例,比如Gonn和Sally。根据预定义的类创建对象常称为类的实例化(class instantiation)。 了解更多
关键字:字段
类就像是一个模板,它定义了么个概念或真实事物的性质和行为。类提供了一个基础,可以在这个基础上创建实体(即这个类所建模的实体)的特定实例,这些特定实例称为对象。字段是用于描述类的么个方面的性质。字段是用于描述类的某个方面的性质。它与一般的PHP 变量非常相似,只是有一些细微的差别,本节将介绍这些差别。这一节还将讨论如何声明和使用字段,下一节则介绍如何使用字段的作用域来进行访问限制。 了解更多
关键字:字段
总的来说,对属性或方法的访问控制,是通过在前面添加关键字 public、protected 或 private 来实现的。由 public 所定义的类成员可以在任何地方被访问;由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);而由 private 定义的类成员则只能被其所在类访问。 了解更多
关键字:字段
由 private 定义的类成员则只能被其所在类访问。但是下面我们写一个小程序,可以在类的外部访问该 private 字段。php类中如有字段domain是私有字段,实例化后也可以直接访问该字段,不知道为什么要这样做?有什么优点?既然是私有字段,就不应该能够直接访问,应该只能通过类中的方法来访问(不是通过__get及__set)。 了解更多
关键字:get与set
OOP提供了很多强大的特性,属性就是一个很有说服力的例子,通过强制在方法中访问和操作字段,一方面能保护字段,同时还允许像访问公共字段一样访问数据。这些方法称为访问方法和修改方法,或非正式地称为获取方法和设置方法,它们将会分别在访问或操作字段时自动触发。 了解更多
关键字:常量
在类中可以定义常量(constant),用来表示不会改变的值。我们使用const定义一个常量,定义的这个常量不能被改变。在PHP5中const定义的常量与定义变量的方法不同,不需要加$ 修饰符。 const PI = 3.14; 这样就可以。而使用const 定义的常量名称一般都大写,这是一个约定,在任何语言中都是这样。如果定义的常量由多个单词组成,使用下划线"_"连接,这也是约定。 了解更多
关键字:方法
方法(method)与函数非常类似,只不过方法是用来定义类的行为的。与函数一样,方法可以接受输入参数,可以向调用者返回一个值。方法的调用也与函数相同,只是在方法签名要加上调用方法的对象的名称。类的成员方法从本质上来讲也是一种函数,所以其存储结构也和常规函数一样,存储在zend_function结构体中。 了解更多
关键字:作用域
PHP支持6种方法作用域:public、private、protected、abstract、final和static。公共方法可以在任何位置任何时间访问。标记为private的方法只能在类内部使用,不能由实例化的对象调用,也不能由类的子类使用。标记为protected的类方法只能在该类及其子类中使用。抽象方法很特殊,在在父类中声明,但在子类中实现。标记为final的方法可以防止被子类覆盖。 了解更多
关键字:构造函数
通常,你可能希望在创建和撤销对象时执行一些任务。例如,可能希望立即为刚实例化的对象的多个字段赋值。但是,如果必须手工这样做,那么几乎肯定会忘记执行本该完成的任务。面向对象程序设计经过漫长的发展道路,终于可以通过提供一些特殊方法来消除出现这些错误的可能性。这些方法称为构造函数(constructor)和析构函数(destructor)。 了解更多
关键字:析构函数
与构造方法对应的就是析构方法,析构方法允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件、释放结果集等。析构函数不能带有任何参数。在PHP4中,尽管脚本执行结束后对象会自动撤销,但不太可能自定义这个清除过程。随着PHP5中引入了析构函数,这种限制就不复存在了。 了解更多
关键字:静态成员
静态成员是一种类变量,可以把它看成时属于整个类而不是属于类的某个实例。与一般的实例变量不同的是,静态成员只保留一个变量值,而这个变量值对所有的实例都是有效的,也就是说,所有的实例共享这个成员。$this只表示类的当前实例,而 self:: 表示的是类本身,在类之外的代码中不能使用这个操作符,而且它不能识别自己在继承树层次结构中的位置。 了解更多
关键字:instanceof
在某些情况下,我们希望确定某个类是否特定的类型,或者是否实现了特定的接口。instanceof操作符非常适合完成这个任务。instanceof操作符检查三件事情:实例是否某个特定的类型,实例是否从某个特定的类型继承,实例或者他的任何祖先类是否实现了特定的接口。 了解更多
关键字:辅助函数
有时候我们需要对类进行除了实例化外的一些操作,比如检查类是否存在,看看类有哪些字段、方法等。PHP自带了很多函数可以用来帮助开发人员管理和使用类库。本节主要介绍这些函数。 了解更多