2012-02-14 3 views
1

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

ответ

0

Он может быть использован для создания статических моделей фабрики, используя конце статического связывания с статическим методом перегрузки для предотвращения необходимости в дополнительных громоздкие заводские классах, такие как:

class MyObject { 

    public static function createInstance($typeA = true) { 
     if ($typeA) { 
      return static::createInstanceA(); 
     }else{ 
      return static::createInstanceB(); 
     } 
    } 

    protected static function createInstanceA() { 
     return new MyObject(...); 
    } 

    protected static function createInstanceB() { 
     return new MyObject(...); 
    } 
} 


class MyObjectDebug extends MyObject { 

    protected static function createInstanceA() { 
     return new MyObjectDebug(...); 
    } 
} 

если вы любите такие вещи, конечно, ,

0

LSB важно при расширении классов. Он позволяет использовать static:: для ссылки на элемент класса, тогда как self:: конкретно ссылается на класс, который он использует. В основном, LSB позволяет вам переопределять статические методы в базовом классе.

Смежные вопросы