PHP-扩展类

我已经在 PHP 中做了很多面向对象的代码,但是到目前为止,我所有的类都是“单数”,我想你可以称之为。我正在改变几个类(有 5 个左右相同的方法)来扩展一个类(以摆脱重复的代码)。我遇到了一些问题。

我已经在 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 个 Cl 扩展这个对象,那么编码这个的最好方法是什么,这样我就可以用一个方法访问不同的表 (而不是在 5 个不同的类中包含这个确切的 find_all () 方法。

31

您可以尝试后期静态绑定为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();
5

您应该研究 PHP 中Late Static Binding的概念。这允许您从调用的类访问静态常量或函数。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(975)
雪花-如何在其名称中引用具有特殊字符的指定表的内部阶段(list of stage names)
上一篇
搅拌机怪异的外观纹理(blender textures)
下一篇

相关推荐

  • php日期格式转换新的开始

    PHP 日期格式转换是将日期从一种格式转换成另一种格式的过程。PHP 提供了 date() 和 strtotime() 两个函数来实现日期格式转换。…

    2023-06-21 13:38:34
    0 45 13
  • php 判断是否为空(含代码示例)

    示例示例PHP 判断是否为空的方法有很多,下面介绍几种常用的:使用 empty() 函数:…

    2023-04-24 14:56:31
    0 43 22
  • php数组排序:排序php数组的最佳实践

    示例示例PHP数组排序是指对PHP数组进行排序的操作。PHP提供了多种排序函数,可以根据需要使用不同的函数来实现数组的排序,如sort()、rsort()、asort()、ksort()等。…

    2023-06-17 08:03:31
    0 94 22
  • php 转换时间戳:2020年12月31日,一个新的开始

    PHP 转换时间戳,是指将日期时间格式转换成 Unix 时间戳,Unix 时间戳是指格林威治时间 1970 年 月 日 00:00:00(北京时间 1970 年 月 日 08:00:00)起至现在的总秒数。可以使用 PHP 的) 函数来完成转换:…

    2023-08-25 11:55:38
    0 61 42
  • php转字符串一个挑战

    示例示例PHP转字符串可以使用PHP的内置函数strval()来实现,其语法格式如下:strval(var)…

    2023-04-17 01:05:26
    0 34 68
  • php 检查文件是否存在PHP 的 file_exists 函数

    示例示例PHP 检查文件是否存在可以使用 file_exists() 函数来实现。file_exists() 函数接受一个文件路径作为参数,并检查该文件是否存在,如果存在则返回 true,否则返回 false。…

    2023-04-16 08:12:10
    0 44 14
  • php 图片上传轻松实现你的创意

    PHP 图片上传是指使用 PHP 语言在 web 端实现图片上传的功能,可以将本地图片文件上传到远程服务器。下面给出一个 PHP 图片上传的代码实例:…

    2023-04-12 15:38:56
    0 44 21
  • php多态的理解让代码更加灵活和可扩展

    示例示例PHP多态是指一个接口,多种不同的实现。它是面向对象编程中一种常用的特性,允许在不同情况下使用同一接口。多态的实现方式有很多,其中一种是使用抽象类和接口。抽象类和接口都是定义一组行为的标准,但抽象类可以提供默认实现,而接口则不能。…

    2023-05-08 04:13:52
    0 60 90

发表评论

登录 后才能评论

评论列表(72条)