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

PHP总结:几个陷阱相关推荐

  1. Golang 要注意的陷阱和常见错误

    原文: 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs 翻译: Go的50度灰:新Golang开发者要 ...

  2. typedef的四个用途和两大陷阱

    typedef的四个用途和两个陷阱 --------------------------------- 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如: c ...

  3. JS中8个常见的陷阱

    译者按: 漫漫编程路,总有一些坑让你泪流满面. 原文: Who said javascript was easy ? 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原 ...

  4. 跨越企业的“中等收入陷阱”

    在国际经济学中,有一个"中等收入陷阱"的概念,含义为:新兴市场国家突破人均GDP1000美元的"贫困陷阱"后,很快会奔向1000美元至3000美元的" ...

  5. 《C陷阱与缺陷》一导读

    前 言 C陷阱与缺陷 对于经验丰富的行家而言,得心应手的工具在初学时的困难程度往往要超过那些容易上手的工具.刚刚接触飞机驾驶的学员,初航时总是谨小慎微,只敢沿着海岸线来回飞行,等他们稍有经验就会明白这 ...

  6. c专家编程/c陷阱_如何避免常见的初学者陷阱并像专家一样开始编码

    c专家编程/c陷阱 by Dmitri Grabov 德米特里·格拉波夫(Dmitri Grabov) 如何避免常见的初学者陷阱并像专家一样开始编码 (How to avoid common begi ...

  7. Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误

    这篇是计算机类的优质预售推荐>>>><Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误> 编辑推荐 纠错式学习,从"陷阱 ...

  8. Linux0.00内核为什么要自己设置0x80号陷阱门来调用write_char过程?

    我一开始没注意这个问题,只是通过陷阱门觉得很绕弯子,为何不在3级用户代码里直接调用write_char,今天自己写程序想用call调用代码段,才发现了大问题.我写了个类似于write_char的过程, ...

  9. java值参_Java陷阱之慎用入参做返回值详解

    正常情况下,在Java中入参是不建议用做返回值的.除了造成代码不易理解.语义不清等问题外,可能还埋下了陷阱等你入坑. 问题背景 比如有这么一段代码: @Named public class AServ ...

  10. Python 中少为人知的 10 个安全陷阱

    作者:Dennis Brinkrolf 译者:豌豆花下猫@Python猫 原题:10 Unknown Security Pitfalls for Python 英文:https://blog.sona ...

最新文章

  1. Junit实现接口类测试
  2. lockfree buffer test
  3. DVWA--SQL注入
  4. 【Go】sync.RWMutex源码分析
  5. python闭包怎么理解_Python 闭包的理解
  6. DCL实现多线程安全的高性能懒汉模式
  7. 90-20-010-源码-调试-Kylin-2.6.0源码调试
  8. 谈对阿里应用分层的思考
  9. esp8266 继电器接线图_如何使用继电器实现ESP8266的自动化
  10. 台达plc自由口通讯_台达PLC串行通讯及应用案例
  11. JAVA过滤机制——过滤器的概念、工作原理、生命周期
  12. php sendmail 抄送,Python发送邮件各种姿势
  13. Auto.jsMIUI小米手机锁屏界面无法上滑输入密码解锁的问题 以及如何输入密码进行解锁
  14. 使用硕正插件在strtus2框架下返回数据问题
  15. (转)BluePrint Framemaker学习
  16. java.io.IOException: 远程主机强迫关闭了一个现有的连接。
  17. python协程爬取斗鱼美女图片
  18. [附源码]java毕业设计流浪宠物免费领养系统
  19. strcpy函数实现(C语言)
  20. centos7上owncloud搭建私有云

热门文章

  1. 微信小程序父子组件通信
  2. eclipse拒绝mysql,eclipse连接mysql的有关问题
  3. SP34096 DIVCNTK - Counting Divisors (general)(Min_25筛)
  4. 一个简单的Eclipse调试Debug流程(四)
  5. 日志分析——从概念到应用
  6. Ibatis 生成工具ibator的使用 适用于ibaits2
  7. 算法踩坑4-冒泡排序
  8. memcached常用命令
  9. Android Canvas简单使用
  10. 解决左下角没有显示桌面图标