백엔드 개발 PHP 튜토리얼 一篇有意思的技术文章php介绍篇_PHP

一篇有意思的技术文章php介绍篇_PHP

Jun 01, 2016 pm 12:17 PM

身为一名中级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除外)
复制代码 代码如下:
header("Content-type: text/html;charset=utf-8");

这样可以避免一些问题.比如我们可以看到有些网站submit后就是一个alert然后跳转.但是他们没有设置编码.如果他的编码跟浏览器的默认编码不一致.就会出现乱码了.
你是单纯的HTML.一定要记得把meta的编码标签放到title标签前面. 如果你不理解就记住把编码的信息放到head标签的第一行就可以了.最终的效果是这样的
复制代码 代码如下:



...

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.女人的问题
呃..这个自己解决吧@_@
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. Apr 05, 2025 am 12:04 AM

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

확실한 원칙과 PHP 개발에 적용되는 방법을 설명하십시오. 확실한 원칙과 PHP 개발에 적용되는 방법을 설명하십시오. Apr 03, 2025 am 12:04 AM

PHP 개발에서 견고한 원칙의 적용에는 다음이 포함됩니다. 1. 단일 책임 원칙 (SRP) : 각 클래스는 하나의 기능 만 담당합니다. 2. Open and Close Principle (OCP) : 변경은 수정보다는 확장을 통해 달성됩니다. 3. Lisch의 대체 원칙 (LSP) : 서브 클래스는 프로그램 정확도에 영향을 미치지 않고 기본 클래스를 대체 할 수 있습니다. 4. 인터페이스 격리 원리 (ISP) : 의존성 및 사용되지 않은 방법을 피하기 위해 세밀한 인터페이스를 사용하십시오. 5. 의존성 반전 원리 (DIP) : 높고 낮은 수준의 모듈은 추상화에 의존하며 종속성 주입을 통해 구현됩니다.

시스템 재시작 후 UnixSocket의 권한을 자동으로 설정하는 방법은 무엇입니까? 시스템 재시작 후 UnixSocket의 권한을 자동으로 설정하는 방법은 무엇입니까? Mar 31, 2025 pm 11:54 PM

시스템이 다시 시작된 후 UnixSocket의 권한을 자동으로 설정하는 방법. 시스템이 다시 시작될 때마다 UnixSocket의 권한을 수정하려면 다음 명령을 실행해야합니다.

phpstorm에서 CLI 모드를 디버그하는 방법은 무엇입니까? phpstorm에서 CLI 모드를 디버그하는 방법은 무엇입니까? Apr 01, 2025 pm 02:57 PM

phpstorm에서 CLI 모드를 디버그하는 방법은 무엇입니까? PHPStorm으로 개발할 때 때때로 CLI (Command Line Interface) 모드에서 PHP를 디버그해야합니다 ...

PHP에서 늦은 정적 결합의 개념을 설명하십시오. PHP에서 늦은 정적 결합의 개념을 설명하십시오. Mar 21, 2025 pm 01:33 PM

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

PHP의 CURL 라이브러리를 사용하여 JSON 데이터가 포함 된 게시물 요청을 보내는 방법은 무엇입니까? PHP의 CURL 라이브러리를 사용하여 JSON 데이터가 포함 된 게시물 요청을 보내는 방법은 무엇입니까? Apr 01, 2025 pm 03:12 PM

PHP 개발에서 PHP의 CURL 라이브러리를 사용하여 JSON 데이터를 보내면 종종 외부 API와 상호 작용해야합니다. 일반적인 방법 중 하나는 컬 라이브러리를 사용하여 게시물을 보내는 것입니다 ...

프레임 워크 보안 기능 : 취약점 보호. 프레임 워크 보안 기능 : 취약점 보호. Mar 28, 2025 pm 05:11 PM

기사는 입력 유효성 검사, 인증 및 정기 업데이트를 포함한 취약점을 방지하기 위해 프레임 워크의 필수 보안 기능을 논의합니다.

See all articles