![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| supervladislav |
|
||||||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
существует код
подскажите ,если к свойству используется метод инкапсуляции private то мне непонятно где нельзя его использовать ,ну по отноршению к чему, К текущим функциям??? Почему надо писать и в каких методах
зачем это писать ,в каких методах? что значит
Это сообщение отредактировал(а) supervladislav - 18.4.2009, 23:22 |
||||||
|
|||||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
по той же причине, по какой надо писать любую переменную. т.е. когда угодно
это значит, что для:
т.к. свойство видно только изнутри класса т.е. если внутри свойства написано $this->_name то проблем не будет |
||||
|
|||||
| supervladislav |
|
||||||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
я имел ввиду ,я несовсем понимаю )))как правильно использовать свойства почему
зачем нужно
а можно сразу определить переменную $name ,тоесть задать ей значение??? А если методов и свойств много ??? почему для вызова методов и свойств используется один и тотже лексикон
непонимаю в чём раздница в выше приведённом коде |
||||||
|
|||||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
дык, а какая у тебя задача? почему ты не задаёшь ей значение сразу?
во-первых, надобно бы пользовать тот код который пишешь, а не переспрашивать на форуме. неужели наблюдая за разным поведением не сможешь сделать выводов? для приведённого класса понятное дело они одинаковы, коль поставил public для свойства. но спрашивал изначально про private. зачем за нос водишь? |
||||
|
|||||
| pizzz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 14.12.2008 Где: Омск Репутация: 6 Всего: 8 |
Зачем нужно $this-> ?
Ну вот представьте у Вас 1 класс, и 3 обьекта этого класса. И у каждого обьекта определано свое свойство name. Подумайте, почему названно ОБЕКТНО-ОРЕНТИРОВАННОЕ-ПРОГРАММИРОВАНИЕ а не КЛАССО-ОРЕНТИРОВАННОЕ-ПРОГРАММИРОВАНИЕ Добавлено через 5 минут и 15 секунд class Demo { public name; __construct ($a) { $this->name=$a; } } Создавая обьект в классе можно указать код, который будет выполнен при создание обьекта. То есть $a = new Demo("ПРивет мир!!!"); $b = new Demo("Пока мир!!!"); echo $a->name; echo $b->name; Выведет: ПРивет мир!!! Пока мир!!! Добавлено через 7 минут и 51 секунду P.s. Задавайте вопросы четче. Будете получать ответы получше --------------------
Спасибо много, жмем кнопку репутация. Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады. |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
зачем обязательно возвращать значение свойств в метод ,у меня во всех примерах так ))))
можно значения свойств вызвать без возврата в метод ,и можно ли определить сразу в классе значения свойств |
|||
|
||||
| pizzz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 14.12.2008 Где: Омск Репутация: 6 Всего: 8 |
Если честно нифига не понятно. Хотите чтобы Вам помогли? Задавайте вопросы правильно.
Да в классе можно определить значения --------------------
Спасибо много, жмем кнопку репутация. Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады. |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
Сейчас попробую.Скажите можно свойство вызвать без вот этого
обязательно значения свойств возвращать в метод ,можно свойство вызвать без этого |
|||
|
||||
| bars80080 |
|
||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
что это за хрень? и почему у вас не пишется ошибка в этом коде?
да не нужно ничего делать. делайте что хотите. хотите чтобы свойство было доступно вне класса, делайте его public, не хотите - делайте private. если оно public, то значение свойства вы можете установить без всяких методов, просто присвоив ему значение:
всё. какие тут непонятки? Это сообщение отредактировал(а) bars80080 - 19.4.2009, 21:19 |
||||
|
|||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
ясно )))А ещё обязательно задавать методы инкапсуляции для методов ,в каком случае это нужно )))
если класс будет public То и всё внутри него тоже будет public или нет? Добавлено через 36 секунд у меня так напсиано в книге |
|||
|
||||
| Kirsan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.11.2008 Где: г.Волжский, Волго градская обл. Репутация: 1 Всего: 1 |
Класс есть класс, он не Private и не Public.
Инкапсуляция нужна для того, чтобы максимально абстрагировать класс, оставляя доступным только интерфейс и пряча внутрь все вспомогательные методы и свойства. Почитайте литературу по ООП. Там это всё объясняется. Начиная с того, что ООП - это не какая-то непонятная фича PHP, а парадигма программирования. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
ничего не понял.... методы для методов? а где это вы видели, чтобы целому классу назначалось private или public? только методам и свойствам внутри класса |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
Я читал ,что такое ооп))))я не очень понимаю как работают методы инкапсуляции)))
если функция имеет метод public к нему можно будет обратиться из любой части кода так ,а если он будет он private то только в пределах этого класса тоесть это как вы могли бы дать пример пожалуйста. |
|||
|
||||
| pizzz |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 14.12.2008 Где: Омск Репутация: 6 Всего: 8 |
class Demo () {
private $pr; public $pu; } $obj = new Demo (); echo $obj->pr; // Вернет ошибку. echo $obj->pu; // выведеться нормально --------------------
Спасибо много, жмем кнопку репутация. Извините меня за орфографические ошибки, я стараюсь не ошибаться, а они все равно просачиваются гады. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Почему-то, у меня стойкое ощущение, что данный топик скорее относится к фундаментальным основам ООП, а не профессиональной разработке на PHP.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
pizzz, а где тогда можно использовать свойство private $pr;
только в методах ,так ??? |
|||
|
||||
| SureGOOD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 25.3.2009 Репутация: -1 Всего: -1 |
да уж...что-то мне тоже подсказывает, что стоит перенести тему) заодно и новички почитают)
supervladislav свойства и методы private можно использовать только внутри класса, извне к ним обратиться нельзя Это сообщение отредактировал(а) SureGOOD - 22.4.2009, 00:49 |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
SureGOOD, спасибо извените что не в тот раздел. и последний вопрос ,чем отличается метод private от метода protected )))) А если методу задан private , можно будет использовать только рекурсию что ли так. Я вас очень прошу скажите я непонимаю. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
private метод можно вызывать только из методов объекта того же класса - "извне" и из методов классов-потомков этот метод не должен быть доступен.
protected метод может быть доступен в методах того же класса и классов-потомков, но недоступен "извне" класса. public метод доступен отовсюду. область видимости, и значение - соответствующее. |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
Извените ещё один вопрос а ,методы классов-потомков это объекты внутри какого-то метода внутри класса так?
|
|||
|
||||
| Kirsan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.11.2008 Где: г.Волжский, Волго градская обл. Репутация: 1 Всего: 1 |
Методы классов-потомков - это методы тех классов, которые наследуются от данного.
Вы точно читали про ООП? |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
я читал но не всё понял )))вот и спрашиваю_)))))
тоесть если класс внутри какогото метода класса так |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
нет, тысячу раз нет. там в ООП это нормально объясняется, выкиньте то что читали, возьмите другую книжку. есть класс с какими-то методами. вдруг нам понадобился точно такой же, но с расширенными функциями. тогда вместо того чтобы писать новый такой же класс, в нём прописывается специальная команда, которая делает его наследником, то есть он перенимает все функции другого класса, плюс дописываются пару новых методов. при этом физически они могут находится в разных файлах, и уж точно не один в другом. |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
могли бы вы привести пример ???
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
|
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
а какой из классов нужно ну приобразовать в объект через new ))))
тоесть насколько я понимаю методы класса parent передались классу child -- так? А принципиально название функции и класса ,ну необязательно чтобы они были схожего названия АА тоесть получается ,что класс child евляется потомком ,правильно? И последнее надеюсь скажите для чего нужна функция _CONSTRUCT() |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
да а вот ещё а если классы в раздных файлах тогда что???
|
|||
|
||||
| enof |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Это конструктор, метод класса, который автоматически выполняется при создании объекта.
Добавлено через 59 секунд include, include_once, require_once, require - подключаете нужный файл любым способом и все. |
||||
|
|||||
| bars80080 |
|
||||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
только когда мы пишем: $per = new SomeClass(); только в этот момент мы создаём объект по образу и подобию класса, но сам класс при этом не меняется. мы можем ещё создать сколько угодно таких же объектов
$per = new SomeClass(); то если есть метод public function __construct() в классе, то он срабатывает а ничего. если их подключили в один файл, то можно создавать объекты и того и другого класса |
||||||||
|
|||||||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
так а в каких случаях надо писать метод _construct
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
хочешь - пиши, не хочешь, не пиши
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |