PHP总结:几个陷阱
一、
情况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总结:几个陷阱相关推荐
- Golang 要注意的陷阱和常见错误
原文: 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs 翻译: Go的50度灰:新Golang开发者要 ...
- typedef的四个用途和两大陷阱
typedef的四个用途和两个陷阱 --------------------------------- 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如: c ...
- JS中8个常见的陷阱
译者按: 漫漫编程路,总有一些坑让你泪流满面. 原文: Who said javascript was easy ? 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原 ...
- 跨越企业的“中等收入陷阱”
在国际经济学中,有一个"中等收入陷阱"的概念,含义为:新兴市场国家突破人均GDP1000美元的"贫困陷阱"后,很快会奔向1000美元至3000美元的" ...
- 《C陷阱与缺陷》一导读
前 言 C陷阱与缺陷 对于经验丰富的行家而言,得心应手的工具在初学时的困难程度往往要超过那些容易上手的工具.刚刚接触飞机驾驶的学员,初航时总是谨小慎微,只敢沿着海岸线来回飞行,等他们稍有经验就会明白这 ...
- c专家编程/c陷阱_如何避免常见的初学者陷阱并像专家一样开始编码
c专家编程/c陷阱 by Dmitri Grabov 德米特里·格拉波夫(Dmitri Grabov) 如何避免常见的初学者陷阱并像专家一样开始编码 (How to avoid common begi ...
- Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误
这篇是计算机类的优质预售推荐>>>><Verilog与SystemVerilog编程陷阱:怎样避免101个常犯的编码错误> 编辑推荐 纠错式学习,从"陷阱 ...
- Linux0.00内核为什么要自己设置0x80号陷阱门来调用write_char过程?
我一开始没注意这个问题,只是通过陷阱门觉得很绕弯子,为何不在3级用户代码里直接调用write_char,今天自己写程序想用call调用代码段,才发现了大问题.我写了个类似于write_char的过程, ...
- java值参_Java陷阱之慎用入参做返回值详解
正常情况下,在Java中入参是不建议用做返回值的.除了造成代码不易理解.语义不清等问题外,可能还埋下了陷阱等你入坑. 问题背景 比如有这么一段代码: @Named public class AServ ...
- Python 中少为人知的 10 个安全陷阱
作者:Dennis Brinkrolf 译者:豌豆花下猫@Python猫 原题:10 Unknown Security Pitfalls for Python 英文:https://blog.sona ...
最新文章
- CF570D Tree Requests(dsu on tree)
- Java 什么叫做实例化
- vue rules 两个输入框不能相等_Vue 学习笔记(二十五):webpack 相关
- Proc恢复数据文件
- Caused by: java.lang.NumberFormatException: For input string: 18446744073709551615
- Storm目录树、任务提交、消息容错、通信机制
- 虚拟目录下apache点击报The requested URL* was not found on this server.
- 炒股高手必备抓大牛主图筹码箱体分析指标
- 高德城市编码json_sql_excel 三级联动json合集
- Matlab中fspecial的用法
- 4.jvm入门到精通
- Hdu 5064 Find Sequence 解题报告
- 微信小号赚钱(转载)
- 计算机的管理软件有哪些,电脑里有很多文件,很乱但是都有用,有什么管理软件值得推荐?...
- Monaco-Editor 多人协作 编辑器
- 大唐杯学习笔记(1)—— 5G网络架构与组网部署
- java 画图 例子_JAVA简易画图工具
- C++基础2:ASC码中 ‘A’ 和 ‘a’ 分别在什么位置??
- 前端知识-CSS定位机制:标准流、浮动、定位
- Web实验六 JavaScript实验
热门文章
- java设计一百亿的计算器_请设计一个一百亿的计算器
- asp和php功能,asp和php都有什么功能?
- 描写计算机老师上课的神态,请你用一段话描写一位老师上课的情景,注意抓住神态语言动作等细节...
- php 日历哪个好,简单的PHP日历
- 每日一道算法题--leetcode 746--使用最小花费爬楼梯--python
- Shell命令-文件及内容处理之grep(egrep)、join
- phpstrom 本地编辑玩文件 自动临时映射到远程服务器
- python开发学习记录
- npm install
- BCGSoft Demo示例展示:对话框示例