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样式方面的知识,就应该能看懂上图中的字符串是什么意思。
以上代码中,只有包含在lt?php和?gt之间的部分才是php程序,lt?php和?gt其实就是php代码的开始和结束标记(相当于html页面文件中的标签)。在php标记之外的代码将被直接作为html的页面内容进行输出,因为php程序是可以嵌入到html代码中执行的。
这段代码其实就是声明了3个字符字符串变量$st、$div和$p,每个变量的值都是一个字符串形式的html代码。如果只声明一个普通的字符串变量,可以直接这样做:
$str我是字符串//这里可以用单引号,也可以用双引号,具体区别后面再讲。
从纯语法的角度来看,上面的php代码和js有两个明显的区别:
第一,php中的变量必须使用美元符号$,而js使用var关键字;
第二,串联字符串用点号代替符号,符号在php中只用于算术运算。
除了以上两点,其他规则基本和js一样。例如,你不声明变量时不需要指定数据类型,可以同时用符号赋值,语句要以分号结束,字符串数据要用单引号或双引号括起来,等等。就连给代码添加注释的也和js一模一样。现在,让我们在上面代码的php标签周围随意输入一些内容:
LtbgtIphp标记外的mlt/bgtltbrgtltbrgt。
lt?服务器端编程语言(ProfessionalHypertextPreprocessor的缩写)
...…php代码缩写...
?大型旅行车的
LTA:I;m也在php标签之外lt/bgt。
然后直接在浏览器中运行该文件,并通过控制台检查其代码,如下所示:
通过查看代码可以发现,php文件中的所有代码最终都会被解析成页面中的body元内容元素进行输出,head、html等标签元素也会自动加入。
这说明一个php文件其实就是一种页面,只是可以嵌入php程序代码。当里面没有嵌入php代码时,可以作为普通的页面文件使用;当php代码被嵌入后,echo输出的内容将与原来的html代码结合起来显示给用户。当然,在echo之前,php可以进行一系列的逻辑运算和处理,这些逻辑运算的代码不会显示在页面中。
如上图所示,由于通过php程序输出的内容使用了类样式,最终页面显示效果中的字体为12px;phplogo外添加的dom元素没有使用这种样式,字体大小明显更大。
所以,请不要。;不要把php想得复杂深奥,只把它想成另一种类型的页面。
面向对象、面向过程和js不一样。php同时支持面向对象和面向过程的编程方法,开发者可以自由选择其中一种或者混合使用。
什么是面向对象?简单来说,就是把程序中所有可以操作的东西都看成一个对象,这样你就可以用它们的属性和方法,以事件驱动的对它进行各种操作。这对于初学者来说确实是相当难的,要考虑的因素很多,不是短时间能学会的。
因为面向对象It这有点困难。初学者可以从"面向过程的",这正是大多数php开发人员采用的。因为网页解析本身是非常"程序与法律,在页面中嵌入面向流程的处理代码是一种非常自然的手段,其实现工具就是大量使用php函数。php中有很多函数,比如字符串、数组、值、日期等。用的时候就按语法格式叫就行了,真的没什么技术含量。
一句话,唐不要担心"客体与客体or"过程与结果他的X.Don不要先担心理论上的东西,你可以自己动手,先解决问题!这是我给初学者的建议。
我是《人与自然》的签约作者。;美国邮电出版社。欢迎大家关注我的交流和提高。谢谢大家!
工作4年了,还是只会“增删改查”,Java程序员该如何进阶?
还有一个适合少数程序员的选择,就是做一个底层的码农,做几年程序员,主要是用来磨炼自己的思维和脾气,可以出去做其他的事情。事实上,你可以做程序员挣不了多少钱。虽然与其他工薪族相比,程序员的工资很高,但他们仍然工作。为了一个月几千块钱的工资,你要花很多时间,学习新的东西,加班加点,违背你的初衷。最后,在40岁这个普遍被企业抛弃的年纪,转型会相对更麻烦。