类。有什么意义?

2022-08-30 19:55:52

我对PHP中的OOP相当陌生,我已经制作了几个基本的脚本,但没有什么令人印象深刻的。我真正从中得到的是,制作一个函数和它们的集合可能会更容易。include

类的结构似乎只是混淆了原本简单的过程。在将所有内容整理到一个类中时,它并没有真正添加任何功能。

所以我显然错过了一些东西。有人可以解释一下通过创建类添加了哪些功能吗?


答案 1

类是面向对象设计(以及分别编程和分析)的概念,它们用于封装数据和方法

其他面向对象的编程技术可能包括以下功能:

  • 信息隐藏,
  • 数据抽象,
  • 封装
  • 模块性
  • 多态性和
  • 遗产

从一篇文章..top-15-best-practices-for-writing-super-read-code

面向对象的编程可以帮助您创建结构良好的代码。但这并不意味着您需要完全放弃过程编程。实际上,创建两种风格的混合可以是好的。

http://java.sun.com/docs/books/tutorial/java/concepts/class.html

在现实世界中,您经常会发现许多相同的单个对象。可能有成千上万的其他自行车存在,都是相同的品牌和型号。每辆自行车都是根据同一组蓝图构建的,因此包含相同的组件。在面向对象的术语中,我们说您的自行车是称为自行车的对象类的实例。类是从中创建各个对象的蓝图。

最后,一个关于过程和面向对象编程范式之间差异的简短YouTube视频...


答案 2

虽然最初看起来只使用一组函数并包含它们可能更简单,但类有其优点。类可以存储变量,这些变量“稍后”存在。

这是一个来自 php.net

<?php
$item_name = 'Widget 22';
$item_price = 4.90;
$item_qty = 2;
$item_total = ($item_price * $item_qty);
echo "You ordered $item_qty $item_name @ \$$item_price for a total of: \$$item_total.";
?>

v.s:

<?php
class Item {
  protected $name, $price, $qty, $total;

  function __construct($name, $price) {
    $this->name = $name;
    $this->price = $price;
  }

  function calculate($qty) {
    $this->total = number_format(($this->price * $qty), 2);
  }

  public function __toString() {
    return "You ordered ($this->qty) '$this->name'" . ($this->qty == 1 ? "" : "s") .
    " at \$$this->price, for a total of: \$$this->total.";
  }
}

$widget22 = new Item("Widget 22", 4.90);

$widget22->calculate(2);

echo $widget22;
?>

另一个巨大的好处是,你可以做更多。假设您要计算另一件商品的价格并打印出来。您不必复制所有花哨的逻辑,只需调用new Item即可完成。


推荐