Php 为什么Kohana使用before()和after()

Php 为什么Kohana使用before()和after(),php,kohana,Php,Kohana,我刚开始玩Kohana,来自CodeIgniter和straight php。我想知道为什么Kohana使用before()和after()函数而不是普通的构造函数和析构函数?这两个函数之间有细微的区别: 创建和销毁实例时,将调用构造函数和析构函数 在执行控制器的操作之前和之后调用before和after方法 此外,您不能保证在执行操作之前和之后调用构造函数和析构函数,但是您可以保证,对于before和after方法。因为这样做允许更高级别的控制。除非您的应用程序不是不可恢复的,否则析构函数将被

我刚开始玩Kohana,来自CodeIgniter和straight php。我想知道为什么Kohana使用
before()
after()
函数而不是普通的构造函数和析构函数?

这两个函数之间有细微的区别:

创建和销毁实例时,将调用
构造函数
析构函数

在执行控制器的操作之前和之后调用
before
after
方法


此外,您不能保证在执行操作之前和之后调用
构造函数
析构函数
,但是您可以保证,对于
before
after
方法。

因为这样做允许更高级别的控制。除非您的应用程序不是不可恢复的,否则析构函数将被禁用。另一方面,
after()
也不会被调用,当应用程序在调用之前被破坏时。我想我的意思是你不能保证构造函数/析构函数在执行操作之前/之后被调用。我将对此稍作修改,以进一步阐明我的意思。它还保证,构造函数在
before()
之前调用,析构函数在
after()
:D之后调用。但我想我可以想象,你的意思是:在调用
\u destruct()
之前,你没有控制权。然而,无论如何,我已经投票了,因为有趣的部分已经澄清了。这正是我的观点:你无法控制构造函数和析构函数被调用的确切时间。Before和after是在操作之前和之后直接调用的:)此外,构造函数的参数列表自3.0以来已更改,但我假设Before方法永远不会有参数。有些人在升级时遇到问题,他们可以使用before方法避免这些问题。