Волшебная Лучшая практика Методов в PHP? [закрытый]

Волшебная Лучшая практика Методов в PHP?

34
задан OM The Eternity 23 April 2010 в 10:53
поделиться

4 ответа

Я не думаю, что магические методы - лучший или худший метод: в зависимости от того, что вы хотите для достижения вы можете использовать их или нет ... Я имею в виду, что вам не нужно настраивать свой код, насколько это возможно, чтобы использовать их, но если вам это нужно, нет никаких проблем.

Если у вас есть объект с 3 и только 3 атрибутами, вам не нужно использовать магические сеттеры / геттеры, но в некоторых сложных случаях они являются отличным способом делать очень сложные вещи (системы ORM и т. Д.)

Возможно, некоторые из них устарели, я не знаю, но большинство из них - нет.

24
ответ дан 27 November 2019 в 16:29
поделиться

минусы

  1. Текст поиски не находят функции

  2. Систему сложнее понять , особенно для новичков

  3. Инструменты рефакторинга могут давать сбой чаще

Как правило, магические методы работают за кулисами и программист может не осознавать, что это происходит, что затрудняет отладку.

Когда поиск функций (или других символов) не может найти все совпадения, удаление старого кода становится кошмаром, и этот страх может привести к накоплению мертвого кода в базе кода. Если убрать мертвый код, это может привести к поломке в неизвестных местах.

41
ответ дан 27 November 2019 в 16:29
поделиться

Я так не думаю. Моя IDE не может показать мне "подсказки" для магических сеттеров и геттеров. Хотя код иногда труднее отлаживать.

Я предпочитаю не использовать их, лучше сгенерировать необходимые методы (как и многие сеттеры и геттеры) с помощью моего ide.

3
ответ дан 27 November 2019 в 16:29
поделиться

По крайней мере, некоторые из этих волшебных функций рекомендованы Google:

Избегайте написания простых сеттеров и геттеров

При написании классов на PHP вы можете сэкономить время и ускорить выполнение скриптов работая со свойствами объекта напрямую, вместо того, чтобы писать простые сеттеры и геттеры. В следующем примере класс dog использует методы setName () и getName () для доступа к свойству name .

 классная собака {
public $ name = ''; 
 
общедоступная функция setName ($ name) {
 $ this-> name = $ name; 
} 
 
общедоступная функция getName () {
return $ this-> name; 
} 
} {{1} } 

Обратите внимание, что setName () и getName () не делают ничего, кроме store и , возвращают свойство name соответственно.

 $ rover = new dog (); 
 $ rover-> setName ('rover'); 
echo $ rover-> getName (); 
 

Настройка а непосредственный вызов свойства name может запустить на 100% быстрее , а также сократить время разработки.

 $ rover = new dog (); 
 $ rover-> name = 'rover'; 
echo $ rover-> name; 
 

Исходная ссылка: http://code.google.com/speed/articles/optimizing-php.html

Архивная версия: https://web.archive.org/web/20120208060457/http://code. google.com/speed/articles/optimizing-php.html

В любом случае, эти методы могут быть неэффективными, но они не являются устаревшими.

7
ответ дан 27 November 2019 в 16:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: