紧赶慢赶,终于用PHP完成了一个CRUD的小模块,感觉自己写的不是很好,结构很是混乱,本来也想细细的架构一翻,可是时间不允许啊(下周还有新的任务)。用惯了ROR的框架发现整个人像个温室的花朵了,突然用起PHP感觉自己什么都不会了,编码的速度明显下降,唉~~ 突然想感叹一下MVC架构在构建WEB服务中起的作用是多么的大啊!
不过经过这两天不是很爽的编码,又让我重新认识了MVC架构,让我有一种很想一探究竟的冲动。目前对PHP的学习还处在对语法、函数库的熟悉阶段。以后学习的路还很长,切不可松懈、怠慢。习惯使用纯面向对象语言,在编写PHP的时候总是很想往对象、类这方面想。虽然PHP在面向对象方面显得有些单薄,但感觉它也正在慢慢的向面向对象过渡中,慢慢的强大起来。最近给我感受很深的是模式的重要性。无论是什么语言,只要拥有良好的思想都能编出很强悍的代码来。感概就这么多,下面接着总结PHP的东东。
文件上传:
首先说一说php.ini这个东东,它是php运行环境的配置文件,用来设置PHP可以使用功能的参数页,它是php的全局配置文件。但到底是什么时候被加载的,配置指令都是用来干什么的,有待研究。
PHP的文件上传方面比ROR做的好,语言本身已经替我处理的文件的读写过程,可以不用处理流,只用将文件从临时文件夹拷到目的地就OK了。
在文件上传方面有这样一段配置指令:
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20
文件上传后在服务器上的缺省目录是“C:\WINDOWS\Temp”
$_FILES超级全局变量很特殊,它是预定义的超级全局变量数组中唯一的二维数组。其作用是存储各种与上传文件有关的信息,下面具体说说它们:
- $FILES['userfile']['error']数组值提供了与上传尝试结果有关的重要信息共有五个不同的结果:
- 0 表示上传成功
- 1 表示试图上传的文件超出upload_max_filesize指令指定的值
- 2 表示试图上传的文件超出max_file_size指令指定的值
- 3 表示试图上传的文件没有完全上传,如:出现网络故障4
- 4 用户没有指定上传的文件就是提交表单
- $FILES['userfile']['name'] 保存文件原始的名称,如:logo.gif
- $FILES['userfile']['size'] 指上传的文件的大小,以字节为单位
- $FILES['userfile']['tmp_name']指上传到服务器后为文件赋予的临时名
- $FILES['userfile']['type'] 指从客户端上传的文件的MIME类型。例如:image/jpeg
在写文件上传的时候会用到两个函数:
- boolean is_uploaded_file(string filename) 确定输入的filename是否使用POST方法上传。
- boolean move_uploaded_file(string filename,string destination(目的地)) 将上传文件从临时目录移动到最终目标的一个便利方法。虽然copy也同样好用,但是move_uploaded_file()还提供了一种额外的功能,它在拷贝前会先执行is_uploaded_file,所以如果用move_uploaded_file就不用再用is_uploaded_file了。