这个php向下转换的解决方法有多贵

时间:2009-11-13 13:37:55

标签: php downcast

此问题与downcasting in php5

有关

这种php向下转换的解决方法有多贵?

这个php向下转换的解决方案是否过于昂贵?

我回应了microtimes,似乎需要0.001。我想知道这可能是一个大型foreach的问题。

public static function to($obj) {

    return unserialize(preg_replace(
    '/^O:\d+:\"(\w+)/',
    'O:' . strlen('this_class_name') . ':"' . 'this_class_name',
    serialize($obj)));
}

http://php.net/manual/en/language.types.type-juggling.php评论中提出的解决方案类似。

2 个答案:

答案 0 :(得分:2)

通过提供0.001(秒,我推测)的时间,您似乎已经回答了关于操作有多昂贵的问题。

至于那是否昂贵,我会说通过将它与替代品进行比较可以得到最佳答案。

从另一个SO问题的答案中,另一种选择是构建一个新对象。您将不得不进行试验,看看这种方法是否更快。

你的代码片段似乎很麻烦,它似乎来自PHP页面上的“toma at smartsemantics dot com”。我试图找出你的$obj可能是什么,以及关于你的问题的一些背景,看看是否有任何不涉及向下转换的替代方案。

可能在PHP中故意禁止向下转发以阻止人们使用向下转发。这是因为根据Liskov替代原则,需要它的OOP设计存在缺陷。

答案 1 :(得分:2)

我真的不认为你应该关心这是多么昂贵,而是关注你在应用程序级别尝试将高级功能实现到编程语言这一事实​​。这似乎是一个非常糟糕的主意。

如果您的Web应用程序需要向下转换,那么PHP可能不是最佳选择。然而,我严重怀疑向下转换确实需要,更好的设计可以避免一起使用。