dongshiqin1352 2012-06-14 22:28
浏览 48
已采纳

在class变量中存储一个类,我做得对吗? PHP

I am doing this currently,

class Page {
    // variable to hold DBC class
    public $dbc;
    /*
        __CONSTRUCT
        Called when class is initiated and sets the dbc variable to hold the DBC class.
    */
    public function __construct() {
        // set the dbc variable to hold the DBC class
        $this -> dbc = new DBC();
    }
    /*
        CREATE PAGE
        Create a page with the option to pass data into it.
    */
    public function create($title, $class, $data = false) {
        // start buffer
        ob_start('gz_handler');
        // content
        content($this -> dbc, $data);
        // end buffer and flush
        ob_end_flush();
    }

}

I have simplified the example, but basically I need to pass the object DBC to a function inside the method create?

Is this considered bad practice as I was using extends before but realised there was no way to extract the extended class to a variable?

Thanks

  • 写回答

2条回答 默认 最新

  • dongwen4630 2012-06-14 22:31
    关注

    You're very close to the dependency injection design pattern.

    You just have to change your constructor to accept the object as a parameter, like so:

    public function __construct( $dbc) {
        // set the dbc variable to hold the DBC class
        $this -> dbc = $dbc;
    }
    

    Then instantiate your class with the database connection, like so:

    $dbc = new DBC();
    $page = new Page( $dbc);
    

    This has a variety of benefits, ranging from easier to test, to making a single connection to the database. Imagine you need five Page objects - Now you pass them all the same database connection so they do not need to individually create one.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)