Php 向对象动态添加方法

Php 向对象动态添加方法,php,oop,design-patterns,Php,Oop,Design Patterns,你能帮我找到解决问题的办法吗 我有一个表示实体的类(我称之为“实体”) 我想根据不同的标准向实体动态添加方法 例如: 如果$\u POST['TYPE']='typeA',我想添加以下方法: 方法1() 方法2() 方法3() 方法4() 如果$\u POST['MODE']=='modeA',我想添加以下方法: 方法5() 方法6() 方法7() 问题是会有很多可能的方法,如果我将它们全部添加到我的类中,我会担心我的类会变得太大。我也希望避免每次出现新情况时都编辑我的课程 我第一次考虑

你能帮我找到解决问题的办法吗

我有一个表示实体的类(我称之为“实体”) 我想根据不同的标准向实体动态添加方法

例如:

如果
$\u POST['TYPE']='typeA'
,我想添加以下方法:

  • 方法1()
  • 方法2()
  • 方法3()
  • 方法4()
如果
$\u POST['MODE']=='modeA'
,我想添加以下方法:

  • 方法5()
  • 方法6()
  • 方法7()
问题是会有很多可能的方法,如果我将它们全部添加到我的类中,我会担心我的类会变得太大。我也希望避免每次出现新情况时都编辑我的课程

我第一次考虑按案例分类,但是我有太多的案例(大约5个标准,每个标准可能有6或7个不同的值),所以总共有50或60个不同的案例

那么,最好的解决方案是什么呢

我应该向类中添加所有可能的方法吗

我是否应该使用继承并创建所有可能类型的对象(Type1Mode1Entity、Type1Mode2Entity等)

你知道这样做的设计模式(装饰师?)吗


Ben

为使用常用方法扩展抽象类的案例创建单独的类,然后使用工厂DP加载所需的类

谢谢Auris,我也不太愿意按案例创建新类,但我有很多不同的案例(大约8个不同的$u POST['type',5个不同的$u POST['mode'],以及3或4个其他标准,我必须有大约50或60个完整的案例)因此,如果必要,我将尝试消除无用的案例(如果我可以),但是,我希望您理解我的意思,我更喜欢另一种解决方案您可能需要将您的结构抽象一点,并将其分为多个案例组,因此,您正在考虑构建一个小型库,而不是一个类来处理它们。但这就是OOP的全部内容。一旦您创建了实体结构(对于像您这样的情况,可能看起来更像一棵树,而不是一组简单的类),您所要做的就是编写一个返回正确对象的工厂类。向对象添加方法是不可能的,您只能将对象加载到对象中,但这是一种非常混乱的方法,使用工厂是一种更干净的方法。谢谢您的回答,您的解释给了我一个想法。我将创建一个具有公共方法的公共实体,可能还有不同类型的类Mode1Module,Mode2Module,Type1Module。。。链接到我的实体并包含我的方法,这可能会起作用。但是模块链接可能有点麻烦(这取决于你如何编写加载程序。无论如何,很高兴我能在某种程度上提供帮助)。