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.SU

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


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

> Без описания
Варяг
Отправлено: 08 Ноября, 2010 - 13:53:05
Post Id



Новичок


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


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




Здравствуйте. Как обратиться к статической переменной (например static $myval)внутри этого же класса, используя :: ?

из класса наследника можно так parent::$myval или используя название класса.
 
 Top
vitaliy_mad
Отправлено: 08 Ноября, 2010 - 13:54:49
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




 
 Top
Варяг
Отправлено: 08 Ноября, 2010 - 13:59:23
Post Id



Новичок


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


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




vitaliy_mad, не то. я говорю именно про статическую-static
 
 Top
vitaliy_mad
Отправлено: 08 Ноября, 2010 - 14:05:28
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




 
 Top
pitbul
Отправлено: 08 Ноября, 2010 - 14:06:15
Post Id


Новичок


Покинул форум
Сообщений всего: 26
Дата рег-ции: Май 2010  


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




внутри класса self::название статического метода или переменной
 
 Top
Варяг
Отправлено: 08 Ноября, 2010 - 14:07:20
Post Id



Новичок


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


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




vitaliy_mad, благодарю Улыбка
 
 Top
OrmaJever Модератор
Отправлено: 08 Ноября, 2010 - 14:43:17
Post Id



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


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


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




обьясните мне для чего нужны слова public, private, protected, static ?
Я прочитал про них нотак и не нашёл им применения. Обьясните в каких конкретных случаях их нужно использовать?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vitaliy_mad
Отправлено: 08 Ноября, 2010 - 14:52:41
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




 
 Top
Roler
Отправлено: 08 Ноября, 2010 - 14:55:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


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




Вы бы всё-таки почитали лучше что-нибудь, это же самые основы.

Вкратце:
public - стандартный тип, доступ для всех
private - доступ снаружи класса закрыт
protected - доступ разрешён только к наследнику класса
static - статический класс, его объект создать невозможно, обращаться только напрямую (myClass::method())

(Отредактировано автором: 08 Ноября, 2010 - 15:02:48)

 
 Top
Мелкий Супермодератор
Отправлено: 08 Ноября, 2010 - 15:34:09
Post Id



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


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


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




Roler пишет:
protected - доступ разрешён только к наследнику класса

Не совсем корректное описание... Правильнее будет так:
private - доступен только изнутри этого класса
protected - доступен из этого класса и его наследников

OrmaJever пишет:
Обьясните в каких конкретных случаях их нужно использовать?

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


-----
PostgreSQL DBA
 
 Top
OrmaJever Модератор
Отправлено: 08 Ноября, 2010 - 16:29:36
Post Id



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


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


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




Вы наверно не совсем поняли. Я знаю значения этих слов. ПРосто немогу понять зачем они?
Зачем обьявлять свойства или методы private или protected если мне и паблик не мешает?
Зачем обьявзять свойства или методы статик если можно просто создать обект? Однако

(Отредактировано автором: 08 Ноября, 2010 - 16:30:23)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Мелкий Супермодератор
Отправлено: 08 Ноября, 2010 - 16:39:05
Post Id



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


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


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




OrmaJever пишет:
Зачем обьявлять свойства или методы private или protected если мне и паблик не мешает?

Один из 3 столпов ООП, инкапсуляция. И, это вам не мешает. А делать доступными методы, которые нигде, кроме как внутри этого класса не нужны будут - как минимум неэтично.

OrmaJever пишет:
Зачем обьявзять свойства или методы статик если можно просто создать обект?

Например, для контроля популяции этих классов.
Например: есть класс соединения с БД и можно сделать так, что при создании экземпляров этого класса реально будет создан только один - зачем нам несколько коннектов к одной базе?

(Отредактировано автором: 08 Ноября, 2010 - 16:41:43)



-----
PostgreSQL DBA
 
 Top
vitaliy_mad
Отправлено: 08 Ноября, 2010 - 17:27:03
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




закон ООП: Если не знаешь где применить, то оно тебе не надо, не используй ООП!!!
 
 Top
OrmaJever Модератор
Отправлено: 08 Ноября, 2010 - 18:23:19
Post Id



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


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


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




Мелкий пишет:
А делать доступными методы, которые нигде, кроме как внутри этого класса не нужны будут - как минимум неэтично.

А как максимум? Если зделать свойство privat то это увеличит производительность или на что то повлияет?
(Добавление)
Я не знаю как у вас но у меня любой написаный метод в итоге используется за пределами класа.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Roler
Отправлено: 08 Ноября, 2010 - 19:23:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


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




Цитата:

А как максимум? Если зделать свойство privat то это увеличит производительность или на что то повлияет?

Это влияет только на доступ. Всё.


Цитата:
Я не знаю как у вас но у меня любой написаный метод в итоге используется за пределами класа.

Ну значит у вас такие классы.
Просто одна из основ ООП - инкапсуляция, т.е. сокрытие деталей реализации. Допустим, вы написали какую-то полезную библиотеку.

Она получает информацию, как-то её хранит, обрабатывает, выдаёт. И чтобы лишить разработчика возможности испортить её, делают все методы кроме нескольких private.
Т.е. разработчик может скормить данные, и получить, что ему дают, но не может вмешаться в процесс.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB