随笔 - 1330  文章 - 1  评论 - 378  阅读 - 482万 
uchome是个sns系统,但也是拥有深厚php技术积累的康盛公司的商业产品,本身有许多值得学习的地方,你可以用它来架设垂直的sns网站,也可以学习他的一些技巧,提高自己的代码水平,改善代码质量。

对于php开发而言,轻量的东西总是受青睐,cake,zend framework这些框架虽然很好,但是对于规模比较小的系统而言,还是过了些,利用从uchome里裁剪出来的东西,就能用简单适度的方式把系统做得足够好。

uchome的整个结构很简单,虽然也是mvc的模式,但严格来讲,并没有自己实现一套model,直接用数据库返回的对象,view是通过自己实现的一套模板方法来做到功能代码和界面设计的分离。
uchome的框架比较核心的几个文件:

source/function_common.php
提供常用的函数,例如获取post过来的字符串,获取用户身份,插入数据,更新数据,日志,模板调用接口,其中getstr,insertable,updatetable几个函数非常实用和方便。
看看gestr的函数参数;
function getstr($string, $length, $in_slashes=0, $out_slashes=0, $censor=0, $bbcode=0, $html=0)
截取字符串,转义字符,html化,bbcode都在里面
插入和更新数据的方式也非常简单,不用你自己拼接sql,以插入数据为例:
function inserttable($tablename, $insertsqlarr, $returnid=0, $replace = false)
我们插入员工信息,则可以这样写:
inserttable('staffs',array('name'=>'hankshuang','post'=>'de','age'=>25),1)


source/function_template.php
模板函数文件,提供模板文件的解析方法,被function_common文件中的template调用,将template目录下xxx.htm文件解析成xxx.php文件,将模板语法<!--{if $staffid}--><!--{/if}-->的代码转义为<?php if ($staffid) {?><?php } ?>,用 loop 来指代 foreach,解析的代码也不复杂,有兴趣可以仔细阅读下function_template.php文件里的parse_template方法,都是调用preg_replace进行正则表达式替换,通过这种方式,你就不用去编写混杂着<?php 和html的代码了,眼不见为净。性能的提高?交给下面的cache吧

source/function_cache.php
提供缓存的写入和更新,最重要的方法就是cache_write方法,看看声明:
function cache_write($name, $var, $values)
如果我想把员工数据缓存起来,那么对于$staff = array('name'=>'hankshuang','age'=>25)
就调用方法
cache_write('staffcache','staff',$staff)
下次想用这个内容的话,直接include data目录下的这个data_staffcache.php文件,就得到$staff这个对象了,原理简单,用起来却很方便.

有这三个文件,就足够你打造一个快速实用的系统了,当然uchome里还有一些非常好用的函数,比如图像处理,邮件发送,定时任务这些,设计都很巧妙,对于提高php开发技能很有帮助。

 

posted on   钱途无梁  阅读(550)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示