黄金年代篇有趣的技能小说php介绍篇_php功底_脚本之家

2020-01-17 11:56栏目:编程
TAG:

身为一名中级PHPer菜鸟..无聊了就爱在各个PHP论坛瞎转.看到了好多PHP初学者都问到了很多相同的问题.而且我学PHP的时候也都遇到过.为了 让PHP初学者少走一些弯路.所以突然神经恍惚.决定写下此文章.仅供PHP初学者参考.如有错误.还望指出.不甚感激. PHP其实是一种很简单易学的语言.如果要精通PHP多则三年.少则一年就足够了.但是为什么三年之后我们照样是菜鸟? 不知道从什么开始.学习PHP我们不得不学习数据库.学习架构.学习面向对象.学习前端.学习linux.学习协议甚至美工等直接导致了现在PHPer都是最累的一种程序员. 最累就不算什么了.往往PHP会被认为是下等的程序.拿着最低级的工资.却要掌握web方面几乎全部的知识.这实在是不公平. 可喜的是 我们逐渐在国内看到了转变.国内越来越多的公司从Java或者C#等转到了PHP.所以各位PHPer一定要有自己的梦想.你们都会很牛B的.请坚信. 扯远了.回到我要说的重点上.下面几个问题包含着我遇到的问题.也许我说的不一定对或者你不一定同意我的看法.十分愿意接受你的意见.总之我们只是想让PHPer都雄起:-) 1.编码的问题 这不光是PHP..只要是程序上.就会遇到.至少我和我身边的人都遇到了.而且在Web方面.往往编码问题更是非常难解决.非常难调试.有时候程序出了莫名其妙的问题,很难想到是编码出了问题等等. 这些问题总是困扰着我们.所以我建议PHP初学者.一定要编码统一.并且强烈建议统一为UTF-8.中文不建议使用GBK或者GB2312等.因为在AJAX中传输的时候是不认识这种编码的. 如果要统一编码,就要在编码可能出现的任何地方注意一下. 1) header头的编码 个人建议在你的PHP中都应该加上下面这句话 复制代码 代码如下: header("Content-type: text/html;charset=utf-8"); 这样可以避免一些问题.比如我们可以看到有些网站submit后就是一个alert然后跳转.但是他们没有设置编码.如果他的编码跟浏览器的默认编码不一致.就会出现乱码了. 你是单纯的HTML.一定要记得把meta的编码标签放到title标签前面. 如果你不理解就记住把编码的信息放到head标签的第一行就可以了.最终的效果是这样的 复制代码 代码如下:

作为一个Javaer,闲来无事,在W3Cschool中看了下PHP的相关教程,随即联想到了关于网站开发PHP与Java编程语言技术选型,一些小的感悟,记载如下。

... 2) 文件的编码 我们保存文件的时候,选择编码一定要统一.如果按照上面的.我们就应该选择UTF-8. 一般的编辑器都有此文件的编码信息.如果你发现不是UTF-8.请马上更改. 比如我们在Dreamweaver中打开了一个模板文件.发现右下角显示 GB2312.此时不要做任何更改.马上CTRL+J 然后选择编码更改成UTF-8模式并保存. 文件的编码不一定是PHP文件的.也得保证你的JavaScript文件与css文件都为UTF-8编码. 另外还有一个重要的一点.就是BOM..这个东东PHP是不太欢迎的.所以我们在保存的时候要选择UTF-8无BOM格式.如果你用的编辑器是UE.那么请你着重注意这一点. 3) 数据库的编码 这个我就不想多说了.网上有太多的文章.如果你是MySQL记得每次连接后进行SET NAMES = ‘utf8′就可以了.并且那个utf8中间是没有横线的. 2.MVC的问题 程序员理论上来说应该是个完美主义者.他们不光想着把程序写的运行就可以了.而且还要优雅. 但是话说回来.把程序按照MVC做了以后我们的代码就优雅了吗? 答案当然是否定的. 学习架构是一个理解的过程.当你真正体会到这个架构的好处的时候.才会理解其真正的含义.切勿盲目. 有时候我们会做这样的打算.用这个月的时间去学习MVC.好吧.我想你应该这样去做.你学会给自己定目标了. 但是一个月后我们也许并不能真正的理解MVC..但是至少我们会根据他的模式他的基本.换句话说也许我们没有学会葵花宝典.但是我们应该会用辟邪剑法了. 3.面向对象的问题 关于PHP面向对象的问题.一直都纠缠不清.有的人不觉得PHP面向对象是个好的东西.有的人甚至不认为面向对象是个好的玩意,比如Linus. 我们不必去纠缠这个东西到底好不好.至少我们应该知道从面向对象诞生到现在.经过了这么多年的演变.运用到各种项目甚至语言中.我们有理由相信存在即有其道理. 实践是检验真理的唯一标准.这么多年面向对象越发展形势越好.看来我们学习就变得是种必须了. 与一些架构的知识类似.面向对象也不是那么好学的.面向对象是种理念.但是具体到某种语言的时候.其意义也会发生一些微妙的变化. PHP的面向对象很灵活.再加上其特有的魔术方法.会造就出一种特别形势的面向对象.也许这跟你平时看Java的面向对象不太一样. 不一定把你需要的方法放到一个类中就是面向对象.当你真正体会到面向对象给你的编码带来快捷.带来方便.你就对面向对象有更深的一层理解了. 正所谓欲速则不达.切勿心急.你想几天之内理解相对论那纯粹是扯淡. 4.算法的问题 似乎PHP与算法总是相距甚远的.PHP大多数算法都是基于数组实现的.而我们又知道PHP的数组的特性就注定当数组变得非常大的时候.效率会直线下降. 其实PHP就是个做网站的.大家不要也不必给她带什么高帽子.在Web方面尤其是在PHP所服务的前端的实际情况下会涉及到算法的地方会非常少. PHP的算法面试题无非就是对数组或者对字符串的操作..动动脑子加上手册.那基本就没问题了. 那你也许会问.我想学习PHP.那我还学习算法吗? 我觉得你需要学.并且更需要学数据结构.这门功课就像是一门内功.会在潜移默化中影响你的编码. 这时候再配合上我们前面的辟邪剑法.恭喜你 你已经学会葵花宝典了! 5.框架的问题 PHP的框架是各种语言中最多的.用不用框架.选什么框架这又成为一个争议的话题.. 我的建议是非常推荐学习至少一款框架.这可以加深你对PHP的认识.我们学习框架不是说要学这个框架怎么用.怎么做项目. 我们要去看它的源码.看看他是怎么实现的.这时候你就可以选择自己开发一个小型的框架.不求做的多好.不求别人多少项目去运用. 我们只是为了学习而已. 6.JavaScript的问题 可以说我看过这么多语言.最神奇就莫过于JavaScript了.平时Java一直宣称自己一切皆对象.其实我更觉得JavaScript才是一切皆对象. JavaScript好学吗? 好学!其实在平时Web运用时候.一般的JavaScript操作就是DOM操作. JavaScript难学吗? 难学!如果我们被其他语言的面向对象的思维束缚了.就很难理解JavaScript的面向对象.并且JavaScript里面概念也非常多. prototype arguments call apply callee caller 闭包等概念就让我们不知所措.再加上诡异的JavaScript的代码风格与其难调试的特征直接导致我们这些菜鸟避而远之. 曾经我转发过一段实现document.ready的代码.其诡异程度不得不佩服. 个人觉得看一些JavaScript框架的源码就是最好的学习方法.曾经在写我的PHP框架的时候.由于使用了统一入口+自己定义的URL规则.所以再使用普通属性为get的form的时候就会获取不到参数. 这时候我就想到了jQuery.form中的formSerialize方法.摘选出来并做了一些修改.就可以拿来使用了. 7.CSS问题 我之所与把CSS跟JavaScript分开来说.我觉得CSS的学习更有特点. 其实要我说CSS是最简单的东西了.我们只是知道了一些基本的CSS属性.写页面绝对不成问题. CSS的主要特征在于必须动手.你看N本CSS的书不如实际动手去写一个页面. CSS另外一个特点就是得多试.也许这个属性不能达到你的效果.那你就换一个.这也是最笨最有效的办法:-) 当然 这只是初级CSS的要求. 会了这些之后 我们还得兼容浏览器. 其实这个也不难 无非就是几个浏览器同时开着一个属性一个属性的试. 也可以熟记一些hack 比如IE6认识_ IE都认识*等.如果你觉得这样写CSS不够标准.那么把hack放到不同的css文件中.比如ie6的就叫ie6.css 然后再页面上用下面的代码就可以了. 复制代码 代码如下: 更高级的当然是用户的体验与设计了.这个我也不懂就不说了@_@ 希望达人补充. 8.linux的问题 个人强烈建议每人的电脑上都安装一个linux系统.如果你觉得太折腾 可以选择wubi方式安装Ubuntu.对于懒人这个是最简单有效的方法了. 你无聊的时候可以下载一份PHP源码自己编译下试试.切忌apt-get.因为往往服务器版本不是rhel就是centos.那里是没有这个命令的. 而且apt-get到的往往不是最新的版本.并且又不能自己定制. linux总会出现这样活着那样莫名其妙的问题.比如环境稍微不一样就编译不通过.服务起不来. 这时候不要着急.看错误提示 看日志.Google下自己尝试解决. 编译完不要觉得就完了 试试不同的配置.而且修改一下源码再编译试试. 比如我们下载了一份nginx的源码.然后修改下header头等一些地方. 就可以编译一份属于自己的HTTP Web Server了. 当然 你如果叫BWS或者GWS也行:-) 还有个问题 linux需要背命令吗? 这个是无可厚非的. 熟记一些常用的命令可以提高速度.这点我需要反思.经常一些常用的命令还需要看下参数.. 另外一个就是Shell的问题. Shell其实不难.但是语法在我看来比较丑陋@_@. 看看wiki就可以学习大半了..主要还得是联系. 我们可以看到一个现象.一些公司在招聘高级PHPer的时候这条也列为必须条件了. 其实网上linux的资料非常多. 大多数你遇到的问题别人都会遇到.所以善于用Google. 并且熟读英语. 9.语言的问题 这个的问题就太多口水战了.最终谁也没有战胜谁.我们不必去参与这些无聊的事情.这些都是年轻粪青要做的. 你再牛B你有Linus牛B吗? 他喷C++的喷了这么多年.C++怎么样了? 所以我们不必纠缠这些.做好自己做的就OK了. 既然你选择了PHP.就不要犹豫. 也许我们在做项目的时候PHP显得不够用了.那我们可以用Java或者C来做个中间件.这又何尝不可. 一种语言发挥她的最大最用才是真理. 10.态度的问题 态度一定要谦虚谨慎. 这是作为一个程序员应该有的美德.切勿自我膨胀. 你学的越多 你就会发现自己不足就越多. 等你牛B了你可以说一些狂妄的话.但是现在我们都不牛B.至少如果你看到我写的这篇文章.你应该还不太牛B. 我说了这篇文章是面向初学者的:-) 11.女人的问题 呃..这个自己解决吧@_@

PHP与J2EE的对比

网上有很多关于PHP与J2EE之间的对比,细观无非以下几点:

1.语言特征

PHP为脚本语言,解释型语言,弱类型,专为Web开发打造。Java为C语言系编程语言,编译型,强类型,有跨平台的特征。从语法简洁性来说,PHP比Java简洁,毕竟PHP诞生比Java晚,同样的逻辑在PHP中表达起来会简洁于Java,这一特性导致同样熟练度的PHPer与Javaer相比PHPer编程速度要快于Javaer。在这里我要强调的是同一熟练度,这个概念很重要,在没有前提假定的情况下比较两种编程语言的熟练度是没有意义的,比如一个新Phper在开发时对PHP语言不熟练,开发过程中需要频繁的查阅相关文档,那么这个新PHPer开发速度肯定比不上老Javaer,因为新PHPer在查阅文档的时间内,老Javaer可以完全依靠熟练度填平语法上的效率差异甚至超过新PHPer。

2.执行速度

语言特征决定了执行速度,在执行速度上,网上也有很多对比,总结而言Java优于PHP,但事实上比较两者的执行速度意义不大,因为Web应用的效率瓶颈是在对数据库的相关操作上,需要强调的是PHP与Java同样是作为Web服务器开发语言,功能都是操作数据库服务器以及动态网页呈现而已,如果网站多数以静态页面的形式呈现给用户,那两者比较毫无意义。

3.部署方式

PHP典型的部署方式是LAMP,即Linux系统+Apache服务器 +MySQL数据库+PHP语言,而JavaEE的部署方式有Linux系统+Tomcat服务器+Mysql数据库+Java语言,不同之处只在于服务器与语言的选择,Tomcat与Apache都是开源免费的服务器,从部署上来讲两种语言都有可行的解决方案。但在这里重点讲的是虚拟机主机,国内的虚拟主机大多不支持Java,即便支持Java也贵于PHP,而且Java应用大多使用Tomcat服务器,而java虚拟主机是共享Tomcat进程,如果部署到该服务器的其它应用影响到了Tomcat进程会导致所有应用都无法使用Tomcat进程,因而主机服务商维护Java服务器成本高于PHP服务器,所以这也导致了PHP在Web端独大的现状。当然不用虚拟主机则完全没有这样的顾虑,如使用云服务器,云服务器可以自行配置相关环境,而自由是把双刃剑,安全但是价格高。在这里PHPer与Javaer的不同是在编程环境上,有人说PHP可以热部署,不用像Javaer编写Web应用时每次改代码都需要开关服务器,部署应用,再调试,事实上Javaer也可以热部署,在Intellij中只需要一个按钮。

5.团队配合

在提倡前后端分离的互联网环境下,模板开发方式导致的前后端高耦合越来越遭人摒弃,如今,Web应用后端只需要提供相应的数据接口供前端调用即可,典型思想如RestFul。所以在团队前后端配合角度,PHP与Java并无太大的区别。若Web应用考虑SEO搜索引擎优化仍采用模板开发的模式,则PHP语言对前端的友好程度则高于Java。

5.系统架构

在系统架构这方面,Java毫无疑问完胜,Java拥有多种架构选择,常见的SSH框架即Struts+Spring+Hibernate、SSM即Spring MVC+Spring+Mybatis、SM即Spring boot+Mybatis都可以作为web应用的框架选型,这些框架能够很好的将后端模块进行分离,根据具体需求的不同选取不同的MVC层、业务层、持久层框架进行开发。有人说PHP也可以做到,说PHP有很多的框架也可以做到分层架构,ThinkPHP不就是国人开发的PHP MVC框架么?PHP有框架这点毋庸置疑,但是PHP从语言特性上来讲并不适合做框架,框架和面向对象编程思想有很强的联系,而PHP语言特性上对面向对象并不友好,这也就导致了PHP在框架这条路上其天花板与Java相去甚远。在这里有些PHPer毫无疑问会义愤填膺,但事实如此,PHP的语言特性偏向与面向过程,其旨在开发特定的业务逻辑,这也是PHP适合Web开发的原因。又有人会说,PHP5.0之后也支持面向对象,但事实上PHP也是不得已而为之。关于面向对象和面向过程的区别此处不表,但总而言之所以对于系统架构而言,PHP和Java都有各自的应用场景,在没有前提假定的情况下去比较两者,难分优劣。

版权声明:本文由bob体育app发布于编程,转载请注明出处:黄金年代篇有趣的技能小说php介绍篇_php功底_脚本之家