Heim >Backend-Entwicklung >PHP-Tutorial >So lernen Sie Klassen und Objekte in PHP

So lernen Sie Klassen und Objekte in PHP

怪我咯
怪我咯Original
2017-06-28 13:44:491286Durchsuche

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

一、基本概念

1、class

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

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

<?php  
class A  
{  
function foo()  
{  
if (isset($this)) {  
echo &#39;$this is defined (&#39;;  
echo get_class($this);  
echo ")\n";  
} else {  
echo "\$this is not defined.\n";  
}  
}  
}  
class B  
{  
function bar()  
{  
A::foo();  
}  
}  
$a = new A();  
$a->foo();  
A::foo();  
$b = new B();  
$b->bar();  
B::bar();  
?>

上例将输出:

$this is defined (a)  
$this is not defined.  
$this is defined (b)  
$this is not defined.

Example#2 简单的类定义

<?php  
class SimpleClass  
{  
// 成员声明  
public $var = &#39;a default value&#39;;  
// 方法声明  
public function displayVar() {  
echo $this->var;  
}  
}  
?>

Example#3 类成员的默认值

<?php  
class SimpleClass  
{  
// 无效的类成员定义:  
public $var1 = &#39;hello &#39;.&#39;world&#39;;  
public $var2 = <<<EOD  
hello world  
EOD;  
public $var3 = 1+2;  
public $var4 = self::myStaticMethod();  
public $var5 = $myVar;  
// 正确的类成员定义:  
public $var6 = myConstant;  
public $var7 = self::classConstant;  
public $var8 = array(true, false);  
}  
?>

2、new

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

Example#4 创建一个实例

<?php  
$instance = new SimpleClass();  
?>

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

Example#5 对象赋值

<?php  
$assigned   =  $instance;  
$reference  =& $instance;  
$instance->var = &#39;$assigned will have this value&#39;;  
$instance = null; // $instance and $reference become null  
var_dump($instance);  
var_dump($reference);  
var_dump($assigned);  
?>

复制代码上例将输出:

NULL  
NULL  
object(SimpleClass)#1 (1) {  
["var"]=> 
string(30) "$assigned will have this value"  
}

3、extends

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

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

Example#6 简单的类继承

<?php  
class ExtendClass extends SimpleClass  
{  
// Redefine the parent method  
function displayVar()  
{  
echo "Extending class\n";  
parent::displayVar();  
}  
}  
$extended = new ExtendClass();  
$extended->displayVar();  
?>

上例将输出:

Extending class  
a default value

Das obige ist der detaillierte Inhalt vonSo lernen Sie Klassen und Objekte in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn