- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PHP面向对象程序设计
6.6.2 通过变量引用类 自PHP 5.3.0起,可以通过变量来引用类(动态调用类),例如: ?php class MyClass { const CONST_VALUE = A constant value; } ? $classname = MyClass; echo $classname::CONST_VALUE; //输出A constant value ? echo MyClass::CONST_VALUE; //输出A constant value ? 6.6.3 引用静态调用的类 举个例子说明,使用self:: 或者__CLASS__对当前类的静态引用,取决于定义当前方法所在的类: ?php class A { public static function who() { echo __CLASS__; } public static function test() { self::who(); } } ? class B extends A { public static function who() { echo __CLASS__; } } ? B::test(); ? 以上代码会输出:A。 6.6.3 引用静态调用的类 “后期静态绑定”使用已经预留的static关键字表示运行时最初调用的类,能够让用户在上述例子中调用test()时引用的类是B而不是A,代码如下: ?php class A { public static function who() { echo __CLASS__; } public static function test() { static::who(); //?后期静态绑定从这里开始 } } ? class B extends A { public static function who() { echo __CLASS__; } } ? B::test(); ? 此时的代码输出变为:B。 6 . 7 实例——设计一个学生管理类 【例6.1】 设计一个学生管理类,用于获取学生信息。 新建EX6_1.php文件,输入代码。 运行程序,在页面上输入学号和姓名、选择性别,单击【显示】按钮,执行结果如图6.1所示。 ?第6章 PHP面向对象程序设计 6 . 1 基 本 概 念 6 . 2 PHP中的类 6 . 3 类 的 继 承 6 . 4 抽象类与接口 6 . 5 类的魔术方法 6 . 6 类型判断与引用 6 . 7 实例——设计一个学生管理类 6 . 1 基 本 概 念 1.封装 封装是将数据和代码捆绑到一起,避免外界的干扰和不确定性。在PHP中,封装是通过类来实现的。类是抽象数据类型的实现,一个类的所有对象都具有相同的数据结构,并且共享相同的实现操作的代码,而各个对象又有着各自不同的状态,即私有的存储。因此,类是所有对象的共同的行为和不同状态的结合体。 2.继承 类提供了创建新类的一种方法,再借助于“继承”这一重要机制扩充了类的定义,实现了面向对象的优越性。 继承提供了创建新类的方法,这种方法就是,一个新类可以通过对已有的类进行修改或扩充来满足新类的需求。新类共享已有类的行为,而自己还具有修改的或额外添加的行为。因此,可以说继承的本质特征是行为共享。 3.多态 不同的类对于不同的操作具有不同的行为,称为多态。多态机制使具有不同的内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。 6 . 2 PHP中的类 6.2.1 创建类 类是面向对象程序设计的核心,它是一种数据类型。类由变量和函数组成,在类里面,变量称为属性或成员变量,函数称为方法。定义类的语法格式如下: class classname { [ var $property[= value];…] [function functionname($args) { //代码 } ] } 6.2.1 创建类 自 PHP 5.5 起,关键字 class 也可用于类名的解析。使用classname::class 可以获取一个字符串,包含了类classname的完全限定名称。这对使用了命名空间的类尤为有用。例如: ?php namespace NS { class classname { //类定义代码 } echo cl
文档评论(0)