Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (5) « Первая ... 2 3 [4] 5  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Геттеры и сеттеры
Oyeme  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1677
Пользователь №: 16955
На форуме: 7 лет, 9 месяцев, 13 дней
Карма: 94




Цитата
Но 99% веб-проектов юзают куда более прозаичные и не столь сильно связанные скрипты. И поменять свойство на геттер при сильной надобности - дело нескольких минут. Нет там никаких 300-400 мест. И быть не может.


Откуда такая статистика про 99%? Если у Вас так то это не говорит что У всех так.

Цитата
И поменять свойство на геттер при сильной надобности - дело нескольких минут.


Практика показыает наборот что "комментарии которые пишутся,сделать то-то и то-то потом в 99% процетов никогда не делаются ,а так и остаются в проекте"

Так что "потом" поменять это ошибка в проектировании

Цитата
И все эти 800 метров классов юзают одно и то же свойство.


Не одно и тоже,но свазанность проекта очень большая.

Цитата
Это всего лишь личные предпочтения и привычки. Ничего общего с реалиями не имеют.

Не навязываю свое мнение. Вообще все равно.

Dezigo работает в медицинской компани.
Цитата

Какой там трафик, тысяч 100 в сутки наскребтся? На таком трафике можно позволить себе загадывать на 15 лет вперед, как бы лишнюю букву не написать.


Истории болезней клиентов,снимки внутренних органов итд.

Сложность не измеряется, в количествах посещаемости.


--------------------
Programming: Private lessons via skype £45/h

Частные уроки в Лондоне / удаленно по skype.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 6 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 15 дней


Цитата (Oyeme @ 26.10.2015 - 15:05)
Откуда такая статистика про 99%? Если у Вас так то это не говорит что У всех так.
Это метафора конечно, однако не далека от истины. Логика простая. Большинство действующих проектов так или иначе используют фреймворки. Ну что поделать, таковы реалии. А в фреймворках нет такой запутанной и связанной структуры, чтобы какое-то свойство использовалось в 400 классах одновременно. А значит и нет частых случаев менять одно на другое. Если даже есть такие варианты, с той же базой данных, то во первых это вряд ли когда понадобится. А если предвидится такая ситуация, то тут сеттеру как раз и место. А во вторых, это бывает на столько редко, что такую ситуацию уж точно нельзя приводить аргументом. Это как совет ходить всегда в каске, потому что 15 лет назад в другом городе другой страны кому то на голову упала сосулька.
Цитата (Oyeme @ 26.10.2015 - 15:05)
Практика показыает наборот что "комментарии которые пишутся,сделать то-то и то-то потом в 99% процетов никогда не делаются ,а так и остаются в проекте"

Какие комментарии... Я разве что то про комментарии говорил? Просто нужно использовать все рационально, а не бояться бабайки под кроватью, что он когда-нибудь придет и заберет. Никаких комментариев. Удобно к свойству обратиться, нужно это делать. И всё, без комментариев.
Цитата (Oyeme @ 26.10.2015 - 15:05)
Сложность не измеряется, в количествах посещаемости.
Я не про сложность говорю как раз. А про ресурсоемкость. Когда нагрузка небольшая, можно расслабиться и не думать о таких мелочах, как сеттеры. Я вот сейчас дебаггер пишу. Какой кайф. На все наплевать. Делаю, как мне удобно, ни о чем не задумываясь. Ибо там по определению ресурс пофигу. На работе я себе этого позволить не могу. И высказывания
Цитата
Как я уже говорил,хочешь скорости пиши все в 1 файл и не используй ООП.

делают мне больно smile.gif


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 6 дней
Карма: 40




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


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3376
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 12 дней
Карма: 170




Цитата (chee @ 26.10.2015 - 19:01)
Мне не надо перечислять что дают сеттеры и почему они хороши, мне нужен реальные примеры кода(на худой конец сценарии, который бы я смог воспроизвести) в которых сеттерры/геттеры просто были бы важны.

У меня в проекте.

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


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 6 дней
Карма: 40




AllesKlar, кто мешает на сохранении конфигурации, навешать событие?


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (AllesKlar @ 26.10.2015 - 21:14)
При изменении любого конфигурационного параметра, необходимо в базе выкинуть флаг, чтобы приложения других пользователей перечитали конфиги.

Не понял... Так "в базе" или "в коде ПХП"? При чем тут геттеры-сеттеры из ООП?
В базе для таких целей существуют триггеры.


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 231
Пользователь №: 26735
На форуме: 5 лет, 9 месяцев, 1 день
Карма: 15




Дают возможность создавать свойства объекта открытые на запись, но закрытые на чтение и наоборот. Дают возможность инкапсулировать произвольный код внутри геттеров/сеттеров. Строго говоря, в php вообще нет ни геттеров, ни сеттеров, как в некоторых других языках, вместо них есть магические методы __get, __set на основе которых создают геттеры/сеттеры.


class Object
{
public function __get($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter();
} elseif (method_exists($this, 'set' . $name)) {
throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
} else {
throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}
}

public function __set($name, $value)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
$this->$setter($value);
} elseif (method_exists($this, 'get' . $name)) {
throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
} else {
throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}
}
}


// используя сеттер инкапсулируем в нем произвольный код. Для примера убедимся, что значение часа задано в верном диапазоне от 0 до 24. Также для примера запретим чтение свойства указаного через сеттер.
class MyComponent extends Object
{
private $_hours;


public setHours($value)
{
if ($value >= 0 && $value <= 24) {
$this->_hours = $value;
}
}
}


$component = new MyComponent;
$component->hours = 25; // private $_hours = null;
$component->hours = 12; // private $_hours = 12;

return $component->hours; //throw new InvalidCallException('Getting write-only property: MyComponent::hours);
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 6 дней
Карма: 40




Цитата (Santehnick @ 28.10.2015 - 13:00)
$component = new MyComponent;
$component->hours = 25; // private $_hours = null;
$component->hours = 12; // private $_hours = 12;

Вот этот пример очень трешовый, устанавливаешь 25, а он молча ничего не выставляет и ничего не говорит.

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


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 231
Пользователь №: 26735
На форуме: 5 лет, 9 месяцев, 1 день
Карма: 15




Пример был взят из вики для java, я его только переписал на php не добавляя ничего от себя. В боевом коде, конечно нужно как-то реагировать на некорректный ввод.

Если вам не требуется закрывать/открывать свойства на запись/чтение и вам не требуется инкапсулировать логику в геттере/сеттере, просто не используйте их.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Dezigo  
   Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Indiana Jones
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1001
Пользователь №: 5429
На форуме: 8 лет, 5 месяцев, 15 дней
Карма: 45




Есть пару объектов

Dezigo
- private $salary = 1600000;
+ public getSalary();

Oyeme
- private $salary = 900000;
+ public getSalary();


Twin
+ public $salary = 100000;


sergeiss
- private $salary = 300000;
+ public getSalary();

Я могу считать зарплату Twin, и изменить её.

1. Безопасность и инкапсуляция
2. Можно расширить - с Validation
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3376
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 12 дней
Карма: 170




Казалось бы уже все сказано...
Вещаю с поля боя, так сказать...
Проект мультиязычный.
Переводы хранятся в базе.
Переводы кешируются в сессии.

В шаблоне встретил ... {$TRANSLATE.CURRENCY.BEFORE} и {$TRANSLATE.CURRENCY.AFTER}
Перерыл всю базу, все языки, не нашел значений для CURRENCY.BEFORE и CURRENCY.AFTER
Оказалось, что в аналах скриптов, на основании других значений из таблицы перевода генерировалось и записывалось в сессию эти два красавца.

И тут я очередной раз подумал "пилять, как же я ненавижу этот язык!!!!"
Потому что, когда я три года назад, при планировании проетка (тогда еще ярый ява-программист) предложил использовать геттеры и сеттеры, был дружно послан в жопу.
Зато теперь наши джуниоры пишут, суки, вот такую хрень.

А был бы только геттер и заблокированный сеттер, я бы завтра никому пистонов в задницу не вставлял ph34r.gif


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 6 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 15 дней


Офигеть какой сногсшибательный аргумент. ohmy.gif
Цитата (AllesKlar @ 20.11.2015 - 01:27)
Потому что, когда я три года назад, при планировании проетка (тогда еще ярый ява-программист) предложил использовать геттеры и сеттеры, был дружно послан в жопу.

Правильно был послан. smile.gif
Целых три года понадобилось для того, чтобы где-то возникла небольшая проблемка. Три года!
Ну и что, очень много сил понадобилось, чтобы разобраться?

Зато целых три года сервак работал налегке, не мучаясь этими запорами. И дальше будет.

Свернутый текст
Тем, кто скажет про ассемблер и один файл отвечу сразу. Нужно на HTML писать. Там точно никаких непредвиденных ситуаций не возникнет.  smile.gif 


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1046
Пользователь №: 41686
На форуме: 1 год, 4 месяца
Карма: 13




Dezigo, какие интересные у тебя получились зарплаты... Это случайно, или с намеком? biggrin.gif


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3376
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 12 дней
Карма: 170




Цитата (twin @ 20.11.2015 - 06:33)
Правильно был послан. smile.gif
Целых три года понадобилось для того, чтобы где-то возникла небольшая проблемка. Три года!
Ну и что, очень много сил понадобилось, чтобы разобраться?

Зато целых три года сервак работал налегке, не мучаясь этими запорами. И дальше будет.

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

Сервак работал и до меня долго.
Вот пришел я, кинули в суппорт.
Однажды моя душа не выдержала и я на ломанном матерном немецком сказал: А вы вообще, господа, имеете понятие об MVC (Отрицаемая twin-ом как ересь №1)???
Потому что генерация html выглядела вот так:
if (($this->zusrates["r".$i]->rate == PAY_RATE)) {
$payrate .= $this->out->getLine($this->out->getLine(
$this->out->getLine($this->zusrates["r".$i]->description, $class, "pay-online", "onclick=\"CheckBox.onClickPay();\"", "$oblig $calc $ratecode"). $popup_info, "rate-line-left").
$this->out->getLine(
$this->out->getLine('<img src="template/images/info.png">', 'info', "id") .
$this->out->getLine($price, $class_price." hiddenFields", "pay-online-discount", "", "price=\"".$this->zusrates["r".$i]->rental_total_price."\""), "rate-line-right")
,
"rate-line");
} else {
if (($this->zusrates["r".$i]->rate == "MAIL") || ($this->zusrates["r".$i]->rate == WIN_RATE )) {
$ratefirst .= $this->out->getLine($this->out->getLine(
$this->out->getLine($this->zusrates["r".$i]->description, $class, "r".$i, "onclick=\"CheckBox.onClick(this,false);\"", "rate=\"r".$i."\" $oblig $calc $ratecode"). $popup_info, "rate-line-left").
$this->out->getLine(
$this->out->getLine($price, $class_price, "price-r".$i, "", "price=\"".$this->zusrates["r".$i]->rental_total_price."\""), "rate-line-right")
,
"rate-line");
} else if (substr($this->zusrates["r".$i]->rate,-7) == SERVICE) {
$ratefirst .= $this->out->getLine($this->out->getLine(
$this->out->getLine($this->zusrates["r".$i]->description, $class, "r".$i, "onclick=\"CheckBox.onClick(this,false);\"", "rate=\"r".$i."\" $oblig $calc $ratecode"). $popup_info, "rate-line-left").
$this->out->getLine(
$this->out->getLine($price, $class_price, "price-r".$i, "", "price=\"".$this->zusrates["r".$i]->rental_total_price."\""), "rate-line-right")
,
"rate-line");
} else {
//print_r($this->zusrates["r".$i]); die();
if ($this->zusrates["r".$i]->sb == NULL && substr($this->zusrates["r".$i]->rate,-3) != CDW ){
$rates .= $this->out->getLine($this->out->getLine(
$this->out->getLine($this->zusrates["r".$i]->description, $class, "r".$i, "onclick=\"CheckBox.onClick(this,false);\"", "rate=\"r".$i."\" $oblig $calc $ratecode") . $popup_info
, "rate-line-left").
$this->out->getLine(
$this->out->getLine($price, $class_price, "price-r".$i, "", "price=\"".$this->zusrates["r".$i]->rental_total_price."\""), "rate-line-right")
,
"rate-line");
} else {
$rates .= $this->out->getLine($this->out->getLine(
$this->out->getLine($this->zusrates["r".$i]->description, $class_cdw, "r".$i, "onclick=\"CheckBox.onClick(this,false);\"", "rate=\"r".$i."\" $oblig $calc $ratecode"). $popup_info, "rate-line-left").
$this->out->getLine(
$this->out->getLine($price, $class_price, "price-r".$i, "", "price=\"".$this->zusrates["r".$i]->rental_total_price."\""), "rate-line-right")
,
"rate-line");
}
}
}


Этот "маленький" кусочек всего лишь генерирует div, в который вложено еще 2 div-а, в одном сторка - название тарифа, во втором стоимость. А теперь клиент просит, что если у тарифа есть доп. опции, то выводить шрифтом по-мельче там же.

Вот примерно в этом месте я сказал, что либо мы переписываем данный проект с нуля, либо я пошел...

Переписали.
Еще через полгода, когда очередной умник переписал физически файл и закоммител его в SVN, чем убил ВСЮ историю по данному файлу, мне удалось нытьем / угрозами / шантажем перевести предприятие на git (Отрицаемая twin-ом как ересь №2)

А еще один у нас монстр MSSQL и считает, что 99% должна делать база. И данные выплевывает из процедуры базы в формате xml, чтобы не делать 100500 запросов к базе. У него за весь проект ОДИН запрос, а потом сразу все в браузер щмяк... там же xml уже готовый.
А багу фиксить - это застрелиться... да по всем датабанкам клиентским потом пройтись.

А вот вчера аукнулись геттеры....

Это я к чему... можно писать нативно. Можно пренебрегать "модными" патернами. Их же придумали просто потому, что модно, а не потому, что процесс оптимизируется и приложение становится более устойчивым.
Можно. Если ты один на фрилансе, вывалил какашечку заказчику и внес его в скайпе в блеклист.

А в команде должны быть стандарты.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 19 дней
Карма: 167




Цитата (AllesKlar @ 20.11.2015 - 08:42)
у нас монстр MSSQL и считает, что 99% должна делать база.

Хоть ты со мной и не разговариваешь я тебе так скажу, база должна делать не 99%, а 100% того что должна делать база, но без триггеров и хранимых процедур (чаще всего их применение как раз компенсирует недостаток знаний SQL) Гораздо хуже когда головную боль БД перекладывают на РНР (и это встречается гораздо чаще чем ваш немецкий монстр). Отрицание БД с твоей стороны, сродни отрицаниям Николая.

По теме:
Геттеры и сеттеры нужны однозначно, даже если работаешь без команды. РНР это язык в котором нужна самодисциплина. РНР это язык в котором из процедурки до говнокода один шаг, а из ООП всего пол шага, только в ООП это "завуалированно".
Тема собственно ни о чём...


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (5) « Первая ... 2 3 [4] 5  Ответ в темуСоздание новой темыСоздание опроса