Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ООП КОНСТРУКЦИИ и ПРИЕМЫ программирования на PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: делимся конструкциями, приемами программирования и наглядными примерами
lowmax
Отправлено: 05 Августа, 2012 - 19:08:52
Post Id



Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Кто освоился в ООП, скидывайте наглядные примеры интересных конструкций
(совершенно не важно откуда вы ее взяли, главное пихайте сюда самое интересное)

первая конструкция:

PHP:
скопировать код в буфер обмена
  1.  
  2. class pre {
  3.         private $name=array();
  4.         private static $ins;
  5.        
  6.         private function __conctruct() { }//сделали конструктор приватным, запретив тем самым создавать экземпляр обьекта
  7.        
  8.         static function getins() {
  9.                 if(empty(self::$ins)) {
  10.                         self::$ins=new pre();//создаем экземпляр обьекта
  11.                 }
  12.                 return self::$ins;
  13.         }
  14.        
  15.         function setname($k,$n) {
  16.                 $this->name[$k]=$v;
  17.         }
  18.        
  19.         function getname($k) {
  20.                 return $this->name[$k];
  21.         }
  22. }
  23.  
  24. $name_dump=pre::getins();
  25. $name_dump->setname('name','Васек');
  26.  
  27. unset($name_dump);//удаляем ссылку
  28.  
  29. $name_dump_x=pre::getins();
  30. echo $name_dump_x->getname('name');//выведет Васек
  31.  
 
 Top
EuGen Администратор
Отправлено: 05 Августа, 2012 - 19:30:24
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Почитайте http://ru[dot]wikipedia[dot]org/wiki/%D0[dot][dot][dot]0%BD%D0%B8%D1%8F
А конкретнее - паттерн Singleton


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 05 Августа, 2012 - 19:30:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Приведён классический пример патерна одиночка.
Куча разных патернов с разбором: Приемы объектно-ориентированного проектирования - Э. Гамма


-----
PostgreSQL DBA
 
 Top
OrmaJever Модератор
Отправлено: 05 Августа, 2012 - 19:31:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




У unset есть оговорочка
Цитата:
Если переменная, ПЕРЕДАННАЯ ПО ССЫЛКЕ, unset() внутри функции, то разрушается только локальная переменная.Переменная в вызывающем окружении останется с тем же значением, что и до вызова unset().

Это обьсняет ваш случай.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
caballero
Отправлено: 05 Августа, 2012 - 19:34:36
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Кто освоился в ООП, скидывайте наглядные примеры интересных конструкций

Интересность конструкций не зависит от парадигмы програмирования так же как качество програмы не зависит от интересности конструкции. Бере любой фреймвоорк и смотри что там тебе интересно.

Цитата:
первая конструкция

Обычный синглетон. И что?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Bio man
Отправлено: 05 Августа, 2012 - 19:56:22
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




мало кто знает но есть способ обратиться к скрытым свойствам или методам! Но с оговорками...
PHP:
скопировать код в буфер обмена
  1. class Test
  2. {
  3.     private $foo;
  4.  
  5.     public function __construct($foo)
  6.     {
  7.         $this->foo = $foo;
  8.     }
  9.  
  10.     private function bar()
  11.     {
  12.         echo 'Доступ к закрытому методу.';
  13.     }
  14.  
  15.     public function baz(Test $other)
  16.     {
  17.         // Мы можем изменить закрытое свойство:
  18.         $other->foo = 'hello';
  19.         var_dump($other->foo);
  20.  
  21.         // Мы также можем вызвать закрытый метод:
  22.         $other->bar();
  23.     }
  24. }
  25.  
  26. $test = new Test('test');
  27.  
  28. $test->baz(new Test('other'));
  29.  

Источник http://php.net/manual/ru/languag...5.visibility.php
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB