Всем привет, давненько я не писал на форуме Начал потихой читать маны по ООП вот.. Почувствовал себя как в детском садике. Собственно сабж
PHP код:
abstract class ACore {
/// много кода )
public function get_body($easytooltip,$copyright){
$this->get_header($easytooltip);
$this->get_left_bar();
$this->get_contents();
$this->get_footer($copyright);
}
}
PHP код:Как передать переменные $title и $meta_keywords из дочернего класса в родительский абстрактный ?
class main extends ACore {
public $title = "Все о программировании и сайтостроении!";
public $meta_keywords = "программирование, сайтостроение";
public function get_contents(){
/// снова много кода )
}
PHP ООП Передача переменных из дочернего класса в родительский абстрактный
(Ответов: 16, Просмотров: 3451)
- 09.07.2013 09:51
- 09.07.2013 11:15
Описать сразу все в родительском и при наследовании у дочернего все будет.
Спасибо сказали:
cOAPerator(10.07.2013), - 09.07.2013 17:47
- Регистрация: 10.07.2011
- Сообщений: 149
- Репутация: 23
1. В абстрактный класс ты ничего не передашь, а вот в его реализации можешь
2. Переменные ($title и $meta_keywords) должны быть объявлены в абстрактном классе, а не в дочернем. Тогда к ним будет доступ через ссылку на родительский класс.
3. Ты объявляешь "public $title = ..." в классе main. Соответственно эта переменная и доступна в main и дочерних от него (Acore не знает и знать не может об этой переменной).Спасибо сказали:
cOAPerator(10.07.2013), - 10.07.2013 05:24
сделал. работает. НО чето понять не могу, как работает..
сделал вот так:PHP код:abstract class ACore {
protected function get_header($easytooltip){
//добавил это
$title = $this->title;
$meta_description = $this->meta_description;
$meta_keywords = $this->meta_keywords;
include_once ("template/hyperione/meta.php");
include_once ("template/hyperione/header.php");
}
PHP код:но понять не могу, $this->title это ведь ссылка на существующую переменную.. а где она?class main extends ACore {
// и добавил вот это
public $title = "StarNOX.ru - Все о программировании и сайтостроении!";
public $meta_description = "Все о программировании и сайтостроении!";
public $meta_keywords = "программирование, сайтостроение";
}
ПС: чето я гоню)) main то наследует свойства ACore, соответственно теперь в main есть $title = $this->title; потому и работает ) ппц, надо спать больше)
-----------------------------------------------------------
ППС: только я если правильно понимаю, нуно еще добавить protected $title; в начало ACore, чтобы ошибок не было, верно ? или не надо?Последний раз редактировалось cOAPerator; 10.07.2013 в 05:37.
- 10.07.2013 15:18
Назрел еще 1 вопрос. скорее чисто организационный, чем технический, но тоже касаемо ооп.
када писал админку на старом сайте в процедуре, была строка в одном из файлов для личного кабинета header("Location: /"); срабатывала она в случае разлогинивания. Теперь не катит, так как в ООП подходе некоторые классы подгружаются раньше этой строки, соответственно имеет место ошибка.
перенести в другой класс нереально, потому что условие срабатывания в этом файле.
Че делать? Кто что подскажет ? - 10.07.2013 19:09
какая тишина на сайте... аж жутко...
- 10.07.2013 20:15
cOAPerator, не понял. В случае "разлогивания" у Вас происходила переадресация с URL'ов админки в корень сайта? Тогда проверка доступа должна быть организована до вызова методов (например, в конструкторе в родителя).
В общем, переформулируйте вопрос. - 10.07.2013 20:42
- 10.07.2013 20:47
- 10.07.2013 20:55
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Передача переменных в функциях | Web программирование | 3 | 11.01.2013 17:10 |
Требуется помощь с настройкой вывода дочернего элемента в меню Joomla | Joomla | 6 | 12.12.2012 20:50 |
Курс Настройка шаблона WordPress премиум-класса Striking | Дизайн сайтов, графика | 1 | 17.10.2011 01:22 |
Быдлодизайн, как особенность коммерчески успешного продукта эконом класса | Оффтоп и свободные темы | 5 | 17.06.2011 13:42 |