雙冒號操做符即做用域限定操做符Scope Resolution Operator能夠訪問靜態、const和類中重寫的屬性與方法。php
在類定義外使用的話,使用類名調用。在PHP 5.3.0,可使用變量代替類名。app
1
2
3
4
5
6
7
8
9
10
|
<?php
class
Fruit {
const
CONST_VALUE =
'Fruit Color'
;
}
$classname
=
'Fruit'
;
echo
$classname
::CONST_VALUE;
// As of PHP 5.3.0
echo
Fruit::CONST_VALUE;
?>
|
Program List:在類定義外部使用::ide
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<?php
class
Fruit {
const
CONST_VALUE =
'Fruit Color'
;
}
class
Apple
extends
Fruit
{
public
static
$color
=
'Red'
;
public
static
function
doubleColon() {
echo
parent::CONST_VALUE .
"\n"
;
echo
self::
$color
.
"\n"
;
}
}
Apple::doubleColon();
?>
|
程序運行結果:ui
1
|
Fruit Color Red
|
Program List:調用parent方法this
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
class
Fruit
{
protected
function
showColor() {
echo
"Fruit::showColor()\n"
;
}
}
class
Apple
extends
Fruit
{
// Override parent's definition
public
function
showColor()
{
// But still call the parent function
parent::showColor();
echo
"Apple::showColor()\n"
;
}
}
$apple
=
new
Apple();
$apple
->showColor();
?>
|
程序運行結果:spa
1
2
|
Fruit::showColor()
Apple::showColor()
|
Program List:使用做用域限定符code
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
|
<?php
class
Apple
{
public
function
showColor()
{
return
$this
->color;
}
}
class
Banana
{
public
$color
;
public
function
__construct()
{
$this
->color =
"Banana is yellow"
;
}
public
function
GetColor()
{
return
Apple::showColor();
}
}
$banana
=
new
Banana;
echo
$banana
->GetColor();
?>
|
程序運行結果:ci
1
|
Banana is yellow
|
Program List:調用基類的方法作用域
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
|
<?php
class
Fruit
{
static
function
color()
{
return
"color"
;
}
static
function
showColor()
{
echo
"show "
. self::color();
}
}
class
Apple
extends
Fruit
{
static
function
color()
{
return
"red"
;
}
}
Apple::showColor();
// output is "show color"!
?>
|
程序運行結果:string
1
|
show color
|