现在学php的都是傻子

现在学php的都是傻子 PHP为什么这么难学?

PHP为什么这么难学?

PHP为什么这么难学?

尽管其它的一些答主都觉得这个题目有点不可思议,但对于初学者尤其是网站开发尚未完全入门的人,还是非常有可能存在这样的疑问的。

比如,之前有个网友想做微信交互开发的程序,其实他的要求很简单:就是公众号粉丝发消息,然后根据不同的消息内容自动给出回复,这样的需求使用官方的demo稍微修改一下就能实现。但他仍然反复问我:我需要买哪些专业的书籍?还要学什么php框架吗?搞的紧张兮兮的。为什么会这样?就是因为他还没有搞清楚php到底是个什么东西,网络上很多看起来相当高深的文章把他吓坏了!

还有个更搞笑的事:一哥们学html和js相当入门了,有天突然问我:php不是通过echo输出内容的吗?为什么我页面中的php代码解析不了、全部原样输出?大概看了他的代码之后,没发现什么问题。最后才发现,他竟然把php代码直接写到了后缀名为html的文件中了,这还解析个鬼啊?

由此可见,新手刚学php时,由于各方面因素所导致的认知局限,觉得php难学是很正常的。同时也说明,目前市场上的php入门书籍或者相关的文章,接地气还不够,因为一些细节说明的不到位,会让他们走很多的弯路,浪费大量无谓的时间。好吧,如果你是新手,请好好阅读一下本篇回答,希望能给你一些帮助。

简单认识一下什么是php

所谓的php,其实就是一种服务器端的编程语言,它既可以获取客户端发送来的数据,也可以将处理好的数据输出并返回到客户端。而很多网友之所以把它戏称为“世界上最好的语言”,重要原因之一是它的语法规则和javascript太像了:会了js,php的使用也就水到渠成!

例如,我们在SublimeText3编辑器新建一个扩展名为php的文件,那么,该文件就会自动按php中的语法规则来进行编辑处理(如果新建的文件没有被识别为php,也可以在编辑器中手工点击下图中的圆圈所示位置,再选择php即可)。如下图:

只要你稍微了解一点html标签及css样式方面的知识,就应该能看懂上图中的字符串是什么意思。

以上代码中,只有包含在 之间的部分才是php程序,其实就是php代码的开始和结束标记(相当于html页面文件中的标签)。在php标记之外的代码将被直接作为html的页面内容进行输出,因为php程序是可以嵌入到html代码中执行的。

这段代码其实就是声明了3个字符串变量$st、$div和$p,每个变量的值都是字符串形式的html代码。如果仅声明一个普通的字符串变量,可以直接这样:

$str = '我是字符串' //这里用单引号或双引号都可以,具体区别稍后再说

如果单纯从语法上看,上述php代码和js相比有两处是明显不同的:

第一,php中的变量必须使用美元符号$,而js是使用var关键字;

第二,拼接字符串使用圆点符号,不能用 号, 号在php中仅用于算术运算。

除了上述两点外,其它规则与js都基本相同。比如,声明变量时不用指定数据类型、声明的同时可以=号赋值、语句要用分号结束、字符串数据需要用单引号或双引号括起来等等,就连给代码添加注释的方式也是和js完全相同的。现在,我们在上述代码的php标记外围再随便输入一些内容:

我是在php标记外面的

我也是在php标记外面的

然后在浏览器中直接运行这个test.php文件,通过控制台查看其代码如下:

通过查看代码就可发现,php文件中的所有代码最终都会解析为页面中的body元内容素进行输出,同时会自动加上head、html等标签元素。

这就说明:php类型的文件其实就是一种页面,只不过在它里面可以嵌入php程序代码而已。当它里面没有嵌入php代码时,就可以当做普通的页面文件来使用;当嵌入php代码时,其通过echo输出的内容将与原有的html代码融合在一起展示给用户。当然,在echo之前,php可以先进行一系列的逻辑运算和处理,这些逻辑运算的代码是不会展示在页面中的。

如上图所示,由于通过php程序输出的内容使用了class样式,因此,最终的页面展示效果中其字体为12px;而php标识外面添加的dom元素没有使用此样式,其字号明显就要大一些。

所以,请不要把php想的多么复杂和高深,姑且把它当成另外一种类型的页面就可以了。

面向对象与面向过程

和js不太一样的是,php同时支持面向对象和面向过程的编程方式,开发者可以在面向对象和面向过程二者中自由选择其一或是混合使用。

什么是面向对象?简单的说,就是把程序中所有可操作的东西都看成是一个对象,这样就可以使用它们的属性和方法并采用事件驱动的方式来对其进行各种操作。这个对初学者来说确实有相当的难度,需要考虑的因素比较多,不是一时半会就能学的会的。

既然面向对象有点难,新手完全可以从“面向过程”快速入门,而这也正是绝大多数php开发者所采用的方式。由于Web页面解析本身就是很“过程化”的,而在页面中嵌入面向过程的处理代码是非常自然的手段,其实现工具就是大量的使用php函数。php中的函数非常多,字符串、数组、数值、日期等等,使用时按它们的语法格式调用就行了,真的没啥技术含量。

总之一句话,别管他X的什么“对象”还是“过程”,理论上的东西先不管,自己能够干起来、先解决问题再说!这就是我给初学者的建议。

我是人民邮电出版社签约作者,欢迎大家关注我一起交流提高,谢谢!