关于initialize如何实现

csdn醒哥 2016-01-08 07:11:51
假设有class a、b、base,a、b都继承base,
a、b允许有一个方法initialize();

如果new N次:
$obj = new a();
$obj = new a();
$obj = new a();
$obj = new b();
$obj = new b();
$obj = new b();

只执行一次 a->initialize(); 和一次 b->initialize();

initialize在框架中主要是替代__construct方法。
phalcon实现了这个功能,但是phalcon是C编写的框架,纯PHP能实现这个效果么?
...全文
157 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tata8188 2016-01-09
  • 打赏
  • 举报
回复
@$v++; 问一下这句为什么要加“@”符合?
tata8188 2016-01-09
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
class bass {
  function __construct() {
    $this->_initialize();
  }
  function _initialize() {
    static $v;
    @$v++;
    if($v == 1 && method_exists($this, 'initialize')) $this->initialize();
  }
}
class a extends bass {
  function initialize() {
    echo __CLASS__;
  }
}
class b extends bass {
  function initialize() {
    echo __CLASS__;
  }
}

$obj = new a();
$obj = new a();
$obj = new a();
$obj = new b();
$obj = new b();
$obj = new b();
ab
xuzuning 2016-01-08
  • 打赏
  • 举报
回复
class bass {
  function __construct() {
    $this->_initialize();
  }
  function _initialize() {
    static $v;
    @$v++;
    if($v == 1 && method_exists($this, 'initialize')) $this->initialize();
  }
}
class a extends bass {
  function initialize() {
    echo __CLASS__;
  }
}
class b extends bass {
  function initialize() {
    echo __CLASS__;
  }
}

$obj = new a();
$obj = new a();
$obj = new a();
$obj = new b();
$obj = new b();
$obj = new b();
ab

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧