### PHP5类与对象编程知识点详解 #### 一、范围解析操作符(::) 范围解析操作符,也称为“Paamayim Nekudotayim”或双冒号操作符,是PHP中用于访问静态成员、方法和常量的一个重要操作符。它允许我们从类的外部访问这些静态成员和方法。 **语法:** `类名::静态成员` 或 `类名::方法()` **特点:** - **访问静态成员和方法:** 在类的外部可以通过这种方式访问静态成员和方法。 - **覆盖类成员:** 当一个子类需要覆盖父类的成员或方法时,可以使用此操作符。 - **命名来源:** 这个名称源自希伯来语,意为“双冒号”,由Zend引擎开发者在开发PHP 3时引入。 **示例:** ```php class MyClass { const CONST_VALUE = 'A constant value'; } echo MyClass::CONST_VALUE; // 输出 "A constant value" ``` #### 二、`self` 和 `parent` 关键字 在类的内部,`self` 和 `parent` 关键字提供了方便的方式来访问当前类或父类中的成员和方法。 - **`self`:** 表示当前类本身。可以用来访问当前类中的成员和方法。 - **`parent`:** 指向当前类的直接父类。用于访问父类中的成员和方法。 **示例:** ```php class OtherClass extends MyClass { public static $my_static = 'static var'; public static function doubleColon() { echo parent::CONST_VALUE . "\n"; // 输出 "A constant value" echo self::$my_static . "\n"; // 输出 "static var" } } OtherClass::doubleColon(); // 输出结果 ``` #### 三、子类覆盖父类方法 当子类覆盖父类的方法时,除非显式调用父类的方法,否则父类中被覆盖的方法不会被执行。这同样适用于构造函数、析构函数、重载和魔术方法。 **示例:** ```php class MyClass { protected function myFunc() { echo "MyClass::myFunc()\n"; } } class OtherClass extends MyClass { public function myFunc() { parent::myFunc(); // 调用父类方法 echo "OtherClass::myFunc()\n"; } } $class = new OtherClass(); $class->myFunc(); // 输出两个方法的执行结果 ``` #### 四、静态关键字 (static) **静态关键字**用于声明类的静态成员和方法,这意味着它们可以直接通过类名访问,而无需创建类的实例。 - **静态成员:** 需要通过类名而非对象实例来访问。 - **静态方法:** 可以直接通过类名调用,但不能在静态方法内部使用 `$this`。 **示例:** ```php class Foo { public static $my_static = 'foo'; public function staticValue() { return self::$my_static; } } class Bar extends Foo { public function fooStatic() { return parent::$my_static; } } echo Foo::$my_static . "\n"; // 输出 "foo" $foo = new Foo(); echo $foo->staticValue() . "\n"; // 输出 "foo" echo $foo->my_static . "\n"; // 触发错误 echo Bar::$my_static . "\n"; // 输出 "foo" $bar = new Bar(); ``` #### 五、类常量 (Class Constants) **类常量**是在类中定义的一组不可变的值,类似于全局常量,但属于特定的类。类常量的定义不需要 `$` 符号,并且通常采用大写字母表示。 - **定义:** 使用 `const` 关键字在类内定义。 - **访问:** 直接通过类名访问,例如 `类名::常量名`。 **示例:** ```php class MyClass { const MY_CONSTANT = 'Constant Value'; } echo MyClass::MY_CONSTANT; // 输出 "Constant Value" ``` 通过以上知识点的介绍,我们可以看到PHP5中类与对象编程的一些基本概念和技术,这对于理解和掌握面向对象编程的基础非常重要。
- 粉丝: 1
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助