网络上关于uchome的二次开发的讨论和研究蛮多,我也是站在这些前人的肩上走过来的。以前是写c++,做应用程序的,从一个web开发和php的门外汉到基本了解web开发方法,也算是经过了一个艰难的时期。不过总体来说,还算顺利,很感谢上一个公司项目给我的帮助 - 用c++写得cgi,让我对http,html,json,javascript,xml+xsl,flash都有一定的基础。
我想,用c写过web程序的人,在理解上可能比直接写php,jsp,asp的朋友来来的深刻。因为有很多web程序的基础构件要靠你自己来完善,但是现在主流的服务器后台语言框架都帮你做了,比如说:get/post的数据编解码,http头,url重定向,缓存机制,session。我不算是精通,但从c写得cgi角度来讲,也算是入门了吧。总之,如果有对web开发原理感兴趣的朋友,可以考虑用c写写cgi。呵呵,扯远了。
对uchome二次开发,我认为简单来说必须掌握以下几点:
网站入口文件需要include common.php
比如space.php, cp.php, do.php,作为网站入口,需要初始化很多全局变量,比如$_SGLOBAL
在入口php之后,是具体的模块php,具体的分发机制在入口文件中实现
你需要了解其原理是url中‘ac'或者'do'字段指定的内容,比如cp.php?ac=profile,那么打开的就是模块文件就是cp_profile
然后你需要掌握uchome里面全局变量的作用
这里有很多朋友都有说过,你可以google以下,我用的比较多得可就是$_SGLOBAL['db']和$space
调试方法
你最好有个支持debug的浏览器,我用的是google chrome,你可以用firefox。另外uchome里面的API showmessage()也很有用,可以查看很多变量。当你不清楚某一个全局变量到底是什么东西时,你可以用print_r在模板里面打出来,比如<!--{eval print_r($space)}-->,或者直接在php文件中用showmessage(print_r($space,TRUE))
最后讲一下对uc_client的扩展
uchome主要使用了php的call_user_func()函数,在uc_clinet/client.php中,一般指向uc_api_mysql,而uc_api_mysql()函数则负责分发到uc_client/control中的on*函数,再由on*函数call到uc_client/model中操作uc数据库。
末了,欢迎大家来我的网站“乐上网”,这是个基于uchome二次开发的SNS。主要功能是帮助你找到和你兴趣爱好相同的朋友,这是一个专门针对“兴趣爱好”的SNS,在乐上网,兴趣爱好不再是自我简介中的一段话,而是可选项。现在网站还比较朴素,但基本功能已经具备,希望大家来提点意见!