一、
情况1:
1
2
3
4
5
6
7
8
|
<?php
$a
=
3
;
$b
=
6
;
if
(
$a
=
5
||
$b
=
7
)
{
$a
++
;
$b
++
;
}
var_dump
(
$a
,
$b
)
;
|
这里考察两个地方:
陷阱是运算符的优先,赋值运算符(=)的优先级是最低的,所以正确理解应该是 $a=(5 || $b = 7)
正确结果:true, 7
情况2:
1
2
3
4
5
6
7
8
9
|
<?php
$a
=
3
;
$b
=
6
;
$c
=
1
;
if
(
$a
=
0
||
$b
=
7
&&
$c
=
10
)
{
$a
++
;
$b
++
;
}
var_dump
(
$a
,
$b
,
$c
)
;
|
结果:true, true, 10
二:
访问控制:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?php
class
Foo
{
private
$name
=
'hdj'
;
public
function
getName
(
)
{
return
$this
->
name
;
}
}
class
Bar
extends
Foo
{
public
$name
=
'deeka'
;
}
$bar
=
new
Bar
;
var_dump
(
$bar
->
name
)
;
var_dump
(
$bar
->
getName
(
)
)
;
|
对属性或方法的访问控制,是通过在前面添加关键字 public、protected 或 private 来实现的。由 public 所定义的类成员可以在任何地方被访问;由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);而由 private 定义的类成员则只能被其所在类访问。
如果Foo类中为private则 ‘deeka’,'hdj’, 如果Foo类中属性不是私有则被覆盖为 ‘deeka’,'deeka’
self static类中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php
class
A
{
public
static
function
className
(
)
{
echo
__CLASS__
;
}
public
static
function
test
(
)
{
static
::
className
(
)
;
//~~~~~~~~
}
}
class
B
extends
A
{
public
static
function
className
(
)
{
echo
__CLASS__
;
}
}
B::
test
(
)
;
//B
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php
class
A
{
public
static
function
className
(
)
{
echo
__CLASS__
;
}
public
static
function
test
(
)
{
self
::
className
(
)
;
//~~~~~~~~~~
}
}
class
B
extends
A
{
public
static
function
className
(
)
{
echo
__CLASS__
;
}
}
B::
test
(
)
;
//A
|
其它:
http
1
2
3
4
5
6
7
8
9
10
|
<?php
//来源:http://www.oschina.net/question/1579_49262
$arg
=
'T'
;
$vehicle
=
(
(
$arg
==
'B'
)
?
'bus'
:
(
$arg
==
'A'
)
?
'airplane'
:
(
$arg
==
'T'
)
?
'train'
:
(
$arg
==
'C'
)
?
'car'
:
(
$arg
==
'H'
)
?
'horse'
:
'feet'
)
;
echo
$vehicle
;
//horse
|