我有一种方法通过利用func_get_args来确定方法签名来支持复杂的“重载”。然而,在某些情况下,参数类型过于模糊不清。对PHP“超载”方法签名的歧义消除
designGarment('my shirt', SIZES::XXL, FABRICS::COTTON);
designGarment('my dress', FABRICS::SILK, ATTIRES::PARTY);
在上面的例子中,两个方法签名解析为字符串,整数,INT因为尺寸的织物和只装是与各自的属性定义的整数常量类。我希望能够区分(STRING,SIZES,FABRICS)签名和(STRING,FABRICS,ATTIRES)签名。这在PHP中可能吗?
感谢您的回复。我应该澄清,我正在构建一个框架,有问题的方法确实允许单个数组参数提供键/值对,但我想给出选项不要使用数组。你的第一个例子违背了我试图实现的目的,我不妨将构造函数的参数直接传递给designGarment或者为你的Garment对象公开一个“设计”方法。 – leo
@leo:那么,PHP不支持命名参数,所以我不知道除了设置(非常分离的)整数值到不同的常量以及检查它们是否属于该属性范围。例如“如果它在1-100之间,它必须是FABRICS ::值,250-500是ATTIRES等。 –
是的,我正在考虑一些与此相关的内容,或许还会分隔字符串ala FAB_1,FAB_2等。 – leo