麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
我写论坛时所收获若干极重要php概念分享(超长篇/精彩图/实战/实用/心血)
悬赏分:20 - 2007年08月17日

首先,感谢PHPX论坛给我这个机会。

自我简介:与各位专业PHPER不同,我是半路出家的PHP狂野爱好者,学龄九个月,主要的学习资料是国外书籍,国内、港台资料少许。

这次我想从“重视PEAR类”来谈,图全在后面,您一看就得乐。以前我不重视,也没有人让我重视,但实战中我发现,必须重视。PEAR的地位与SMARTY一样重要,堪称PHP的左膀右臂(目前我比较理解SMARTY,但对于PEAR:B的 真正意义不太理解,听说要扩展成你自己的才是根本目的?我没用过PEAR DB,但目前在实战中使用了其他梨库)。SORRY,因我语无伦次,有些东西胡说,您爱看就看,不爱看就直接看我的PEAR宝库部分,大家一定要使用PHP的CLASS,各方面的CLASS都能找到,不是有PHPCLASS的站吗?

http://www.phpclasses.org/

我就找到缩略图生成啦,还能上传时加字啥的,水印功能,很好用,挺强的。快去找找自己需要的吧!!我自己有分页的类,也很强。后面您会看到在程序中使用类和模板,PHP程序的变化之大,真是我当初自学时死都想不到的。用类?先要学习一下类的基础知识,我是花了一周左右的时间学习并写了类,因此现在用类觉得爽,也不难。但一定要懂对象、方法、属性,继承啥的因为PHP毕竟不是专业JAVA,我也没有这个能力去理解,不过我的SMARTY还真是用到了EXTENDS,哈哈哈。像是GD库,PHP安装时就已经内带了2.X版,我们在PHP.ini文件中去掉一个分号,直接就可以使用。GD库的函数非常多,别人会用,我目前是顾不上学习。我供养大家这个站点,是纽约PHP,大家应该听说过,里面有GD专区,GD的学习就是这么简单啊!!!可见,外国人确实比国内要高明。

http://www.nyphp.org/content/presentations/GDintro/gd1.php

我通过使用现成的类,PHP的编程还是省了大力的。不瞒您们说,有些网站,凡是让我感动的,只要他有广告,我无不全力呵了命的去点击,尤其是GOOGLE的。

像是下面这个网站,我就眼含热泪,全力以赴地于深夜时,打开其全部页面(他的页面是这么有限,但又那么重要),我拿出董存瑞的精神,猛烈的点击GOOGLE,外国人让我感动,不是一般的,而是流泪来感动。
http://www.php-mysql-tutorial.com/
我建议所有有缘人,PHP初学者,来这里入门,一周你就能圆满。我再次感叹外国人的敬业,他们是好样的。开源有戏!!!

我知道我一次能创造三美元给他们,特别重大的,我甚至天天去点击。希望大家也经常点击PHPX的广告,注意,一定要猛力地点击,不要点一个两个,要打开很多页面,畅快的点击。(此段话版主若认为不妥,请删之即是)

目前,我已拥有自己的发布系统,该系统是由自学初期的慢热原始版,经实际架站检验后,进行重大改造而成。PUB的前后台统统基于SMARTY模板,真正无限分类(半自动编辑或删除。程序而之复杂,可不光是我基于模板来构建后台,主要是不使用递归,很多东西要动脑子想。并在这个程序上进行大刀阔斧地改造——这个程序,是非常好的,只怕你看不进去,不能去理解作者的超级无敌编程功力——

http://fy168.9915.com/html/web/php/573/43999.html

您在引擎上搜索“PHP  进阶 无限分类”就能找到这篇文章。我要说作者太强了,这远远不是递归所能搞定的,听说弟归要用到JOIN>LEFTJOIN>ON ON ON这样的语法?而这里的父ID处理方式是很简单的,但无法删除或是编辑,要从底层草起,我感觉这没什么,重要的是简单,直观。这篇文章非常难读,我用了两天预读,三天精读连写,又用了两天来完善,搞定了基于SMARTY模板的无限分类。他的程序中有一些BUG,而我修正了,并进行了一些扩展应用,以符合PUB系统的要求。

其实一个父ID就把我这PHP雏鸡给搞死了,再结合发布系统来搞,确实比较晕菜的说。我可不像各位国产JAVA大师,受过正规“数据结构”训练,咱PHP自慰玩家不需要那些东西。),我的发布系统要求每个频道有自己的文件夹和主页(分类时即要求填写文件夹名字,并入数据库),HTML文件存放的路径和文件名的“格式”可随需而定,真正生成HTML(避免了使用CRON或OB_GET_CONTENTS),新闻内容的HTML页提供评论表单,提交评论后再次生成HTML并跳回,支持单条新闻分页(哈哈哈,这时我只在第一页显示评论以节约资源哦),以及PHP代码高亮显示。但我的系统不想在网站首页、新闻分类的更多页等地方使用静态页,此时一律使用加载了CACHE的SMARTY PHP页面,而没有去强行生成这些页面的静态页——虽然,我可以在添加新闻时,指向首页去生成HTML——但用SMARTY缓存的实际效果与静态HTML是一模一样的:那就是“不走数据库,定时生成,高速至极”。非常美妙,大型首页的十次甚至几十次,几百次查询统统避免了)。而且,我由于不懂JSCRIPT,因此三级联菜单无法制作或抄袭(何况无限级分类似乎也无法“三级级联”,你六级级联我看看。会爆头的。)。另外我还建立了导读系统,但我的导读没有像J2EE的系统那样“大宗入库”,我只是做了一些简单的标记,能够在页面的指定位置,显示指定的内容罢了。如果连导读部分也要完善地“入数据库”,那么工作量将加大不少,而产品价值必将翻番。因为我自己的PUB不是J2EE,因此编辑人员在使用上只能发布,无法制作主页或其他模板——谁让你不懂SMARTY呢?倒霉的是这些东西全需要往里面填函数,虽然我自定义了四个SMARTY的块儿函数或是LATEST函数,但仍然很多时候要自己写IF ELSE甚至再定义所需之函数,尤其时变量调节啥的(前几天发的贴比较夸张,您也看到了),因此自动程度虽远不如J2EE的十万元级发布系统,但我要说,SMARTY在手我一定能做出比他们的高自动化程序要美丽、复杂的网站来。我确信如此——再者,越贵的.Net PUB系统,编辑人员需要学习如何使用的过程就越困难。嘿嘿……

另外这里提一句,只要你有发布系统,并且当你能够实现大型门户站那种分类和HTML生成规格之后,做购物车将不费吹灰之力。这时的购物车的主要页面将不再是PHP页面,而转为HTML静态页面,直到你点击了某“商品介绍”的静态页中的“购入”链接之后,方才根据这条HTML“新闻”的ID号,来从数据库中解析出相关信息,进入购物车的PHP页面,即显示“你买了啥商品呀、是否要改变其数量呀,是继续购物呀还是结算呀”这个页面(没错,就是购物车程序中定义SESSION变量的那个页面!!哈哈。而在这之前的任何页面,全不费心思,直接利用发布系统搞定)。因为啥呢,所有商品,都有自己的分类——你用发布系统把这些商品当做新闻发出来就可以了,而且全部是静态页,非常好。只不过,这时需要你在后台“新闻内容”这部分,按照购物车的要求进行些许改造就是了(而前台模板中必然要有产品特性的表格这种东东呀?),换句话说,购物车是一个非常完整的、后台经过一定改造的第二个“发布系统”,数据库也一样,适当地改造就可以了。

网上有一些CMS系统,一搞就搞出几十个“高附加值”的“模块”,包括购物车啦什么的,大卖高价。其他的我不懂,但购物车真的没什么。前台导读模板或是产品列表,全都可以按发布新闻那样去整,几乎没有任何工作量,而且相当灵活。唯一唯一的不同,是“相当于新闻内容页面”的商品显示页面,有一个链接,因为这链接的URL中有该商品的唯一ID,跳入PHP页面后可以从数据库中解析出该商品的一切信息。

以前我说过要写“十分钟精通SMARTY的办法”,但后来有大师兄勤于普及,真的要感谢他,我主要是没时间,再者PHP水平确实较低(确确实实,我有自知之明但仍遗憾国内PHP玩家的不敬业是我头痛到死的原因之一),导致SMARTY就算有所应用,那我表达起来也稍逊风骚。但现在我正在写论坛,确切地说,是参考了一些资料来硬拼一版论坛。之所以这么做的原因,是因为发布系统是非常简单的。我用到最多是三个表连接,形态是JOIN>JOIN>JOIN或是JOIN>JOIN>LEFT JOIN。但论坛不大一样。

诸如VIEWFORUM和VIEWTOPIC页面,都要用到足可用“匪夷所思”来形容的SQL查询。别人如何解决我不知道,但我自己玩儿时,感觉难度大、压力大。对SQL语句的艺术化应用,我有了更高层次的认识和理解。这并不像国内教材所说的,“艺术化”就是想查啥就能查到啥,什么“某几十年前的第八个星期五”这种。而是对于一个连MYSQL手册都没看过几遍的人(比如我),能不能来个霸王硬上弓?强行去突破写论坛的障碍和光环????????

什么时左链接?为什么必须用?我是不是把可以用JOIN的地方也糊里糊涂地使用了左链接,吃一顿大锅饭?说起来左链接是我在写发布系统时,新闻表和导读表全联接时遇到的,TMD一查就报错,当时第一个反应就是LEFTJOIN,为啥?因为导读表里的导读,只对应新闻表里的一部分新闻,你不可能查很多条新闻时去简单地JOIN导读,必须是LEFTJOIN导读,这样当某些新闻没有导读,其在导读表中的位置以NULL来填充。而有导读的新闻,你就可以找到所有信息来使用。

为什么一个SELECT语句中,要出现同一个表“两次”(即同一个表有被赋与两个ALIAS,出现两次),哈哈哈。因为你要取这个表的“张三”这个字段,又要取这个表“李四”那个字段,而“张三”和“李四”的求法各异,你不可能一次求得,所以要当成两个表来分别球之。我不知道说的对不对。

为什么COUNT()或MAX()时必须使用GROUP?GROUP在新版MYSQL里有球意义???用法上有什么需要注意的???我DELETE时如何一次删一个数组的多个值?用PHP的IMPLODE()和“,”来聚合什么,再放到SQL语句里就可以了?DELETE时USING多个表在实践时是否有用武之地?

什么是临时表?我为什么要建立临时表?我吃饱撑地锁定表干什么?有必要吗?有!有球?

我终于明白,为什么我的学习过程是从“抄程”开始起步了。你不抄,就学不到东西,不抄,就绝对不可能达到“实践+实战+敢想”的最高境界!!!——抄着默,默着抄,一边抄,一边想,脑袋想,手上抄……我的资质是很低的,是不够聪明的,和广大PHPER特别是PHPXER相比,我基本上就是扫地、提鞋的阶层,这我知道,但我要重审——ANDI说PHP是易学易深入,PHP就是让人民快速写站的,你们这些国产JAVA大师没资格看不起我们,你们必须知道,SUN连年亏损,JAVA也只是少数高手的大饼,而我吃窝头,您呢??

PHP的真正意义,就是充当窝头,来弥补JAVA的败笔之处。唉,说起来,我跑得正欢的ZDE,还是用JAVA编的,在WIN下跑得像骡子一样。

得了,我不聊了,您也不爱看。我放几张图,这是著名的PEAR:HTML库系中的一种,叫BBCodeParser,您分别看一下吧。

程序图(值得细看):
http://gungriffon13.com/upx/pix/7095_2339Snap8.gif
模板图(TPL规格,测试BBCODE用,未加载正式内容。所属为论坛中的viewtopic.php?tid=球蛋…)
http://gungriffon13.com/upx/pix/7515_6260Snap12.gif
数据库中post表里面“贴子内容”字段的内容图:
http://gungriffon13.com/upx/pix/2655_8940Snap9.gif
前台显示BBCODE(超强。IE下体现CODE和QUOTE似乎有鬼):
http://gungriffon13.com/upx/pix/7168_7382Snap11.gif
什么是BBCODE的国内最强讲解:
http://souen.cside1.com/bbs/NonCGI/ubbcode.html

BBCDOE我使用PEAR::HTML_BBCodeParser类。可能会耽误一些页面执行时间,但实际上我的论坛只有五六个表,很多东西我自己操纵,放到config.php或者是{#SMARTY_CONFIG#}里面,咱就别一搞就全功能了。我用过PRE_MOD的PHPBB,TMD高达五十多个表的论坛让IDC的管理员成天找我的事!!!随需而加吧!!!我知道RDMBS是可以随需而加的。我的论坛不但开放全体VBB,还要高亮显示PHP代码,更要主动开放HTML,没必要整得不人不鬼,您们看,动网论坛DVBBS,里面就又搞又搞那,弄得污烟障气,速度慢到死,小图标一大堆,ASP论坛真的可以淘汰了。我直接支持HTML,你根本搞不过我嘛!!!向日本人的CGI和简略外型学习!!!

其实,说起来,我论坛UBB原始版的设计是“由懂PHP的管理员,自我添加preg_replace(球1,蛋2+球蛋蛋3,$content)中的球1和蛋2+球蛋蛋3部分”,最可气的是居然要用到匹配全文([^[.+?]),这括号中的就是蛋2了,它不但有著名的TNND的GREEDY贪婪不贪婪问题,还有$1逆向引用,我们叫这个$1为“球蛋蛋3”……

以上,今日报告完毕,还要继续写,有乐趣。层次我肯定是上不去的,因为我没有编程的脑子,但勉强是够用的,自慰是没问题了,一来自己的网站自己写,二来也能获得一些快乐。论坛自写,PUB系统自写,SHOPPINGCART自写,您还要我这个学了九个月的雏鸡怎样!!!???苦就苦在没有教材,没有班。我学PHP还有一个自信是我测试过外国站的PHP程序员测验题目,我得了中上游的分,那时我还停在只看PHP文档的阶段,我就有一点信心了。希望大家猛烈精进,洪扬开源之风,互通有无,提高进步!!!!最后祈请国产JAVA大师再不必“言必草企业”,你愿意草当然好,但毕竟人民不可能全部转到去“草企业”中去。我们爱PHP没有道理,完全没有解释的必要,您就别让我们学JSP了。PHP就是要补充JAVA的不足的的,这叫见缝插针,我们期待PHP更加普及,又问SUN还能亏几年???而PHP进军企业已经成为必然!!!我再胡说一次,很多朋友看不起PHP的IDE,我有一些ASP朋友他们鄙夷地笑话过我,说你这个是“最好”,那WINDOWS下面的什么球蛋蛋VIRTUAL STUDIO你丫用过没有呢???我也不理他,我TMD还真装过六碟的MSDN及VS全套,不是没用过,也有教材教你设计WINDOWS或NET程序,去年四月份不是我很想学习ASP嘛?因为有ASP高手告诉我说“开源的最后结果都不太好”。后来当我研究一下DHTML中的VB时我立即走人了(真正是弱到死),永不回ASP,BS他们这些。还这个那个,要不是偶然机会我学习PHP和MYSQL,我还被他们给草了哩!!!我现在几个月做到的,单片机专业或是其他高手也未见得做出来。我知道PHP是专的,专的就比全的要高明,这是一定的,大家一定要逆市争气,不要被JAVA和.Net所困惑,坚定信心,学ASP的,应该在学会JS之后立即转学PHP,节省大量时间、精力,性能非常优化。

另,我最终的目标是全站像“PHPE刀耐”那样总体开源,就像PHP.net一样,像您们和其他外国爱好者提供的学习站一样。但偏偏我忘了怎么能一点击,就显示本页的源代的,这倒难了……咋整来着?有个啥页面在APACHE里改改来着,得了,我得牛肉拉面去了……另外我是模板,开起源来,岂不麻烦?还有我论坛采用模板会减速,但我自会一定程度是控制,甚至加速,啊哈哈哈哈哈哈!!!!!!!!!!!!!!我是不管三七二十一,模板优先啊。

好了,真的再见了。
header(location://http:smarty.php.net) || header(location://http:pear.php.net) &&  exit();

提问者:1341   08-17 11:11
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
37 + 8 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM