您的位置:首页 > 编程语言 > PHP开发

PHP总结:几个陷阱

2016-04-11 22:59 267 查看
一、

情况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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: