0

这个问题与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评论中提出的解决方案类似。

4

2 回答 2

2

通过呈现时间 0.001(我想是秒),您似乎已经回答了您自己的问题,即该操作的成本有多高。

至于这是否太贵,我想说最好通过将其与替代品进行比较来回答。

从您的其他 SO 问题的答案中,一种替代方法是构造一个新对象。您将不得不进行试验,看看这种方法是否更快。

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

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

于 2009-11-13T13:50:48.570 回答
2

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

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

于 2009-11-13T14:04:34.013 回答