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 :: Несколько вопросов об ООП
Покинул форум
Сообщений всего: 26
Дата рег-ции: Май 2010
Помог: 0 раз(а)
внутри класса self::название статического метода или переменной
Варяг
Отправлено: 08 Ноября, 2010 - 14:07:20
Новичок
Покинул форум
Сообщений всего: 61
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
vitaliy_mad, благодарю
OrmaJever
Отправлено: 08 Ноября, 2010 - 14:43:17
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
обьясните мне для чего нужны слова public, private, protected, static ?
Я прочитал про них нотак и не нашёл им применения. Обьясните в каких конкретных случаях их нужно использовать?
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
vitaliy_mad
Отправлено: 08 Ноября, 2010 - 14:52:41
Участник
Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008 Откуда: Украина, Мариуполь
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
Вы бы всё-таки почитали лучше что-нибудь, это же самые основы.
Вкратце:
public - стандартный тип, доступ для всех
private - доступ снаружи класса закрыт
protected - доступ разрешён только к наследнику класса
static - статический класс, его объект создать невозможно, обращаться только напрямую (myClass::method())
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Roler пишет:
protected - доступ разрешён только к наследнику класса
Не совсем корректное описание... Правильнее будет так:
private - доступен только изнутри этого класса
protected - доступен из этого класса и его наследников
OrmaJever пишет:
Обьясните в каких конкретных случаях их нужно использовать?
Инкапсуляция, т.е. разграничение области видимости. Если вы не понимаете, для чего может понадобиться разграничить видимость функций и переменных, ничего страшного. Потом поймёте, когда встанет необходимость этого. (как правило, это большие проекты и несколько разработчиков)
----- PostgreSQL DBA
OrmaJever
Отправлено: 08 Ноября, 2010 - 16:29:36
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Вы наверно не совсем поняли. Я знаю значения этих слов. ПРосто немогу понять зачем они?
Зачем обьявлять свойства или методы private или protected если мне и паблик не мешает?
Зачем обьявзять свойства или методы статик если можно просто создать обект?
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Мелкий
Отправлено: 08 Ноября, 2010 - 16:39:05
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
OrmaJever пишет:
Зачем обьявлять свойства или методы private или protected если мне и паблик не мешает?
Один из 3 столпов ООП, инкапсуляция. И, это вам не мешает. А делать доступными методы, которые нигде, кроме как внутри этого класса не нужны будут - как минимум неэтично.
OrmaJever пишет:
Зачем обьявзять свойства или методы статик если можно просто создать обект?
Например, для контроля популяции этих классов.
Например: есть класс соединения с БД и можно сделать так, что при создании экземпляров этого класса реально будет создан только один - зачем нам несколько коннектов к одной базе?
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Мелкий пишет:
А делать доступными методы, которые нигде, кроме как внутри этого класса не нужны будут - как минимум неэтично.
А как максимум? Если зделать свойство privat то это увеличит производительность или на что то повлияет? (Добавление)
Я не знаю как у вас но у меня любой написаный метод в итоге используется за пределами класа.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Roler
Отправлено: 08 Ноября, 2010 - 19:23:45
Посетитель
Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008 Откуда: Россия
Помог: 1 раз(а)
Цитата:
А как максимум? Если зделать свойство privat то это увеличит производительность или на что то повлияет?
Это влияет только на доступ. Всё.
Цитата:
Я не знаю как у вас но у меня любой написаный метод в итоге используется за пределами класа.
Ну значит у вас такие классы.
Просто одна из основ ООП - инкапсуляция, т.е. сокрытие деталей реализации. Допустим, вы написали какую-то полезную библиотеку.
Она получает информацию, как-то её хранит, обрабатывает, выдаёт. И чтобы лишить разработчика возможности испортить её, делают все методы кроме нескольких private.
Т.е. разработчик может скормить данные, и получить, что ему дают, но не может вмешаться в процесс.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.