本文实例分析了PHP面向对象程序设计方法。分享给大家供大家参考,具体如下:
PHP5开始支持面向对象,示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
<?php
class classname{
var $attr1 ;
var $attr2 ;
public $attribute ;
const PI = 3.14;
// 构造函数
function __construct( $param = 'default' ){
echo "Constructor called with parameter $param<br />" ;
}
// 析构函数
function __destruct(){
echo '<br />destruct' ;
}
//
function oper1(){
echo 'oper1<br />' ;
}
function oper2( $param ){
$this ->attr1 = $param ;
echo $this ->attr1;
}
protected function oper3(){
echo 'this is protected function<br />' ;
}
// 禁止继承
final function oper5(){
}
function __get( $name ){
return $this -> $name ;
}
function __set( $name , $value ){
$this -> $name = $value ;
}
// 静态方法
static function double( $param ){
return $param * $param ;
}
}
$a = new classname( 'First' );
$b = new classname( 'Second' );
$c = new classname();
$c ->oper2( "hello" );
echo '<br />' ;
echo $c ->attr1;
echo '<br /><br />' ;
echo ' Per-Class常量 classname::PI -' .classname::PI;
echo '<br />静态方法: classname::double(3) - ' . classname::double(3);
echo '<br />' ;
// 实现继承
echo '实现继承<br />' ;
class B extends classname{
function oper4(){
$this ->oper3(); // protected方法只能在
}
function oper1(){ // 重载
echo 'this is class B /' s oper1. <br />';
}
}
$d = new B( "forth" );
$d ->oper1();
$d ->oper4();
// 接口
interface Displayable
{
function display();
function show();
}
class C implements Displayable
{
function display(){
echo '这是对应接口的方法.<br />' ;
}
function show(){}
}
$e = new C();
$e ->display();
echo '检查$e是否为C的实例:' ;
echo ( $e instanceof C) ? 'Yes' : 'No' ;
// 克隆对象
$f = clone $e ;
echo '<br /><br />可以使用__clone()方法,在使用clone关键字时调用' ;
// 抽象类
abstract class E{}
// $f = new E(); // 这行将报错,不能实例化抽象类
// 参数重载,多态
class F{
public $a = 1;
public $b = 2;
public $c = 3;
function displayString( $elem ){
echo '<br />string:' . $elem ;
}
function displayInt( $elem ){
echo '<br />int:' . $elem ;
}
// 注意参数$p,是作为数组传入,必须使用下标访问
function __call( $method , $p ){
if ( $method == 'display' ){
if ( is_string ( $p [0])){
$this ->displayString( $p [0]);
} else {
$this ->displayInt( $p [0]);
}
}
}
}
$g = new F();
$g ->display( 'abc' );
// 迭代器,读出实例的所有属性
foreach ( $g as $att ){
echo '<br />' . $att ;
}
// 反射
echo '<br />' ;
$class = new ReflectionClass( 'F' );
echo '<pre>' ;
echo $class ;
echo '</pre>' ;
?>
|
希望本文所述对大家PHP程序设计有所帮助。