赵童鞋带你入门PHP(四) PHP进阶语法

2,740 阅读3分钟

阅读时长:10分钟

技术预备:PHP基础语法

通过上一篇的学习,相信童鞋们已经大概了解了PHP的变量和数组,这篇虽然叫进阶语法,但其实也还是基础语法,只是为了和上一篇做一个区别。(在编程界再怎么高级的东西始终会在时间的车轮下变成基础)

本节主要讲解PHP的运算符、函数和面向对象。

依照上一节的特性,一些太简单的如 $a=$b+$c; 这种基础操作就跳过了,我们主要来讲讲PHP的一些骚操作。

一、运算符

大部分现代编程语言的运算符在PHP都实现了,这里主要讲解一下弱类型语言特有的“==”和“===”运算符。

在强类型语言中一般只有“==”这种运算符,那么为什么弱类型语言会需要“===”运算符呢?

这是因为在弱类型语言,如PHP中,当数字0和字符串“0”相比较的时候,PHP会自动的把字符串转换为数字再进行比较,也就是说 0=="0" 会返回true。(课外题:数字和字符串比较的时候,PHP是按什么规则来进行字符串的数字转换?)

但是某些场景下,我们除了进行数字比较以外,还需要精确的类型比较,这种时候就需要“===”运算符来处理了,使用“===”运算符PHP会先校验两边变量的类型,如果类型不相同则会直接返回false。

同理,判断不等于也有“!=”和“!==”两种比较运算符。

课后习题:

FALSE=="";

0=="0abc";

0=="0123";

0==0.0;

0==[];

"0abc=="";

''=="";

如果这些能做到全对,那么这关你就跨过去了,需要答案的童鞋可以在公众号给赵童鞋留言哦。

二、函数

在PHP中,所有函数都需要使用function关键字来标识。

如:

function fun(){
    echo "HelloWorld!!!";
}

在类里的方法则自带了$this变量,用来指示当前调用方法的对象。(课外题:童鞋们还记得之前讲解的函数和方法有什么区别吗?)

在许多编程语言中,方法调用都是使用“.”符号来完成的。

如:

this.sayHello();

但在PHP中,“.”运算符已经被用作字符串连接符了,所以需要使用->符号来进行方法的调用,这个符号是不是非常形象(简单粗暴)呢?

如:

$this->sayHello();

在函数这里我需要着重讲解一下,PHP中两个常用的内置函数empty()isset()

有许多刚入门PHP的童鞋可能会经常搞混这两个函数的使用区别。

首先是empty()函数的官方解释:

当var存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE。

以下的东西被认为是空的:

  • "" (空字符串)
  • 0 (作为整数的0)
  • 0.0 (作为浮点数的0)
  • "0" (作为字符串的0)
  • NULL
  • FALSE
  • array() (一个空数组)
  • $var; (一个声明了,但是没有值的变量)

然后是isset()函数的官方解释:

如果var存在并且值不是 NULL 则返回 TRUE,否则返回 FALSE。

可能有童鞋看完解释还是一头雾水,其实他们的区别就是对于NULL值的判断。

  • 当我们需要判断一个变量是否已声明但值为空的时候,就可以用empty()函数来判断。
  • 当我们需要判断一个变量是否未声明或值为NULL的时候,就可以用isset()函数来判断。

三、面向对象

PHP的面向对象又是那些什么继承啊,多态啊,父类啊,子类啊,为什么这么累啊的东西,和大部分编程语言的一样,我就不写了。

上面只是开玩笑的,面向对象是目前编程语言的一个趋势,甚至Javascript在ES6之后也支持了Class的写法。

但是直接来讲面向对象我个人觉得是非常枯燥的一件事情,而且对一个初学者讲构造函数、析构函数、继承、多态之类的东西会很容易绕晕,更多数的情况是只有“哦~原来这样,然后呢?”这种体会,没两天就忘光光了。

所以我认为面向对象这方面如果是有其他语言经验的童鞋,应该不太需要再重头学一遍,而初学者的话我们在后面结合项目再来讲解就会更加容易理解,而且体会也是完全不一样的。

四、小结

PHP的语法讲解经过两个章节算是基本讲完了。

什么?你说就这么短?许多的教程语法都要讲四五节课以上?

那是很正常的,因为赵童鞋跳过了大量的细节,我认为入门一个新的知识应该只花20%的时间来学习80%经常用到的知识才是最高效的,大量的细节我们在后面再来慢慢补充。

什么?你觉得自己什么都没学到?

那也是很正常的,能过目一遍就全部理解全部掌握的人始终是非常少数的,许多知识都要经过大量的练习才能真正的领悟到。

后面的章节我们就直接进入到框架的学习。

----- End -----

更多好文

请扫描下面二维码

欢迎关注~