TiA: mark2011, parent::aTest(); скорей-всего выдаст ошибку так как идет обращение к статическому методу родительского класса. Метод aTest статическим не является. В данном случае придется использовать $this->aTest();
Да ладно? o_O Хоть бы потестили, для начала, советчики блин...
---------- Добавлено 29.12.2012 в 19:48 ----------
Ladycharm: В классе B extends A должна быть внутренняя переменная/массив типа class A, иначе нечего extend-ить (она создаётся $this->ИмяЭтойПеременной =& new A).
Обращение из класса B к свойствам/методам класса-родителя правильно выглядит как $this->ИмяЭтойПеременной->МетодКлассаA. Тогда никаких проблем с одинаковыми названиями свойств/методов не возникает, и всегда понятно, что откуда вызывается.
Эмм... А зачем путать ТС? Он спрашивает, как расширить класс, а не как использовать другой. Ваш подход идеален для использования моделей в контроллерах, например. Т.е., в тех случаях, когда класс A не зависит от класса B, но использует класс B внутри методов класса A.
Т.С.: по Вашему вопросу ответ простой: $this-> используется только по отношению к данному объекту, в котором используется (в статичных методах вообще не может быть использован), а parent:: в отношении родительского класса (НЕ ОБЪЕКТА!). В результате parent всегда ссылается на родительский класс, а $this на первый метод в иерархии классов вверх по дереву от текущего.
foxi: это типа для неопределившихся, которые не решили, файлы им надо или полноценная база? )))
Не, это типа для тех, кто использует нужный функционал в зависимости от ситуации. Я, например, без исключений всегда использую mysql и awilum я доказывал, что mysql обязан быть в движке (правда, я немного другой вариант имел в виду)). Но я так же понимаю, что для сайта-визитки в 10-15 страниц использование базы может быть не оправдано...
foxi: многие движки такое имеют. более продвинутые и навороченные конечно же только на mysql, легкие на файлах.
Я пока знаю только 2 движка (монстра и блоголет), которые позволяют использовать либо полноценную базу, либо базу на файлах. Подскажешь еще?
foxi: монстра же тяжелая и тормознутая как навороченные движки, а по функционалу гдето в самом начале пути, про юзерфрендли я вообще молчу...
О! Можно про это подробнее? Мне как-то наоборот показалось, что монстра достаточно быстрая и легкая. Если не сложно - распиши мне в личку, может я что-то не увидел или не знаю?
Stek: А чем плохо ? Вроде монстра заводится на 5,3, так что ни какой разницы.
Разница в том, что можно и нужно использовать методы, доступные в 5.3. В идеале, конечно лучше 5.4, но это не реально на данный момент, имхо. А вот 5.2 хуже чем 5.3 не только фишками, но и производительностью.
foxi: кстати почему она перестала называться темплейт цмс?
Ты не справедлив. Я помню, что вы друг-друга не долюбливаете, но монстра очень сильно (в положительную сторону) отличается от темплейт. В первую очередь, качеством кода.
А называется иначе потому, что абсолютно не совместима с темплейт.
---------- Добавлено 28.12.2012 в 01:26 ----------
foxi: awilum, в ты в своем духе. обсирая других - популярности своему движку ты не прибавишь. а за свой движок ответить не можешь. я тебе еще пару лет назад говорил, и еще раз повторю: задумайся, почему твой бесплатный движок, который ты активно везде пиаришь, так и не приобрел популярности и нафиг никому не нужен. может всетаки наконец признаешь, что чтото с ним не так? ))))
foxi, мне вот awilum не нравится своей заносчивостью, но ты его уже перескакал на пару порядков в этом. и да, темплейт - говно, а вот монстра ничего, намного лучше (хотя бы тем, что поддерживает два типа хранения данных, что я не много где видел).
@alkabond влез с какой-то херней, а теперь все вокруг глупые, а он умный. Только он понял что и как! ))))
@alkabond, прекращай херней заниматься...
egorlyk.ru - старт.
Пусть будет 33wmz...
domowenok.ru - 3500
18 000 руб.
mark2011, parent::aTest(); скорей-всего выдаст ошибку так как идет обращение к статическому методу родительского класса. Метод aTest статическим не является. В данном случае придется использовать $this->aTest();
Да ладно? o_O Хоть бы потестили, для начала, советчики блин...
---------- Добавлено 29.12.2012 в 19:48 ----------
В классе B extends A должна быть внутренняя переменная/массив типа class A, иначе нечего extend-ить (она создаётся $this->ИмяЭтойПеременной =& new A).
Обращение из класса B к свойствам/методам класса-родителя правильно выглядит как $this->ИмяЭтойПеременной->МетодКлассаA.
Тогда никаких проблем с одинаковыми названиями свойств/методов не возникает, и всегда понятно, что откуда вызывается.
Эмм... А зачем путать ТС? Он спрашивает, как расширить класс, а не как использовать другой. Ваш подход идеален для использования моделей в контроллерах, например. Т.е., в тех случаях, когда класс A не зависит от класса B, но использует класс B внутри методов класса A.
Т.С.: по Вашему вопросу ответ простой: $this-> используется только по отношению к данному объекту, в котором используется (в статичных методах вообще не может быть использован), а parent:: в отношении родительского класса (НЕ ОБЪЕКТА!). В результате parent всегда ссылается на родительский класс, а $this на первый метод в иерархии классов вверх по дереву от текущего.
Конечно parent, т.к. this, по сути, обращение к самому себе (рекурсия) ;)
это типа для неопределившихся, которые не решили, файлы им надо или полноценная база? )))
Не, это типа для тех, кто использует нужный функционал в зависимости от ситуации. Я, например, без исключений всегда использую mysql и awilum я доказывал, что mysql обязан быть в движке (правда, я немного другой вариант имел в виду)). Но я так же понимаю, что для сайта-визитки в 10-15 страниц использование базы может быть не оправдано...
многие движки такое имеют. более продвинутые и навороченные конечно же только на mysql, легкие на файлах.
Я пока знаю только 2 движка (монстра и блоголет), которые позволяют использовать либо полноценную базу, либо базу на файлах. Подскажешь еще?
монстра же тяжелая и тормознутая как навороченные движки, а по функционалу гдето в самом начале пути, про юзерфрендли я вообще молчу...
О! Можно про это подробнее? Мне как-то наоборот показалось, что монстра достаточно быстрая и легкая. Если не сложно - распиши мне в личку, может я что-то не увидел или не знаю?
А чем плохо ? Вроде монстра заводится на 5,3, так что ни какой разницы.
Разница в том, что можно и нужно использовать методы, доступные в 5.3. В идеале, конечно лучше 5.4, но это не реально на данный момент, имхо. А вот 5.2 хуже чем 5.3 не только фишками, но и производительностью.
Для информации:
http://php.net/manual/ru/migration53.php
PHP 5.3: обзор
кстати почему она перестала называться темплейт цмс?
Ты не справедлив. Я помню, что вы друг-друга не долюбливаете, но монстра очень сильно (в положительную сторону) отличается от темплейт. В первую очередь, качеством кода.
А называется иначе потому, что абсолютно не совместима с темплейт.
---------- Добавлено 28.12.2012 в 01:26 ----------
awilum, в ты в своем духе. обсирая других - популярности своему движку ты не прибавишь. а за свой движок ответить не можешь. я тебе еще пару лет назад говорил, и еще раз повторю: задумайся, почему твой бесплатный движок, который ты активно везде пиаришь, так и не приобрел популярности и нафиг никому не нужен. может всетаки наконец признаешь, что чтото с ним не так? ))))
foxi, мне вот awilum не нравится своей заносчивостью, но ты его уже перескакал на пару порядков в этом. и да, темплейт - говно, а вот монстра ничего, намного лучше (хотя бы тем, что поддерживает два типа хранения данных, что я не много где видел).
Смотрю, mysql все-таки добавился в монстру? ) Уже можно рассматривать в качестве инструмента, значит.
Код, в целом, приятный. Расстраивает поддержка 5.2, хотя и понимаю, что необходима для популяризации.
Так же расстраивает наличие html-кода в ядре движка (/monstra/engine/core.php, например).
В остальном - вроде не плохо, надо глубже поковырять. Но о популярности движка говорить рано, имхо.