class News {
protected $newsName;
function last() {
$this->newsName = 'Я последняя новость';
}
}
class Mail extends News {
function send() {
echo $this->newsName;
}
}
$news = new News();
$news->last();
$mail = new Mail();
$mail->send(); //пусто, хотя по логике должно вывести 'Я последняя новость'
Спустя 5 минут, 54 секунды (27.10.2011 - 13:55) Winston написал(а):
! |
Winston |
Спустя 7 минут, 8 секунд (27.10.2011 - 14:02) Семён написал(а):
Естественно, так и будет
Здесь у тебя будет т.к. была вызвана функция last(), которая и установит некое значение в переменную $newsName:
Здесь у тебя, ничего не выходит, потомучто ты создал экземпляр класса Mail унаследовал News, но не вызвал фукнцию last()
И да прочитай, что такое return в функциях.
Здесь у тебя будет т.к. была вызвана функция last(), которая и установит некое значение в переменную $newsName:
$news = new News();
$news->last();
Здесь у тебя, ничего не выходит, потомучто ты создал экземпляр класса Mail унаследовал News, но не вызвал фукнцию last()
$mail = new Mail();
$mail->send();
И да прочитай, что такое return в функциях.
Спустя 3 минуты, 6 секунд (27.10.2011 - 14:05) Семён написал(а):
В итоге твой класс быть должен быть таким:
class News {
protected $newsName;
public function last() {
$this->newsName = 'Я последняя новость';
return $this->newsName;
}
}
class Mail extends News {
function send() {
return $this->newsName;
}
}
$mail = new Mail();
$mail->last();
echo $mail->send();
Спустя 5 минут, 31 секунда (27.10.2011 - 14:11) Renden написал(а):
Семён
да это все понятно что я из класса наследника могу вызвать написав так:
да это все понятно что я из класса наследника могу вызвать написав так:
$mail = new Mail();
$mail->last();
$mail->send();
Цитата |
Здесь у тебя, ничего не выходит, потомучто ты создал экземпляр класса Mail унаследовал News, но не вызвал фукнцию last() |
я вызвал её раньше, значения то она записала поидее, почему я немогу получить эти значения?
Спустя 1 минута, 5 секунд (27.10.2011 - 14:12) Семён написал(а):
Renden
Прочитай, что такое Статические методы и классы в PHP, это поможет тебе.
Прочитай, что такое Статические методы и классы в PHP, это поможет тебе.
Спустя 2 минуты, 7 секунд (27.10.2011 - 14:14) Renden написал(а):
Семён
ок почитаю..
И еще вопрос я могу записать в класс наследник какое-то свойство которое сгенерировалось в классе родителе?
Пример:
ок почитаю..
И еще вопрос я могу записать в класс наследник какое-то свойство которое сгенерировалось в классе родителе?
Пример:
class News {
public function last() {
$this->newsName = 'Я последняя новость';
return $this->newsName;
}
}
class Mail extends News {
protected $newsName;
function send() {
return $this->newsName;
}
}
Спустя 2 минуты, 17 секунд (27.10.2011 - 14:16) Семён написал(а):
Вот пример:
class News {
static protected $newsName;
public function last() {
self::$newsName = 'Я последняя новость';
return self::$newsName;
}
}
class Mail extends News {
function send() {
return self::$newsName;
}
}
News::last();
$mail = new Mail();
echo $mail->send();
Спустя 3 минуты, 34 секунды (27.10.2011 - 14:20) Семён написал(а):
Цитата |
И еще вопрос я могу записать в класс наследник какое-то свойство которое сгенерировалось в классе родителе? |
Да, смотри мой посл. пример. (читаем что такое static, читаем что такое private, public, protected))
Спустя 1 минута, 51 секунда (27.10.2011 - 14:22) caballero написал(а):
Цитата |
я вызвал её раньше, значения то она записала поидее, почему я немогу получить эти значения? |
ты ж разные екземпляры создал
найди книгу ООП для чайников и почитай что такое инкапсуляция
Спустя 1 минута, 31 секунда (27.10.2011 - 14:23) caballero написал(а):
Цитата |
читаем что такое static, читаем что такое private, public, protected |
Читаем что такое классы а что такое экземпляры (instance) классов
человек не может отличить одно од другого - зачем ему лезть дальше
Спустя 31 секунда (27.10.2011 - 14:24) m4a1fox написал(а):
Читаю книжку Зандстра, очень занимательно.... Я бы вам посоветовал тоже почитать! По тихоньку тоже начинаю осваивать ООП, и вот что думаю по вашему поводу! ИМХО конечно, не обессудьте. Так вот, а не проще ли объявить экземпляр класса в производном классе.... просто мысли....
Спустя 31 секунда (27.10.2011 - 14:24) Семён написал(а):
caballero
Согласен, но это замечание уже было сделано)
Согласен, но это замечание уже было сделано)
Спустя 2 минуты, 38 секунд (27.10.2011 - 14:27) m4a1fox написал(а):
А в производном так же можно вызвать констуктор, кот. будет принимать в виде параметра объект класса родителя. Таким образом, код вызова класса сократиться до одной строчки! не уверен...но все же!
Спустя 1 минута, 55 секунд (27.10.2011 - 14:29) Семён написал(а):
m4a1fox
Я тебя понял, это нужно реально не во всех ситуациях)))
Я тебя понял, это нужно реально не во всех ситуациях)))
Спустя 14 секунд (27.10.2011 - 14:29) Renden написал(а):
caballero
Когда я читаю "просто так" плохо запоминаю, другое дело когда ты пытаешься что-то сделать в своем проекте, и возникает проблема, когда ты её решаешь ты навсегда запоминаешь как это сделать.
Про ООП смотрел видеокурсы, но там в общих чертах только...
m4a1fox
проще не всегда лучше, но в данном примере было интересно узнать, а не "забить" и сделать так как проще
Когда я читаю "просто так" плохо запоминаю, другое дело когда ты пытаешься что-то сделать в своем проекте, и возникает проблема, когда ты её решаешь ты навсегда запоминаешь как это сделать.
Про ООП смотрел видеокурсы, но там в общих чертах только...
m4a1fox
проще не всегда лучше, но в данном примере было интересно узнать, а не "забить" и сделать так как проще
Спустя 1 минута, 39 секунд (27.10.2011 - 14:31) Семён написал(а):
Вопросы есть ещё? )
или тема исчерпала себя?
или тема исчерпала себя?
Спустя 2 минуты, 3 секунды (27.10.2011 - 14:33) m4a1fox написал(а):
Не проще, тут я не правильно сказал! А альтернативнее....вот и все!
Спустя 2 минуты, 9 секунд (27.10.2011 - 14:35) Renden написал(а):
Семён
Пока вроде нет
всем спс)
Пока вроде нет
всем спс)
Спустя 32 минуты, 12 секунд (27.10.2011 - 15:07) caballero написал(а):
Цитата |
Про ООП смотрел видеокурсы |
Учебники нормальные нужно читать и изучать примеры а не видео курсы. Посмотрев кинушку программированить нне научишся.
Спустя 26 секунд (27.10.2011 - 15:07) bodja написал(а):
Цитата |
Доброго, наверно уже задолбал, но непонятно почему не работает и как заставить работать? |
Здесь все очень просто.
Вы создали 2 обьекта,имеющие 2 одинаковых class News,но это независимые друг от друга обьекты,просто с одинаковым кодом.
прочитатйте предыдущий топик,я этот вопрос рассматривал.
Спустя 54 секунды (27.10.2011 - 15:08) Семён написал(а):
Закрыл тему, чтобы некрофилы не выползали
Спустя 1 минута, 55 секунд (27.10.2011 - 15:10) Winston написал(а):
caballero
Цитата (caballero @ 27.10.2011 - 15:07) |
Учебники нормальные нужно читать |
Хотел бы узнать ваше мнение. Какие книги по ООП посоветуете ?
Цитата (Семён @ 27.10.2011 - 15:08) |
Закрыл тему |
Как быстро.
Админ придет и откроет
Спустя 4 дня, 18 часов, 2 минуты, 48 секунд (1.11.2011 - 09:13) linker написал(а):
Тему открыл. Раз за разом возникают подобные темы, а все от того, что не понимают, что объекты (экземпляры) не являются родственными друг-другу, объекты не наследуются друг от друга. Наследование происходит на уровне классов, когда ещё об объектах не идёт никакой речи.
Спустя 1 час, 42 минуты, 31 секунда (1.11.2011 - 10:56) caballero написал(а):
Цитата |
Раз за разом возникают подобные темы |
А это потому что по видеокурсах учатся программировать вместо почитать документацию и сделать десяток примеров
Спустя 3 минуты, 46 секунд (1.11.2011 - 10:59) Семён написал(а):
Повыползали