分类: 系统运维
2011-10-26 09:51:10
--献给怀揣着梦想来到兄弟连学习的兄弟姐妹们
历经一个多月的基础知识学习,必然会迎来第一个项目,正是张晓光老师所说的第一道砍,我相信大家面对第一个项目感受都是一样的,都会从矇眬期到发展期经历不同的阶段。接下来我将项目过程总结项目为四个阶段,每个阶段分别谈一下自己的感受,文中不当之处,望兄弟连的老师及兄弟们多多指点。
一、矇眬期
戒骄戒躁,端正心态。
面对第一个项目,开始都会觉得无从下手,尤其是还没有从函数、数组晕过来的兄弟们。遇到这种情况的兄弟姐妹们不要急,这都是正常现象,是这个阶段必然要经历的过程。其实这个阶段最重要的是心态,一定不能急。
项目以商城为例,开始之前一定要找个商城安装并熟悉一下程序的功能和购物流程,引用李超校长的例子:如果你不知道汽车是个什么东西,没有见过汽车,那么你很难学好汽车维修。为操作电子文档做准备,并设计好数据库结构及功能模块,否则后期会边做边修改数据库。
以我为例子:准备阶段我安装的是ecshop,并根据程序功能列出了我想要实现的功能,但这个过程中要注意一点,不要贪图太多,开始我花了很多时间整理并列出了很多功能最后都没有又一点一点的除去,的确是很费时的一件事,更令我郁闷的是接下来数据库的结构及功能模块老师都会给你设定好。
如果大家还没有思路的话,给大家一个建议就是根据购物车的流程来写,站在客户的角度,写完购物车程序也就差不多了(借凯哥的话)。
二、成长期
跟紧老师步伐,提高效率。
这个时期非常重要,老师会带着我们将核心功能完成60%-80%。所以一定要消化好,在理解的同时提高效率,代码一定要加注释,包括利用空格和换行对代码进行排版,方便后期的阅读和修改,同时养成一个良好代码的编写风格。
如果还是不理解某些功能模块,除了问老师同学外,建议多花一些时间将例子打几遍,你会发现等你打到第三边的时候就知道代码意义了。
值得一提的是,由于前面我们学了函数,所以在这个阶段可能会人会写自定义函数来实现项目的功能,写自定义函数,虽然提供了代码的重用性,但函数内部的代码会利用的较少,也加深不了印象,个人建议除验证码文件上传外都不要写自定义函数,毕竟这个项目是面向过程的,一生也许只有这一次(引用张涛老师的话)。
三、发展期
互帮互助,拓展视野。
这个阶段都会在老师的代码上去完善功能,每人也有了自己的思路和感觉。为了确保项目的进度和方向,建议列出功能模块,并根据功能模块记录到一个记事本里面,一点一点的实现,实现一点删除一点。(引用李明老师教的方法)
数据的备份一定要重视,虽然老师强调了很多边,但在我身边还是出现了这种现象,但是为了确保安全,项目最好同学之间想到备份一下。(引用李明老师教的方法)
项目过程中有想法要一次性实现,如果写不完也要记录下接下来要实现的思路,否则再写的时候你会无法下手,所以要重视注释的重要性。
项目过程中遇到问题一定要多问,多讨论。同一个功能看一下其它同学是如何实现的,给自己多一个思路。虚心答疑,相互帮助是必须的,但在项目过程中大家都为了赶项目而忽略了过程中知识的重要性。所以我个人建议,遇到问题要共同讨论,而别人问你时,你也要静下心来看看这个问题的所在,不要担心影响自己项目的进度,那怕不能解决问题,也可以提出一种思路,更重要的是你在思考他的问题的同时也给自己带来了不同解决问题的思路和方法完整省去了你自己遇到问题所花的时间。
细心。看到这一点大家可能会感觉老生常谈。但细心真得很重要,一定要给自己打一个预防针。
四、结束期
有始有终,全面兼顾。
思路会很清明,会想到自己的项目存在很多可能性BUG,而且测试的时候经不起测试,这个时候你花很多心思去修改项目,完善功能。而你越想就会有越多的BUG出现,你会修改到自己想吐的地步,最后一定要留个时期来预习面向对象,否则你会晕在对象里面。还有一个就是PHP的基础考试。
五、谈几点小技巧:
0和1
0和1两个数字用在 “性别”时,会出现问题,因为在程序中1代表真,0代表假。当时也不是没有办法实现,只要如果注意单引号与双引号就可以正常使用,单引号是不解析变量的,所以这个时候需要用到单绰号。
Echo
这个单词看上去简单,我相信项目结束之后你会喜欢上他, echo 可以打印出sql语句,看一下你的语句中那些值是没有获取到的,能快速定位你的错误所在,
数组的使用
打印函数如var_dump或print_r,数组的使用很方便,建议大家研究一下,我的在项目的head头里面将分类及商品的相关信息都存到了一个数组里面,结果导航与分类页面和产品详细页面可以非常方便的直接调用。
字符串的截取substr问题
由于UTF8编码一个汉字占用3个字节,所以截取的时候要截取3个字节,否则会出现乱码。
解决没有思路时的基本方法
其实就像初中学习的几何证明题目一样,从两端向中间推理。不要急着想如何一次性写出SQL语句来,先写出最终的SQL语句,如果实现需要那些值。再根据现有的条件能查出什么来,这里面的字段有没有其它库里面的,如果有还有根据这个如何查询。有兴趣的朋友可参考论坛:
隐藏表单
主要用来修改会员或修改商品信息时,随着POST或GET传递一个隐藏的值和参数达到定位具体的会员和商品。
删除商品时删除图片
如果删除了商品要删除图片,虽然在真正上架的网站中可能没有删除功能或是只有回收站的功能,但如果真正需要删除时,一定要记得删除图片,否则就会出现一个垃圾数据在里面,其实只要在删除数据库数据后再判断图片文件是否存在,如果存在就unlink一下就OK。
修改时图片问题
这个与上面的一样,如果修改商品时我只修改其它字段不加以判断就会使图片路径为空,从而导致数据库中的数据丢失,所以需要在修改页面加上如果$files['tmpname']为空则将赋给之前的值,如果有值则赋给$files['tmpname']里面的值
where 1 =1
拼装sql时非常有用,尤其是联合查询时,如搜索或分页。只要你使用之后就会觉得这几个词的强大性。
正规与字符串替换
在编写验证邮编时,除了采用正规外,还可以采用字符替换,首先将提交过来的值过滤掉数字,trim($postcode,'0..9')
项目最后蔡老师给我们讲了支付宝的接口,觉得很有意思,建议大家有机会实践一下。
ps:不写了,被同学们笑话了,因啰嗦得太多....
原文地址: