同じプロパティを何度も参照しているコードを見かけ、「それは遅いだろう」と思ったのですが、実際にどのくらい遅くなるのか気になったので、簡単なベンチマークスクリプトで確認してみました。
<?php
$obj1 = new stdClass;
$obj1->foo = 'bar';
$obj2 = new stdClass;
$obj2->foo = new stdClass;
$obj2->foo->bar = 'baz';
$obj1_foo = $obj1->foo;
$obj2_foo_bar = $obj2->foo->bar;
$start = microtime(true);
for ($i = 1; $i <= 10000000; $i++) {$obj1->foo;}
$end = microtime(true);
echo '$obj1->foo : ', $end - $start, "\n";
$start = microtime(true);
for ($i = 1; $i <= 10000000; $i++) {$obj2->foo->bar;}
$end = microtime(true);
echo '$obj2->foo->bar : ', $end - $start, "\n";
$start = microtime(true);
for ($i = 1; $i <= 10000000; $i++) {$obj1_foo;}
$end = microtime(true);
echo '$obj1_foo : ', $end - $start, "\n";
$start = microtime(true);
for ($i = 1; $i <= 10000000; $i++) {$obj2_foo_bar;}
$end = microtime(true);
echo '$obj2_foo_bar : ', $end - $start, "\n";
$obj1->foo : 0.19446301460266
$obj2->foo->bar : 0.30430507659912
$obj1_foo : 0.094012975692749
$obj2_foo_bar : 0.094088077545166
というわけで、$obj1->foo
なら変数を2回、$obj2->foo->bar
なら変数を3回、参照するのと同じくらい時間がかかるのだと分かりました。雑な理解ではありますが、リファクタリングの効果を推測する際の参考にはなるかと思います。