您的位置:首页 > 编程语言 > PHP开发

PHP学习资料

2012-08-23 14:47 197 查看
很久没有写新的随笔了,今天写一篇关于PHP的。

春节期间研究了几天PHP,自己做了个小网站。

对PHP本身,个人没有什么特别的经验可以分享,有些技巧将在本文适当的地方介绍。

PHP的语法和C类似,只是没有指针等底层类型。同时和许多脚本语言一样,PHP的数组也是一个map,可以用任意类型作为下标。懂C/C++/Java/C#/JS语法的人学起PHP来上手会很容易。使用PHP的难点应该主要在对web响应方式的理解。

网上的PHP资源非常丰富,我下载了一些资料并且打包上传到了玻璃的FTP,有感兴趣的可以到这里下载。
拥有相当丰富的库支持,PHP做起应用来非常方便,但是因为缺乏类似namespace等源文件命名空间分隔的方法,在大的工程应用中,更容易面临命名冲突的困境。

学习PHP的过程中主要遇到了几个问题。

1,多语言支持。

PHP提供了不同编码(包括GB,UTF-8等)之间互相转化的函数(iconv),理论上可以轻易处理不同的语言和编码。但是实际上,相当多的免费主机都不支持这一系列的编码转化函数。

然而值得庆幸的是PHP自身完整支持UTF-8,这就为多语言支持打下坚固基石。

你只要把所有(或者必要的)PHP源文件格式转化为UTF-8格式,然后在http的meta节指定网页编码格式为UTF-8,一切问题都迎刃而解。

浏览器会自动把用户的输入转化为UTF-8格式从而完全避免的服务器端的编码转化问题。

一个值得注意的细节是:如果你使用windows的记事本对源文件进行格式转化,记事本会在文件的头部添加额外的字节以标识文件格式。如果你在代码中做了修改http头的操作,那么请使用任意一款16进制编辑器把这些额外的字节删除,否则这些额外的字节会导致http头被发送从而使得后续的修改失败。

2,TrueType字体的支持

为了支持TrueType字体,PHP必须安装和启用GDlib和FreeType lib。遗憾的是相当多的免费主机也不支持FreeType lib。你可以使用非TrueType字体避免这个问题,但是在中文绘制方面,非TrueType字体的资源非常罕见。

PHP的字体绘制系列函数要求使用UTF-8编码格式,但是并没有一个字体文件能提供全部文字,所以要支持多语言文字的绘制仍然是一个麻烦事。

我曾经考虑过拆分每一个UTF-8字符然后使用某种方法定位其语言,但是由于CJK交集的问题难以实施。

3,加密/解密系列函数。

再次遗憾,多数主机都不提供这一系列函数的支持。这些加密/解密函数囊括了DES/3DES/AES/RSA等主流密码学算法,毫无疑问相当多的算法都是非常耗费CPU资源的,这应该是主机避免支持这些函数的原因之一。

加密和解密函数存在一个细节漏洞。这些函数的输入和输出都是使用“字符串”类型。但是由于相当多的密码算法对原始数据的长度存在要求(例如必须是2的某个幂次长度),导致解密后的结果和原始数据存在一定的差别(一般是多出了额外补齐用的字节)。

我没有寻找官方的解决方案,而是在原始数据末尾添加特定的边界字符,然后从字符串末尾开始的查找,所有边界字符之前遇到的字符全部被忽略掉(我没有跟踪这些字符的数值,但是我想它们应该是0)。

4,调试

和许多脚本一样,PHP无法单步调试,这是个麻烦,不过并不致命。PHP的错误输出信息相当丰富和准确,可以帮助你快速定位到出错的代码,并且你可以使用任意的输出语句来显示你添加的调试信息。

其他可用的PHP网上资源:

 chinaunix.net的PHP论坛,虽然我很少去,不过这里的资料对于入门者还是有很大的帮助的。
中国PHP联盟,我也很少去:)
PHP官方站点,E文站点,不要因为自己文差就不去看E文站点。

不多介绍,这些站点内部提供了很多其他PHP资源的链接,需要的话自己点就是了。

如果有兴趣自己做个小网站,个人推荐用PHP/ASP/JSP作为开发语言,理由非常简单:支持这些开发语言的免费主机数量相对比较多,你很容易找到一个落脚点。如果使用ASP.NET/Ruby on Rail一类新兴或者罕见工具,恐怕多数时候只能在自己的电脑上跑。要么就得花钱买支持这些的主机空间。

既然提到主机空间,顺便推荐几个免费主机搜索引擎:
http://www.hostsearch.com/
http://www.free-webhosts.com/
http://www.clickherefree.com/hosting-free/

相当多的免费主机不允许非英文站点,同时相当多的主机不允许免费邮箱注册。

不过邮箱的问题可以通过简单的方式解决:注册一个不知名的免费邮箱即可^_^

最后再提供几个网站发布的资源:
http://www.announce.com/ 
http://www.freewebsubmission.com/

好了,以上这些就是我能记得起来的关于网站开发的全部了,现在正在看Ajax,如果有心得就再写一篇~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息