Submitted by gouki on 2008, April 12, 9:07 PM
在PHP开发中,很多时候都会看到别人的代码里有
$user = new stdClass();
$user->name = 'gouki';
这样的代码,这是干嘛用的呢?
翻开手册,搜索stdClass,你会发现,手册上几乎没有介绍,如果你再次搜索google,看到的也几乎全是英文解释。
其实,stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留类。似乎没有其他作用。也几乎没有任何说明。
或者,我们可以这么理解:stdClass是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个object。同时,这个基类又有一个特殊的地方,就是没有方法。
凡时用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用。
或者,我们可以又这么理解一下,正因为PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,所以相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。
例如:
$user = new stdClass();
$user->name = 'gouki';
$myUser = $user;
$myUser->name = 'flypig';
如果在PHP4时代,这样的代码就是在消耗系统资源。因为:
$myUser = $user;
这是创建了一个拷贝。所以,在PHP4的时候,都是这样使用:
$myUser = & $user;
有人说,为什么不用数组呢?数组不是更方便吗?而且对于PHP这样的弱类型程序来说,用数组应该是最方便的。
确实。数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本,而且,数组被unset后,还是占用了内存(这个是听人说来的,我没有测试……也不知道怎么测试,如果有人知道,请告诉我,谢谢 )
不过SPL的标准类库里,还有一个函数arrayobject,可以直接将数组转化为对象这也是一个好办法哦。
随便写写,没有打草稿,如果有错误,请通知我改正……
Tags: stdclass
PHP | 评论:1
| 阅读:22088
Submitted by gouki on 2008, April 11, 9:39 AM
经常在新闻系统中显示:上一条,上一条,在网上找了很久也没有发现有什么特别好的解决方案。在看了几个人的解决方案后,写了如下的sql语句。也算是抛砖引玉吧。
SQL是这样的: SELECT max(id) FROM table WHERE id < 当前ID UNION SELECT min(id) FROM table WHERE ID>当前ID
可是某人告诉我。MSSQL居然不支持union,于是我写了这么一条,因为我不知道MSSQL是否能执行,希望给大家一个帮忙(反正MYSQL4是不能运行的)。呵呵。
SQL:select top 3 id from table where id < (select min(id) from table where id > 当前ID) order by id desc
权当做个笔记。 (希望有人指正,我也好多记一点多学一点)
Tags: sql
DataBase | 评论:3
| 阅读:25850
Submitted by gouki on 2008, April 10, 2:54 PM
说实话,在看到这个Comet被人提起来的时候,我真的不知道是什么意思。翻开金山词霸,结果求伯君同学告诉我,这是彗星的意思。
彗星?怎么着也不能理解。。。于是乎G了一下,发现原来Comet并不是一个新技术,而是和AJAX一样也是一个炒冷饭的东东。
目前用的最多的使用Comet的大概是两种方法,一种是iframe,一种就是ajax。
用ajax的就没有什么好讲了,无非就是setIntval();定一个时间循环往复,往复循环的用ajax读回数据。
用iframe呢。则是利用现在的一些JS类库(当然不用也可以)生成一个Iframe 的Element,在这个页面里打开一个PHP或者其他的动态网页,再由那个网页不停的生成生成再生成,然后通过iFrame的window.parent.xxx.innerHtml = 'this...value...';通过这种方法将iframe里得到的内容生成到主页面上。
细看看这两种,哪种不是炒冷饭?只是冠以一个好听的名字而己,自从2001年,网络聊天室开始有无刷新聊天时,iframe取得数据返回主页面这种方法就早己经存在。AJAX虽然是最近几年的新酒,但何尝不是原来的那些方法的集合?只是以前可能用的是setIntval定时用window.location.reload();来进行页面刷新,现在是用AJAX取回数据再通过innerHtml来更新DIV区域而己。
自此,对Comet有点失望。毕竟对这些都只是一些简单的封装,没有什么新的东西。
Tags: iframe, ajax, comet
Javascript | 评论:4
| 阅读:29660
Submitted by gouki on 2008, April 8, 11:57 PM
春天到了,春雷也响了
今天雨好大,可是昨天晚上的手机报上却说“夜里到明天白天晴转多云”,出门就没有带伞,结果……刚出门没多久就开始飘小雨了,到单位的时候雨下的好大。
还好,N个月前带了把伞到单位里,可以让我在回家的时候撑着它。这把伞陪着我有5年多了,当初在城隍庙看着这把伞特别大,就买了下来。至今仍然在使用,性价比超高啊。
天气预报说,浦淮江淮一带将有连续的降雨,看不到明天的太阳喽。
Misc | 评论:0
| 阅读:20316
Submitted by gouki on 2008, April 7, 11:21 PM
ThinkPHP的官方服务器受到了攻击,数据全部丢失。在等待服务器恢复的期间,听说服务器还是拖了时间才开始安装和配置啥的。
其实,个人而言,我是不太相信是受到了攻击。以前托管的时候,由于机房搬迁,而他们的管理人员机器都不关就直接换机柜什么的,导致我的硬盘在读写的时候断电,分区表完全破坏。足足停了两个多月。
也正是那两个多月,团队进行的项目受到了一定的打击,也就是俗话说的:心都哇凉哇凉的。
自此,团队一蹶不振。
当然希望TP不是因为这个原因。唉……合租的服务器,终究还是不放心啊。可惜TP没有营利性的运作,仍然是以个人名义在运作。不可避免的会与自己的经济能力挂勾吧。其实,买一台1U服务器,托管1年。大概费用是15000左右(应该算是比较高的了),假设每年托管费用5000,托管3年的话。共计2W,平均每年6K,相信应该还是可以承受的(当然,如果有人赞助部分应该会更好,不过最好还是通过有偿技术支持等来换取部分贊助,也避免欠人情啥的)。
看TP的未来发展吧。拭目以待
PHP | 评论:0
| 阅读:19161