【发布时间】:2013-03-02 00:18:03
【问题描述】:
我知道可以使用接口来强制定义函数,但我找不到可以强制调用函数的东西,例如如果我使用函数创建一个作为另一个类成员的类(通过扩展等),则该类会自动确保使用该函数部分调用强制函数。
我的意思是,进一步澄清:
class domain {
function isEmpty($input) {
//apply conditional logic and results
}
}
class test extends domain {
function addTestToDBTable($test) {
/**
* try to add but this class automatically makes it so that all rules of
* class domain must be passed before it can run
* - so essentially, I am no longer required to call those tests for each and
* every method
**/
}
}
如果这看起来不连贯,我们深表歉意。当然,这似乎很懒,但我希望能够强制上下文而不必担心
更新:
好的,进一步澄清:在 PHP 中,如果我为子类扩展并声明 __construct(),则该子类将覆盖父类 __construct()。我不希望这样,我希望父构造保留下来,并随心所欲地授权,就像子类也可以这样做一样。
【问题讨论】:
-
你是指接口还是抽象类?
-
也许你可以在
domain中创建一个addTestToDBTable(或其他函数名),然后使用parent::addTestToDBTable()。 -
我的意思是,例如,如果没有应用规则,我希望它自动输出错误——我希望强制执行规则,而不必将其应用于每个单独的函数。我希望该超类自动强制执行这些规则(例如默认或自定义集)。
-
@user784446 我认为这就是单元测试的目的。
-
@Rocket Hazmat,我明白,但我的意思是我什至不想这样做。我希望域自动处理所有这些东西。很简单,即使应用于域的上下文,测试也应该只关心自己——除非我另有说明。该类的每个函数都不应该有任何与域有关的显式代码,因此 addTestToDBTable 只是有它的逻辑。因为类测试是域的成员,域通过强制规则来管理它。
标签: php oop class function logic