Является ли хорошей идеей использовать перегрузку исключительно из соображений симпатичного именования функций? :)
Например:
echo $ store-> product-> getPrice ($ currency);
product
вызовет __get, затем __getObject ('product'), который выполняет магические действия и возвращает текущий продукт, который рассматривается как объект (экземпляр создается, если это первый вызов) echo $ store-> product ('dog') -> getPrice ($ currency);
product
вызовет __call, затем __callObject ('product', ...) ... if(!$store->product)
$store->product = new Product();
echo $store->product->getPrice($currency);
и
$product = new Product('dog');
echo $product->getPrice($currency);
Мне очень нравится перегрузка, потому что я могу получить хороший API для своих классов. Но недостатком является то, что перегруженный материал в 15 раз медленнее, чем прямой вызов свойств / методов.
Можно ли использовать такую перегрузку?
В моем текущем приложении я не вызываю перегруженные элементы более 1000 раз. И это не должно сильно влиять на производительность. Может быть, дополнительные 0,1 с, что, учитывая, что сайт обычно создается за 0,5 - 1 с, не так уж и много