也谈高手

下班回家,跟同事聊起来,何谓“高手”的话题,突然一句“你觉得自己是php高手吗?”,我随口答道,高手戴引号帽子的高手。呵呵O(∩_∩)O~!所以忽然想谈谈“高手”。

既有定义,高手必然存在,不是什么遥不可及的人。我们有幸还是可以达到滴。回到编程,PHP高手上来,或者C++、C、Java等等编程语言来,高手跟我们的区别还是蛮大滴。平常我们一直挂在口头,每每开会总会捎带着,信誓旦旦 “可读性、可维护性、接口良好性、可移植性、通用性、高效性”其实都是些,说起来容易做起来难的事。每每耳提面命,估计是让我们自我督促一下,“听到没,达到那些苛刻的要求才能接近高手”。

确实如此,同样的一个模块儿,高手编程时考虑的事情,思路跟入门级别的人会有所不同。而且往往达到高手一级的人,大都已形成自己独特的编程思维,或者类似于传统瓦匠、瓷匠的技艺手法。遇到什么的情况,如何处理,才能满足那些苛刻的要求,高手都有一套自己的策略。 Continue reading »也谈高手

PclZip:强大的PHP压缩与解压缩zip类

PclZip简介
PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip、PKZIP);且能对此类类档案进行处理,包括产生压缩档、列出压缩档的内容以及解压缩档案等等。

简单、易用、强大是我对它的评价。

最近在开发我的Wordpress插件ShareLink,在这过程中,发现了PclZip这个操作zip文件的PHP类,不得不推荐下。

还有另外一个推荐的原因就是在它的源码里面让我发现了一个PHP函数参数的淫荡用法。下面将举例说明。 Continue reading »PclZip:强大的PHP压缩与解压缩zip类

php之set_time_limit

php 页的执行时间通常服务器端都会做出限制,如通常默认 max_execution_time=30   //(seconds)

当执行某些耗时的程序时,需要额外增加执行时间限制,此时可以采用 set_time_limit.

set_time_limit函数的功能是设置当前页面执行多长时间不过期,需要注意的是set_time_limit 会重新启动超时计数器为零,可以认为是从set_time_limit函数调用开始额外增加执行期限。例如网页通常执行30秒,若当执行到25秒时,调用了set_time_limit(20),则网页可实际运行达45秒,即还可以最大运行20秒的意思。

同样的注意设置无限时间可以为set_time_limit(0),实际应用中用set_time_limit(实际数值)比较好。

php过滤器

几乎所有 web 应用程序都依赖外部的输入。这些数据通常来自用户或其他应用程序(比如 web 服务)。通过使用过滤器,为了能够确保应有程序获得正确的输入类型,所以应该始终对外部数据进行过滤!

php中的过滤输入函数就是Filter,主要有:

  • filter_var() – 通过一个指定的过滤器来过滤单一的变量
  • filter_var_array() – 通过相同的或不同的过滤器来过滤多个变量
  • filter_input – 获取一个输入变量,并对它进行过滤
  • filter_input_array – 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤 Continue reading »php过滤器

PHP中的Session机制

做web开发,必然会涉及到Session,这是由于http协议本身是无状态的(每次响应都是独立的,彼此间没有联系),所以如果需要在页面跳转间保持某个用户的身份,就要在每次连接时告诉服务器端你的唯一标示号,即Session ID。这样,服务器端便可通过Session ID得到所需的数据。

在PHP中,Session是通过$_SESSION这个全局变量来set/get的,不过在使用之前要先初始化。初始化是通过 session_start函数(如果php.ini中将session.auto_start设为1,则会自动初始化),之后PHP会为request 自动生成一个唯一随机数作为Session ID,生成算法默认提供了MD5 (128 bits) 和SHA-1 (160 bits),由php.ini中session.hash_function设定。其实也可以自定义,比如在随机数基础上将来访者的IP地址也加入到算法中,像CodeIgniter1.7.2中代码: Continue reading »PHP中的Session机制