| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > private $_name |
| Автор: supervladislav 18.4.2009, 23:07 | ||||||
| существует код подскажите ,если к свойству используется метод инкапсуляции private то мне непонятно где нельзя его использовать ,ну по отноршению к чему, К текущим функциям??? Почему надо писать и в каких методах
зачем это писать ,в каких методах? что значит
|
| Автор: supervladislav 19.4.2009, 00:01 | ||||||
я имел ввиду ,я несовсем понимаю )))как правильно использовать свойства почему
зачем нужно
а можно сразу определить переменную $name ,тоесть задать ей значение??? А если методов и свойств много ??? почему для вызова методов и свойств используется один и тотже лексикон
непонимаю в чём раздница в выше приведённом коде |
| Автор: bars80080 19.4.2009, 00:15 | ||||
дык, а какая у тебя задача? почему ты не задаёшь ей значение сразу?
во-первых, надобно бы пользовать тот код который пишешь, а не переспрашивать на форуме. неужели наблюдая за разным поведением не сможешь сделать выводов? для приведённого класса понятное дело они одинаковы, коль поставил public для свойства. но спрашивал изначально про private. зачем за нос водишь? |
| Автор: pizzz 19.4.2009, 07:48 |
| Зачем нужно $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 19.4.2009, 13:33 |
| зачем обязательно возвращать значение свойств в метод ,у меня во всех примерах так )))) можно значения свойств вызвать без возврата в метод ,и можно ли определить сразу в классе значения свойств |
| Автор: pizzz 19.4.2009, 14:00 |
| Если честно нифига не понятно. Хотите чтобы Вам помогли? Задавайте вопросы правильно. Да в классе можно определить значения |
| Автор: supervladislav 19.4.2009, 14:16 | ||
Сейчас попробую.Скажите можно свойство вызвать без вот этого
обязательно значения свойств возвращать в метод ,можно свойство вызвать без этого |
| Автор: bars80080 19.4.2009, 21:19 | ||||
что это за хрень? и почему у вас не пишется ошибка в этом коде?
да не нужно ничего делать. делайте что хотите. хотите чтобы свойство было доступно вне класса, делайте его public, не хотите - делайте private. если оно public, то значение свойства вы можете установить без всяких методов, просто присвоив ему значение:
всё. какие тут непонятки? |
| Автор: supervladislav 19.4.2009, 22:54 |
| ясно )))А ещё обязательно задавать методы инкапсуляции для методов ,в каком случае это нужно ))) если класс будет public То и всё внутри него тоже будет public или нет? Добавлено через 36 секунд у меня так напсиано в книге |
| Автор: Kirsan 19.4.2009, 23:21 |
| Класс есть класс, он не Private и не Public. Инкапсуляция нужна для того, чтобы максимально абстрагировать класс, оставляя доступным только интерфейс и пряча внутрь все вспомогательные методы и свойства. Почитайте литературу по ООП. Там это всё объясняется. Начиная с того, что ООП - это не какая-то непонятная фича PHP, а парадигма программирования. |
| Автор: bars80080 20.4.2009, 09:40 |
ничего не понял.... методы для методов? а где это вы видели, чтобы целому классу назначалось private или public? только методам и свойствам внутри класса |
| Автор: supervladislav 20.4.2009, 15:22 |
| Я читал ,что такое ооп))))я не очень понимаю как работают методы инкапсуляции))) если функция имеет метод public к нему можно будет обратиться из любой части кода так ,а если он будет он private то только в пределах этого класса тоесть это как вы могли бы дать пример пожалуйста. |
| Автор: pizzz 20.4.2009, 15:34 |
| class Demo () { private $pr; public $pu; } $obj = new Demo (); echo $obj->pr; // Вернет ошибку. echo $obj->pu; // выведеться нормально |
| Автор: IZ@TOP 21.4.2009, 15:38 |
| Почему-то, у меня стойкое ощущение, что данный топик скорее относится к фундаментальным основам ООП, а не профессиональной разработке на PHP. |
| Автор: supervladislav 21.4.2009, 19:10 |
| pizzz, а где тогда можно использовать свойство private $pr; только в методах ,так ??? |
| Автор: SureGOOD 22.4.2009, 00:48 |
| да уж...что-то мне тоже подсказывает, что стоит перенести тему) заодно и новички почитают) supervladislav свойства и методы private можно использовать только внутри класса, извне к ним обратиться нельзя |
| Автор: supervladislav 22.4.2009, 16:09 |
SureGOOD, спасибо извените что не в тот раздел. и последний вопрос ,чем отличается метод private от метода protected )))) А если методу задан private , можно будет использовать только рекурсию что ли так. Я вас очень прошу скажите я непонимаю. |
| Автор: skyboy 22.4.2009, 19:56 |
| private метод можно вызывать только из методов объекта того же класса - "извне" и из методов классов-потомков этот метод не должен быть доступен. protected метод может быть доступен в методах того же класса и классов-потомков, но недоступен "извне" класса. public метод доступен отовсюду. http://ua.php.net/private, и значение - соответствующее. |
| Автор: supervladislav 22.4.2009, 21:27 |
| Извените ещё один вопрос а ,методы классов-потомков это объекты внутри какого-то метода внутри класса так? |
| Автор: Kirsan 22.4.2009, 21:40 |
| Методы классов-потомков - это методы тех классов, которые наследуются от данного. Вы точно читали про ООП? |
| Автор: supervladislav 22.4.2009, 22:15 |
| я читал но не всё понял )))вот и спрашиваю_))))) тоесть если класс внутри какогото метода класса так |
| Автор: bars80080 22.4.2009, 23:15 |
нет, тысячу раз нет. там в ООП это нормально объясняется, выкиньте то что читали, возьмите другую книжку. есть класс с какими-то методами. вдруг нам понадобился точно такой же, но с расширенными функциями. тогда вместо того чтобы писать новый такой же класс, в нём прописывается специальная команда, которая делает его наследником, то есть он перенимает все функции другого класса, плюс дописываются пару новых методов. при этом физически они могут находится в разных файлах, и уж точно не один в другом. |
| Автор: supervladislav 22.4.2009, 23:36 |
| могли бы вы привести пример ??? |
| Автор: bars80080 22.4.2009, 23:52 | ||
|
| Автор: supervladislav 23.4.2009, 00:27 |
| а какой из классов нужно ну приобразовать в объект через new )))) тоесть насколько я понимаю методы класса parent передались классу child -- так? А принципиально название функции и класса ,ну необязательно чтобы они были схожего названия АА тоесть получается ,что класс child евляется потомком ,правильно? И последнее надеюсь скажите для чего нужна функция _CONSTRUCT() |
| Автор: supervladislav 23.4.2009, 00:44 |
| да а вот ещё а если классы в раздных файлах тогда что??? |
| Автор: enof 23.4.2009, 07:03 | ||||
Это конструктор, метод класса, который автоматически выполняется при создании объекта.
Добавлено через 59 секунд include, include_once, require_once, require - подключаете нужный файл любым способом и все. |
| Автор: bars80080 23.4.2009, 09:40 | ||||||||
только когда мы пишем: $per = new SomeClass(); только в этот момент мы создаём объект по образу и подобию класса, но сам класс при этом не меняется. мы можем ещё создать сколько угодно таких же объектов
$per = new SomeClass(); то если есть метод public function __construct() в классе, то он срабатывает а ничего. если их подключили в один файл, то можно создавать объекты и того и другого класса |
| Автор: supervladislav 23.4.2009, 10:05 |
| так а в каких случаях надо писать метод _construct |
| Автор: bars80080 23.4.2009, 10:26 |
| хочешь - пиши, не хочешь, не пиши |