Home > Backend Development > PHP Tutorial > How to learn classes and objects in php

How to learn classes and objects in php

怪我咯
Release: 2023-03-11 20:44:01
Original
1289 people have browsed it

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();  
?>
Copy after login

上例将输出:

$this is defined (a)  
$this is not defined.  
$this is defined (b)  
$this is not defined.
Copy after login

Example#2 简单的类定义

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

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);  
}  
?>
Copy after login

2、new

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

Example#4 创建一个实例

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

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

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);  
?>
Copy after login

复制代码上例将输出:

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

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();  
?>
Copy after login

上例将输出:

Extending class  
a default value
Copy after login

The above is the detailed content of How to learn classes and objects in php. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template