码迷,mamicode.com
首页 > Web开发 > 详细

走入PHP-类与对象

时间:2015-05-29 20:06:19      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

PHP中用class来定义类,用new实例化对象,用extends继承类,不过只能单继承,属性和方法有public、private和protected做访问控制,默认为public,在类里定义常量不需要\$,用::范围解析符可以调用父类的方法,访问类的静态变量、静态方法和常量。

 

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

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

=================================================

简单的类定义:

技术分享
<?php
class SimpleClass
{
    // 成员声明
    public $var = ‘a default value‘;

    // 方法声明
    public function displayVar() {
        echo $this->var;
    }
}
?>
View Code

=================================================

继承:

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

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

技术分享
<?php
class ExtendClass extends SimpleClass
{
    // Redefine the parent method
    function displayVar()
    {
        echo "Extending class\n";
        parent::displayVar();
    }
}

$extended = new ExtendClass();
$extended->displayVar();
?>
View Code

==================================================

在类的成员方法里面,可以通过\$this->property(property是属性名字)这种方式来访问类的属性、 方法,但是要访问类的静态属性或者在静态方法里面却不能使用,而是使用self::$property。

===================================================

类常量:

常量的值必须是一个定值,不能是变量,类属性或其它操作(如函数调用)的结果。

技术分享
<?php
class MyClass
{
    const constant = ‘constant value‘;

    function showConstant() {
        echo  self::constant . "\n";
    }
}

echo MyClass::constant . "\n";

$classname = "MyClass";
echo $classname::constant . "\n"; // PHP 5.3.0之后

$class = new MyClass();
$class->showConstant();

echo $class::constant."\n"; // PHP 5.3.0之后
?>
View Code

===================================================

构造函数:

如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用parent::__construct()。

析构函数:

 

走入PHP-类与对象

标签:

原文地址:http://www.cnblogs.com/niceforbear/p/4539193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!