RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 568043
Accepted
Rosnowsky
Rosnowsky
Asked:2020-09-19 22:59:58 +0000 UTC2020-09-19 22:59:58 +0000 UTC 2020-09-19 22:59:58 +0000 UTC

PHP OOP、继承和类对象

  • 772

我正在用 PHP 学习 OOP,我不太明白继承和类对象之间的区别。我将举一个关于我当前项目的例子。

我有一个类class connectPDO{},一个单例,用于连接到数据库。

有一个类class Utility{},在这个类中我有一些辅助方法可以在页面上显示消息,或者打印数组,或者做一些其他的小事情。

有一个类class ProductsModel{},它负责与产品相关的一切(显示所有产品、编辑、删除……等等)。

所以,在课堂class ProductsModel{}上,我有以下内容:

class ProductsModel{

private $_pdo;
private $systemMessage;

  function __construct() {

    $this->_pdo = connectPDO::getInstance();
    $this->systemMessage = new Utility();
  }

  function delete($id) {
    //....что-то делаем...
    return $this->systemMessage->response('Продукт удален');
  }
}

为了连接到基础,我创建了一个类的对象class connectPDO{},因为它似乎不能被继承。对于一个class Utility{}有消息输出方法的类,我也做了一个对象,因为我更容易传递数据来显示消息,而不需要任何继承。

请解释继承类和在必要时创建新对象之间的区别。继承和创建类对象有什么好处

php
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    rjhdby
    2020-09-20T02:15:59Z2020-09-20T02:15:59Z

    以任何方式比较继承和类对象都是绝对不正确的。这是两个完全不同的实体。

    继承是原则。

    一个类对象是……一个对象。

    让我们以 Jean-Claude 的评论为例。

    有一类“家具”。此类描述了所有家具共有的一些属性以及可以对家具执行的操作(方法)。

    属性:材料、重量、尺寸、颜色等。

    方法:组装、拆卸、分解、吊起等。

    还有一个类“Stupes”,它具有“Furniture”的所有属性和方法,但除此之外,还有自己独特的仅与“Chairs”相关的属性和方法。例如,腿的数量,背部的存在。

    实际上,“椅子”类继承自“家具”类。

    现在想象一下您现在正坐在一把混凝土椅子上——这正是“椅子”类的对象。

    在你的情况下:

    $this->_pdo 是一个 PDO 类对象

    $this->systemMessage - Utility 类的一个对象

    继承主要用于两种情况:

    1. 你有许多有很多共同点的实体。例如,您从 Yandex 地图中解析“交通事件”。然后你这样做:

      class Event{
          public $lon; //широта, долгота, время создания
          public $lat;
          public $time;
      }
      

      并从中继承特定类“事故”、“道路工程”、“凸轮”等。

      class Accident extends Event{
          public $text;
          public $type;
      }
      
    2. 您想要扩展库类的功能。例如,你真的希望 mysqli 对象有一个 printError 方法

      class MyMysqli extends mysqli{
          public function printError(){
              echo "Аааааа! Ошибка!!!! ".$this->error;
          }
      }
      

    PS 总的来说,继承要谨慎使用,因为如果你得意忘形,你很容易做一些你永远也赚不到的东西,一个地方的小改正,就会拖垮整个应用程序的逻辑。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5