我们实例化PHP类时会发生什么?

时间:2016-06-22 12:46:45

标签: php class oop objectinstantiation

好吧,我一直听说你最好不要在php中使用静态方法,我可以在某种程度上理解这一点,但是对我来说有一些困惑,我想知道的是:

假设我正在编写一个应用程序,我定义了数百个类(或者使用已经包含数百个不同类的框架),我不知道是否应该为每个小任务创建一个类,所以我要说我创建了一个类来处理特定项目的所有CRUD任务(例如博客文章),这个类处理查看,保存,编辑等,在这种情况下,如果我每次实例化该类,它将创建一个包含的对象主要是我们在该请求中不需要的方法,所以...... 我想我想问的是:

做那样的事情是明智的吗? 创建包含我们在每个请求中不使用的方法的类,并将它们定义为非静态的,所以每次我们必须实例化整个对象?

就像Laravel为它的控制器做的那样,我们定义所有非静态方法来处理与某个路由组相关的所有任务,并在每次我们想要访问其中一个或两个方法时实例化整个控制器。

提前感谢您的时间和耐心。 我很感激。

1 个答案:

答案 0 :(得分:1)

您在大多数框架中看到的是CRUD是在Controller中编写的。这就是应该的样子。

一个控制器有多个动作(创建,读取,更新和删除)。问题是这些方法都没有被调用和执行。如果你想阅读你的博客文章,那么唯一要执行的就是阅读行动。

你可以将它与驾驶汽车进行比较。您可以存储多辆汽车'在一个车库'但你一次只能驾驶一辆。

添加更多信息。创建类的实例时:

$class = new myClass();

唯一要调用的东西(如果存在)是constructor

public function __construct()
{
    // Instantiation logic here
}

通过创建此类的实例,您实际上并不执行所有方法。您只需将它们用于使用即可。 (比如打开车库门并交给你车钥匙:D)