0

この質問はphp5のダウンキャストに関連しています

この php ダウンキャストの回避策はどれくらい費用がかかりますか?

この PHP ダウンキャストの回避策は高すぎますか?

私はマイクロタイムズをエコーし​​ましたが、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質問への回答から、1つの代替手段は、新しいオブジェクトを作成することです。そのアプローチがより速いかどうかを確認するために実験する必要があります。

あなたのスニペットは面倒なようで、PHPページの「tomaatsmartsemanticsdotcom」からのもののようです。私はあなたが何であるか$obj、そしてあなたの問題についての少しの文脈を理解して、ダウンキャストを伴わない代替案があるかどうかを確認しようとしています。

おそらく、PHPではダウンキャストを意図的に禁止して、人々がダウンキャストを使用するのを思いとどまらせています。これは、それを必要とするOOP設計が、リスコフの置換原則に従って欠陥があるためです。

于 2009-11-13T13:50:48.570 に答える
2

これがどれほど高価であるかを気にする必要はないと思います。むしろ、高レベルの機能をアプリケーション レベルでプログラミング言語に実装しようとしているという事実を気にする必要があります。これは非常に悪い考えのように思えます。

Web アプリケーション内でダウンキャストが必要な場合、おそらく PHP は最良の選択ではありません。ただし、ダウンキャストが本当に必要かどうかは真剣に疑問です。より良い設計では、ダウンキャストを一緒に使用することを避けることができます。

于 2009-11-13T14:04:34.013 に答える