手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表分类:PHP

PHP实用函数介绍(一)

在PHP开发中,有时候我们会不可避免的需要得到类中所有方法或者变量。也有的时候,我们需要知道某一个方法是否已经被定义,某一些类是否被加载,这时候,就需要用到一些比较少用的函数了。

1、获取类中所有的变量:get_class_vars。使用方法为get_class_vars('类名');如果在类外面调用,那么只能获取属性为public的变量,如果在内部调用,则可以获取所有的变量。当然,子类是无法获取父类的private属性的变量的。

2、获取类中所有的方法:get_class_methods,如用方法与get_class_vars几乎一样,但参数可以是类名,也可以是实例化后的类。同样,在内部可以获取所有的方法名,外部只能获取public方法。从PHP5开始,方法名返回的时候是区分大小写,而在PHP4的时候,全部返回小写(事实上方法本来对大小写无所谓的)

3、与1类似的方法:get_object_vars,它的参数只能是实例化后的object,其他的用法都与1相同

4、获取所有加载的方法,get_defined_functions,它会返回一个数组,其中以user为下标的数组就是当前被引用过的变量。当然也可以直接用function_exists来判断。

5、get_include_files,这个方法可以了解到当前页面加载了多少文件,在优化的时候可以参考,是否有文件被无意义的加载了

思考:内部博客历史上的今天

我这里说的历史上的今天并非网络上那种把几千年几百年的事情显示的那种历史上的今天,我说的是当某一个网站建站时间长后,数据量大的时候,可以开始考虑把前几年同一时刻发表的文章列出来。

我对于这个想法,在考虑用yii重构的时候就想过是否要加这个功能。虽然说这是画蛇添足,但在自己看自己的文章时,看到一年前两年前的文章时,你也可以了解到自己的思想到底有没有进步。去年这个时间你是在写一些垃圾,还是在写一些精华,现在呢?还是垃圾又或者已经进步了?

但,说白了,这个玩意对于其他浏览的用户来说,真的没有什么特别的意义,相反还会有反感,我为什么要看你一年前的东西,我关注是当前的内容,如果对于当前的内容有相关的资料,那还可以值得考虑一下。所以TAG相关文章就很容易被点击。

所以,历史上的今天对于增加内链是有好处的,但不是特别建议推广。我的思考是做类似于widget之类的功能放在内容页【并非一定】。

相反,我对于TAG有新的要求,一个网站,尽量不要超过200个TAG,最好都是一些有效TAG,否则一定会让人迷惑。或者说,其实你的网站也很乱,内容越杂,TAG也才会越多。当你精确于某几件事情,你的TAG应该是相对集中的。

wordpress的TAG表,设计的非常有意思。考虑过使用。crc和crt,如果真重构了,应该会用到。

Tags: history, thinking

Kmeans算法

做电子商务的不可避免的都会遇到价格区间的问题。这,主要显示在搜索的时候,如果你区间设的过大,那几乎把所有产品都列出来了。那和没有分区间没啥分别。因此,还真有一种算法可以解决这个问题(当然也只是基本解决,看上去不是特别的乱而己)。

这是在老王的博客上看到的:

means算法

Web开发中,CRUD做多了难免厌烦,其实还有很多细节可以挖掘,比如很多电子商务网站上都有商品价格区间,都是诸如1000-2000,2000-3000之类定死的,而没有按商品自己的分布规律来划分,此时有一种名为Kmeans的算法可以使用,效果很好,网上有很多现成的代码可以参阅,比如PHP的版本:

kmeanspp
K-Means Clustering in PHP

--EOF--

到百科看了一下,这么解释K-means:k-means 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。

虽然这样能够处理,老王也给了一个PHP的解决方案,但在实际中,应用的范围并能算是特别大,有时候还是直接手写的。以前的时候,我们是在分类里,直接把几个区间定义好,然后在搜索的时候指定某一分类时,自动调用这个区间。理由是,如果你的产品分的很散,从几块到几千块的都有,这种分类区间,就只能定义到分类上了。

不过上面的算法可以学习一下

Tags: kmeans, 老王, 聚合, 分类, 算法

犹豫:是否采用Yii把sablog重构

一直在犹豫,是否要重构sablog,还是说仅仅把前台的模版系统重构一下就完事。

曾经想过是采用thinkPHP或者fleaPHP(用不惯Qee),但后来有各种各样的原因,导致就没有重构。

现在,文章数据也多了,有2年的数据了,也因此想要增加一点新功能,所以就在想着是否要重构一下。否则新功能加起来就很繁琐。

同时还要考虑一下模版,因为现在的模版太挫了,很多广告位都无法设定好,不是在顶部就是在侧部,根本没有人想点,如果在中间,或许点击的次数会多一点?

当然,我需要考虑的是缓存,一直以来sablog都是用的自带的文件缓存,虽然文件数量不大,但总也占着资源,为什么不把APC开启并使用呢?呵呵。。。

可是我还要考虑的是我原先博客里的代码高亮,虽然有想过要换到synaxhilight上面,但原来的数据怎么办?我总不可能一个个的改吧?

再然后就是,如果是换系统,那又得考虑数据迁移了,现在这样的后台,我还能够接受。一旦换系统,后台我还不一定能够熟悉呢。

最后,同一文章存放多个分类。。。【被朋友说话打断了,郁闷】

反正,就是一想法。

Tags: yii, sablog, 前端, 重构

Wordpress自动升级和plugin插件更新的问题

为了文章中所说的问题,我删除了我VPS上的wordpress。如果早知道这个问题,我就不会换了。不过,想想WORDpress在那么小内存的VPS上跑,也会很痛苦吧?所以还是让他跑跑一些简单的内容就完事了。原文在http://www.jefflei.com/post/884.html

--START--

Wordpress2.7的一键自动更新很好用。可是在使用Wordpress插件自动更新和安装时,有时发现需要提示输入ftp信息:
FTP Connection Information
Host:
Username:
Password:

这是Wordpress的一个bug,在某些文件系统上有问题从wordpress2.5到2.7都一直没有更新,在国外网站上查了下修复方法如 下:

1. 编辑wp-admin/includes/file.php找到以下这行
if(getmyuid()==fileowner($tempFile)){
把这句中把getmyuid改成posix_getuid

2. 完成以上修改应该不会再要输入ftp信息了,但是有时候会告知目录不对,在wp-content目录下建立upgrade目录
chown www:www wp-content/upgrade
chmod +w wp-content/upgrade

做完以上设置应该就可以自动更新了。

--EOF--

根据我的估计,有两个人可能会用到这个,虫少侠(http://enjoyphp.com)和拉拉(http://www.ifotos.net)。我想,他们两个看到我这篇博客的时候,估计会感动的帮我点广告的吧?

Tags: wordpress, upgrade, plugin, update