The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

PHP. Объекты, шаблоны и методики программирования

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by 9229696521, 2018-03-28 08:15:50

PHP. Объекты, шаблоны и методики программирования

PHP. Объекты, шаблоны и методики программирования

220 Часть 1 1 1 . Шаблоны

который автоматически генерирует файл класса. Вот пример класса, в который
включен признак типа протокола календаря.

class Settings {
static $СОММSТУРЕ = ' Bl oggs ' ;

Теперь, когда у нас есть значение параметра (хотя и сделанного неэлегантно),
можно создать класс, который использует его для принятия решения о том, какой

объект типа CoпunsManager нужно предоставить по запросу. В таких ситуациях часто

используют шаблон Singleton в сочетании с шаблоном Abstract Factory. поэтому да­
вайте так и поступим.

require_once ( ' Settings . php ' ) ;

class AppConfi g {
private static $instance;
private $commsManager;

private function _construct ( )

11 Выполняется только один раз

$this->init ( ) ;

private funct ion init ( ) {
swi tch ( Sett i ngs : : $СОММSТУРЕ ) {
case ' Mega ' :
$this->commsManager = new MegaCommsManager ( ) ;
br e a k ;
default :
$this- >commsManager new BloggsCommsManager ( ) ;

puЫic static function get instance ( )
i f ( empty ( s e l f : : $ ins tance ) ) {
sel f : : $ instance = new sel f ( ) ;

return sel f : : $ i ns tance ;

puЫ ic function getCommsManager ( )
return $this->commsManager ;

Класс AppC o n f i g - это стандартный Singleton. Поэтому мы можем легко полу­
чить ссылку на экземпляр App C on f i g в любом месте системы, причем всегда на один
и тот же экземпляр. Метод i n i t ( ) вызывается конструктором класса и поэтому за­

пускается только один раз в процессе выполнения программы. В нем проверяется

свойство S e t t i n g s : : $СОММSТУРЕ, и в соответствии с его значением создается экзем­
пляр конкретного объекта типа CoпunsMana g e r . Теперь наш сценарий может полу­
чить объект типа CoпunsMa na g e r и работать с ним, даже не зная о его конкретных

реализациях или конкретных классах, которые он генерирует.

$ commsMgr = AppCon f i g : : getinstance ( ) - >getCommsManager ( ) ;
print $commsMgr- >getApptEncoder ( ) - >encode ( ) ;




























































Click to View FlipBook Version