php语法难看,细数php语法里的那些“坑”

尽管PHP的语法已经很松散,写起来很“爽”。但是对于像“我们”这种学过 Java、 C#的“完全面向对象程序员”来说,PHP程序设计语言里,还是有一些的坑的。下面请让我来盘点一下。

Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION in......

错误原因:在PHP语法中,声明任何函数,函数名的前面需要 function 关键字。

classTest{

__construct(){echo ‘I am construction!‘;

}

}

正确示例:每一次声明函数(方法),都要写上“function”这个关键字。无论您想声明的是 __construct()这类魔术方法,还是自定义函数,都逃不出 function 的手掌心。

function__construct(){echo ‘I am construction!‘;

}

}

Fatal error: Access to undeclared static property: ......

错误原因:self::只能指向静态属性,而指向非静态属性只能用 $this->。

classPerson{function __construct($name){

self::$name = $name;

}private $name;

}$paul = new Person(‘paul‘);

正确方法:self::指向静态属性,$this->指向非静态属性。

classPerson{function __construct($name){$this->$name = $name;

}private $name;

}$paul = new Person(‘paul‘);

classPerson{function setBirthday($date){

self::$birthday = $date;

}static private $birthday;

}$paul = newPerson();$paul->setBirthday(‘1990-01-01‘);

Fatal error: Cannot redeclare A::__construct() in......

错误原因:PHP不支持函数重载

解决方法:使用PHP内置函数 func_num_args() 、func_get_arg() 、func_get_args()来模拟实现OOP的函数重载

echo ‘no argument‘;default:

echo ‘the number of arguments is ‘.func_num_args(). ‘
‘;$argumentArray = func_get_args();//遍历方法一

foreach($argumentArray as $key => $value){echo ‘the No‘. $key. ‘ argument is ‘. $value. ‘
‘;

}echo ‘
‘;//遍历方法二

for($i=0; $i‘;

}

}echo ‘


‘;

}

}newTest();new Test(1);new Test(1,2,3);

自动初始化对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值