gpt4 book ai didi

php - 为什么在基本功能上使用 PHP OOP?何时使用?

转载 作者:IT老高 更新时间:2023-10-28 12:06:31 26 4
gpt4 key购买 nike

关于这个问题有一些帖子,但我没有清楚地知道何时使用面向对象编码以及何时在包含中使用编程函数。也有人跟我提过,OOP 运行起来非常繁重,而且工作量更大。是这样吗?

假设我有一个包含 50 个函数的大文件。为什么我要在类里面调用这些?而不是通过function_name()?我应该切换并创建一个包含我所有功能的对象吗?有什么优势或具体区别?它给 PHP 中的 OOP 代码带来什么好处?模块化?

最佳答案

在很多情况下,过程式编程就可以了。为了使用它而使用 OO 是没有用的,特别是如果你最终会得到 POD对象(普通旧数据)。

OO 的强大主要来自于继承和多态。如果您使用类,但从不使用这两个概念中的任何一个,那么您可能一开始就不需要使用类。

OO 最出色的地方之一是 IMO,它允许您摆脱开机类型代码。考虑:

function drive($the_car){

switch($the_car){

case 'ferrari':
$all_cars->run_ferrari_code();
break;

case 'mazerati':
$all_cars->run_mazerati_code();
break;

case 'bentley':
$all_cars->run_bentley_code();
break;
}
}

使用它的 OO 替代方案:

function drive($the_car){

$the_car->drive();
}

多态性将允许根据运行时信息发生正确类型的“驱动”。


关于多态性的说明:

这里的第二个例子有一些前提:即所有汽车类都将扩展 abstract类或实现 interface .

两者都允许您强制扩展或实现类以定义特定函数,例如 drive()。这非常强大,因为它允许您drive() 所有汽车,而无需知道您正在驾驶哪一辆;那是因为他们正在扩展一个包含 drive() 方法的抽象类或实现一个强制定义 drive() 方法的接口(interface)。

只要您确保所有特定汽车都扩展抽象类 car 或实现诸如 canBeDriven 之类的接口(interface)(两者都必须 声明 drive() 方法)您可以只在您知道是汽车的对象上调用 drive() 方法(但不是什么类型的汽车) 而不必担心它没有被定义,因为 PHP 会向您抛出 fatal error ,直到您在特定的汽车类中定义这些方法。

关于php - 为什么在基本功能上使用 PHP OOP?何时使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/716412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com