加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP – 扩展类

发布时间:2020-12-13 13:46:43 所属栏目:PHP教程 来源:网络整理
导读:我已经在面向对象的 PHP中完成了大量的代码,但到目前为止,我的所有类都是“单数”,我想你可以调用它.我正在改变几个类(有5个左右相同的方法)来扩展一个类(以摆脱重复的代码).我遇到了一些问题. 我试图访问父类中的方法,但您可以看到问题. 家长班: class Dat
我已经在面向对象的 PHP中完成了大量的代码,但到目前为止,我的所有类都是“单数”,我想你可以调用它.我正在改变几个类(有5个左右相同的方法)来扩展一个类(以摆脱重复的代码).我遇到了一些问题.

我试图访问父类中的方法,但您可以看到问题.

家长班:

class DatabaSEObject { 

     public static function find_all() {
        return self::find_by_sql("SELECT * FROM " . self::$table_name);
    }
}

儿童班:

class Topics extends DatabaSEObject {

    protected static $table_name = "master_cat";
    protected static $db_fields = array('cat_id','category');
    public $cat_id;
    public $category;

  }

代码试图从php / html文件访问此表中的所有信息:

$topics=Topics::find_all();

foreach($topics as $topic):
    echo $topic->category;
endforeach;

正如您所看到的,大多数代码尚未合并到新的处理方式中.我需要更改self :: $table_name,它不再以我正在做的事情的新方式工作.我将有大约5个类扩展这个对象,所以最好的编码方式是什么,所以我可以用一个方法访问不同的表(而不是在5个不同的类中包含这个精确的find_all()方法.

您可以尝试将后期静态绑定设置为 mentioned below,或者单个解决方案也可以正常工作:
<?php
abstract class DatabaSEObject {
  private $table;
  private $fields;

  protected function __construct($table,$fields) {
    $this->table = $table;
    $this->fields = $fields;
  }

  public function find_all() {
    return $this->find_by_sql('SELECT * FROM ' . $this->table);
  }
}

class Topics extends DatabaSEObject {
  private static $instance;

  public static function get_instance() {
    if (!isset(self::$instance)) {
      self::$instance = new Topics('master_cat',array('cat_id','category'));
    }

    return self::$instance;
  }
}

Topics::get_instance()->find_all();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读