当前位置:Gxlcms > PHP教程 > PHP新手之学习类与对象(1)_PHP教程

PHP新手之学习类与对象(1)_PHP教程

时间:2021-07-01 10:21:17 帮助过:2人阅读

PHP 5 引入了新的对象模型(Object Model)。完全重写了 PHP 处理对象的方式,允许更佳性能和更多特性。

一、基本概念

1、class

每个类的定义都以关键字 class 开头,后面跟着类名,可以是任何非 PHP 保留字的名字。后面跟着一对花括号,里面包含有类成员和方法的定义。伪变量 $this 可以在当一个方法在对象内部调用时使用。$this 是一个到调用对象(通常是方法所属于的对象,但也可以是另一个对象,如果该方法是从第二个对象内静态调用的话)的引用。看下面例子:

Example#1 面向对象语言中的 $this 变量

  1. class A
  2. {
  3. function foo()
  4. {
  5. if (isset($this)) {
  6. echo '$this is defined (';
  7. echo get_class($this);
  8. echo ")n";
  9. } else {
  10. echo "$this is not defined.n";
  11. }
  12. }
  13. }
  14. class B
  15. {
  16. function bar()
  17. {
  18. A::foo();
  19. }
  20. }
  21. $a = new A();
  22. $a->foo();
  23. A::foo();
  24. $b = new B();
  25. $b->bar();
  26. B::bar();
  27. ?>

上例将输出:

  1. $this is defined (a)
  2. $this is not defined.
  3. $this is defined (b)
  4. $this is not defined.

Example#2 简单的类定义

  1. class SimpleClass
  2. {
  3. // 成员声明
  4. public $var = 'a default value';
  5. // 方法声明
  6. public function displayVar() {
  7. echo $this->var;
  8. }
  9. }
  10. ?>

Example#3 类成员的默认值

  1. class SimpleClass
  2. {
  3. // 无效的类成员定义:
  4. public $var1 = 'hello '.'world';
  5. public $var2 = <<
  6. hello world
  7. EOD;
  8. public $var3 = 1+2;
  9. public $var4 = self::myStaticMethod();
  10. public $var5 = $myVar;
  11. // 正确的类成员定义:
  12. public $var6 = myConstant;
  13. public $var7 = self::classConstant;
  14. public $var8 = array(true, false);
  15. }
  16. ?>

2、new

要创建一个对象的实例,必须创建一个新对象并将其赋给一个变量。当创建新对象时该对象总是被赋值,除非该对象定义了构造函数并且在出错时抛出了一个异常。

Example#4 创建一个实例

  1. $instance = new SimpleClass();
  2. ?>

当把一个对象已经创建的实例赋给一个新变量时,新变量会访问同一个实例,就和用该对象赋值一样。此行为和给函数传递入实例时一样。可以用克隆给一个已创建的对象建立一个新实例。

Example#5 对象赋值

  1. $assigned = $instance;
  2. $reference =& $instance;
  3. $instance->var = '$assigned will have this value';
  4. $instance = null; // $instance and $reference become null
  5. var_dump($instance);
  6. var_dump($reference);
  7. var_dump($assigned);
  8. ?>

上例将输出:

  1. NULL
  2. NULL
  3. object(SimpleClass)#1 (1) {
  4. ["var"]=>
  5. string(30) "$assigned will have this value"
  6. }

3、extends

一个类可以在声明中用 extends 关键字继承另一个类的方法和成员。不能扩展多个类,只能继承一个基类。

被继承的方法和成员可以通过用同样的名字重新声明被覆盖,除非父类定义方法时使用了 final 关键字。可以通过 parent:: 来访问被覆盖的方法或成员。

Example#6 简单的类继承

  1. class ExtendClass extends SimpleClass
  2. {
  3. // Redefine the parent method
  4. function displayVar()
  5. {
  6. echo "Extending classn";
  7. parent::displayVar();
  8. }
  9. }
  10. $extended = new ExtendClass();
  11. $extended->displayVar();
  12. ?>

上例将输出:

  1. Extending class
  2. a default value

1

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445764.htmlTechArticlePHP 5 引入了新的对象模型(Object Model)。完全重写了 PHP 处理对象的方式,允许更佳性能和更多特性。 一、基本概念 1、class 每个类的定义...

人气教程排行