PHP5带给我们的面向对象的变化是伟大的是空前的是胜利的,就像所有的两会一样。尤其是它提供给我们的那些魔术函数,更是像桂林山水一样令人流连忘返。 1. __construct() 构造函数 这是PHP默认的构造函数,它并不能主动被程序调用只能是在对象创建的时候被自动调用。同时为了向下兼容,PHP5也支持与类同名的构造函数,值得一提的是当两种构造函数同时存在的时候,__construct()将不会被调用。 2. __destruct() 析构函数 3. __get($key) 当读取一个不存在的属性时调用。 < ?php class Obj { public function __get($key) { echo $key.’ is not exsit’; } } $obj = new Obj(); echo $obj->varnotexist; ?> 上面的这段程序将会输出:varnotexist is not exist。 4. __set($key, value) 与__get($key)类似,而它是在修改一个不存在的属性时被调用。 5. __call($key, $args) 与__get($key)类似,而它是在调用一个不存在的方法时被调用。 6. __toString() 在试图打印一个对象时被调用 < ?php class Obj { private [...]
Archives for 二月 2009
云计算:梦想和“共产主义”
这篇文章要从一个叫做google的公司谈起。这是一个伟大的公司,甚至是一个像神一样的公司,他总是在安排着互联网和数据的未来,不管是无意的还是计划的。他有着我喜欢的东西,技术创新和梦想。 现在,这个一直都充满了梦想的公司又有了一个新的梦想。去年差不多也是这个时候,一个叫做施密特的人来了中国,这个人是google的CEO,他来到一个狭小的会议室里,他告诉人们,就像一个预言家,“未来的互联网发展,最重要的一个改变就是从个人计算机的架构逐渐转向云计算”。 云计算?google告诉人们,“人们对计算机的使用正在从桌面为中心转向以网络为中心”。 那么什么是云计算呢,为了找到一个答案我去了wiki。 云计算(cloud computing,台湾译作云端运算),是分布式计算技术的一种,其最基本的概念,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务。 同时我们还注意到一个叫做网格计算的概念,同样是wiki。 网格计算(Grid Computing),通过利用大量异构计算机(通常为桌面)的未用资源(CPU周期和磁盘存储),将其作为嵌入在分布式电信基础设施中的一个虚拟的计算机集群,为解决大规模的计算问题提供了一个模型。网格计算的焦点放在支持跨管理域计算的能力,这使它与传统的计算机集群或传统的分布式计算相区别。 云计算是由网格计算发展过来的。而云计算去替代网格计算,即是说服务信息则并不是一个桌面PC上,而是存在网络中。 云计算显而易见的有这样一个好处,如果有一天google的数据中心大火,消防员扑救不及,所有的服务器毁于一旦,虽然它们可能被装上了防火墙,但是也于事无补了。这时候我们多么希望有这样一个银行,我们把数据存到银行里,让我们不要把所有的数据都放在一个地方。云计算就是这样的一个银行。 前几天我女朋友丢了手机,手机号码都没有,我不禁感慨,云计算应该快一点。 正是因为云计算的特质,使得它必须有一个绝对开放的标准,业界不能有独裁,必须相互尊重和信任,否则这事就云不起来。就像共产主义,数据的共产主义。所以在这里我要批评DELL,批评DELL的原因不光是因为它的售后,虽然它的售后真的很烂,同时还因为他正在申请Cloud Computing商标。
PHP的MVC
PHP的面向对象的特性越来越完善使得,PHP能够更好的从代码结构上进行系统的封装。当一个系统,其中有大量的逻辑存在与流程控制之中,MVC的优势就开始渐渐体现。 MVC的模式要求对系统的总体结构在逻辑上分成三部分 View(界面/视图):用户界面,网页模板 Controller(控制/流程):系统业务流程 Model(模型/逻辑):系统设计中的一些基础类和数据操作 拿一个简单的登陆流程当例子 最常见的登陆流程是这样的,我们假设我们的网站根目录下有一个叫做/user的文件夹来存放所有与用户操作相关的页面,其中有一个页面是/user/login.php。而我们的根目录上有文件/index.php作为网站的首页。当我们打开/index.php的时候进行判断,如果未登陆则跳转到/user/login.php进行登陆,如果成功则跳回/index.php,否则跳到/error.php。 流程图如下: 根据文字和流程图的描述,我们可以开始编码了。 /index.php < ?php //… $userLib = new userLib(); if (!$userLib->chkLogin()) header(’location: /user/login.php’); //… ?> /user/login.php < ?php //… if (isset($_POST[’submit’])) { $userLib = new userLib(); $succ = $userLib->login($_POST[’name’], $_POST[’pass’]); header(’location: ‘.($succ?’/index.php’:'/error.php’)); } $tpl = new Template(); $tpl->show(’user_login.tpl’); ?> /error.php < ?php $tpl = new Template(); $tpl->show(’error.tpl’); [...]
Posts