包含 继承 标签的文章

VgotFaster 开发,解决所有类库,模型相互间的继承问题

前些日子说到开发的 VgotFaster PHP 框架已经因继承问题拖下N天了,最近仔细研究了 CodeIgniter 的源码,我在想是不是我使用 CI 框架导致思想受 CI 的制约了,为啥非得参考 CI 呢。通过研究 CI 得出了其对于类库和属性在控制器和模型之间的继承方法,然后再经过一翻改进 VgotFaster 在类库,模型,视图,模板引擎和配置里的自动载入完全解决了,现在可以说框架已经成形了,剩下就是各种功能类库和辅助函数的增加以及相关提示的增强啦,这次是真的了。
演示:http://www.vgot.net/new_vgot/
这是用 VgotFaster 制作的站,虽然只用到了模板引擎啦。这个界面也将会是我的新首页,不过有时候我总是会很懒r。。。

Pader 2009-9-10 0

解决php类继承关键性问题

这段时间一直被 PHP 的类的属性的方法的继承而困扰,VgotFaster 的开发也因这个问题被卡住了,这两天放下了 VgotFaster 框架的开发在做自己的个人主页的页面,估计 VgotFaster  不会马上出来了,我就随便写一个主页的简单的 PHP 对象来作为主页主站的框架了,结果写着写着也就不那么简单了,完全就是一个框架了,晕呼,我怎么搞的到处都是面向对象和框架啊,不过在视图对控制器的属性和方法访问时也就是类的属性和方法继承时还是碰到这个问题,今晚不知为何心平气也和,终于把这个问题给搞定,让视图可以直接访问控制器的属性和方法了,这次主页的框架写的没有 VgotFaster 那么强的自定义和功能,但是却解决了关键性问题,所以 VgotFaster 得重构了,汗呀,第一个版本还没出来就重来了。继续等待吧。

关于这个框架已经抛弃了对 PHP4 的支持,下面发上主页小框架解决关键性问题的 PHP5 的 __get 和 __call 魔术方法吧。

PHP代码片段

/*  
    关键性控制器属性获取  
    @ create 0:29 2009-7-29  
*/  
public function __get($kName)   
{   
    if(isset($this->V->controller->$kName)) {   
        return $this->V->controller->$kName;   
    } else {   
        return $this->V->$kName;   
    }   
}   
  
/*  
    关键性控制器方法调用  
    @ create 1:05 2009-7-29  
    @ update 1:22 2009-7-29  
*/  
public function __call($kName,$kValues)   
{   
    if($kValues) {   
        $vCounts = count($kValues);   
        $argEval = '';   
        for($i=0;$i<$vCounts;$i++) {   
            $argEval .= ',$kValues['.$i.']';   
        }   
        $argEval = substr($argEval,1);   
        eval('$a = $this->V->controller->$kName('.$argEval.');');   
        return $a;   
    } else {   
        return $this->V->controller->$kName();   
    }   
}


Pader 2009-7-29 2