Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
何时以及为什么我应该在php中使用类?_Php_Oop_Class - Fatal编程技术网

何时以及为什么我应该在php中使用类?

何时以及为什么我应该在php中使用类?,php,oop,class,Php,Oop,Class,我想知道什么时候以及为什么我应该在php中使用类,我在php.net上读到一个类包含变量(我们在变量之前写var)和这些变量的函数,那么为什么不使用常规函数呢?我的意思是课堂上做什么 谢谢。通常建议使用面向对象编程(即:面向对象编程,又称基于类的编程)方法代替传统的过程式编程的优点是,面向对象编程有助于可维护性,并提供更清晰的关注点分离(主要是因为对象实际上是一组数据以及与该数据相关的操作),尽管构造良好的过程代码不一定比OOP方法差很多 不管怎样,我还是很想看看上面的讨论:因为我怀疑这会回答你

我想知道什么时候以及为什么我应该在php中使用类,我在php.net上读到一个类包含变量(我们在变量之前写var)和这些变量的函数,那么为什么不使用常规函数呢?我的意思是课堂上做什么


谢谢。

通常建议使用面向对象编程(即:面向对象编程,又称基于类的编程)方法代替传统的过程式编程的优点是,面向对象编程有助于可维护性,并提供更清晰的关注点分离(主要是因为对象实际上是一组数据以及与该数据相关的操作),尽管构造良好的过程代码不一定比OOP方法差很多

不管怎样,我还是很想看看上面的讨论:因为我怀疑这会回答你的许多问题

也就是说,值得记住的是,从来没有“一刀切”的方法,有时过程和面向对象的混合是理想的

此外,如果您是PHP(或一般编程)的初学者,有时OOP(特别是像这样的大型框架)一开始看起来会让人不知所措,但了解它们通常是值得的(这会带来回报)


最后一点,我个人认为OOP通常更像是一种“系统思考”的方法,因为大型系统通常会(合理地)自然分解为对象。从使用OOP多年的人的角度来看,我还认为它至少值得认真研究。(这是一个很好的起点。)

使用类可以封装和重用代码。下面是一个示例(PHP5):

我必须说,当我还是个新手的时候,就像你一样,我觉得OOP是一种解决问题的方法。但是,在潜入并使用它之后,最终它成功了

对象,以其最简单的形式,就像可以传递的逻辑和数据的容器,这是非常有利的


然而,我还记得我第一次开始学习OOP时的心态。上面的示例不会点击。欣赏它的唯一方法是使用它。一旦你这样做了,你会非常高兴。类是对数据和功能进行分组的方便方式。你可以创建一个类来包含人员信息。然后,如果你想要人员列表s、 您可以创建一个数组,并为每个人在其中放置一个类的实例。您可以用这些人的数据填充实例的变量。这看起来很像一个二维数组(类似于persondata数组的数组),但更重要的是。您可以构建类中包含的函数,这些函数对类中的变量进行操作。您可以从外部隐藏函数和变量,以便在构建框架时可以区分内部和外部功能

然后,甚至没有提到继承,这给了你更多的可能性

所有这些都可以在过程代码中完成,但OOP(面向对象编程,即使用类编程)为您提供了一个全新的代码结构视图


很多关于这个主题的大书都写过,所以在这篇文章中不可能描述确切的细节和可能性。我能告诉你的是,你应该尝试一下,在最初遇到的挫折中继续尝试一段时间。然后,当别人问你这个问题时,你会给他们同样的建议。:)

这是三个字:)另请参见:为什么推动对象与ajax交换不好?当您使用ajax请求数据时,会将目标对象作为对象,您可以为该项目创建请求。为什么把你所有的OOP都推出来是不好的?
class car {
    public $color;
    public function __construct($color) {
        $this->color = $color;
    }
    public function show_off() {
        return 'This car is ' . $this->color;
    }
}

// And now I can re-use the code elegantly:
$car_one = new car('blue');
$car_two = new car('red');
$car_thr = new car('yellow');

echo $car_one->show_off(); // This car is blue
echo $car_two->show_off(); // This car is red
echo $car_thr->show_off(); // This car is yellow