[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Получение объектов через наследование
webtask.pro
Доброго времени суток. Может кто подсказать как правильно реализовать данное решение?

{файл config.php - подключается при запросе к любой странице}
$smarty = new Smarty;
$smarty->template_dir = './templates/';
$smarty->compile_dir = 'cache';
.....

$config = new stdClass();
$config->pagetype = ["topmenu"=>"Меню","page"=>"Страница"];
$config->yesno = ["Y"=>"Да","N"=>"Нет"];
....

class EngineClass{
public function __construct() {
????
}
...
список методов в которых надо обращаться к объекту $smarty
}

$e = new EngineClass();
{/конец файла}


{файл pages.php - запрос страницы}
class SitePages extends EngineClass{
public function __construct() {
???
}
...
список методов в которых надо обращаться к объекту $smarty и $engine
}
$p = new SitePages($e);
{/конец}


Подскажите что надо прописать в конструкторе чтобы в методах можно было обращаться к объектам $smarty и $engine
AllesKlar
передать объект $smarty в конструктор и сохранить его в свойство класса

_____________
[продано копирайтерам]
webtask.pro
а в родительском классе мне его тоже передавать потом в виде аргументов?
$p = new SitePages($e, $smarty);
более элегантного решения не существуе, через self или parent ?

и потом как мне обращаться к объекту engine в дочернем классе?
AllesKlar
webtask.pro
Ты задаешь вопросы из основ ООП.
Возможно, было бы лучше, просто уделить день изучению данной темы? 99% вопросов бы отпали сами сабой, иначе на каждый ответ тут у тебя будет порождаться еще 2 вопроса.

http://php.net/manual/ru/language.oop5.php

А как прочитаешь, тогда уже приходи с вопросами, что было не понятно.


_____________
[продано копирайтерам]
webtask.pro
Странно что умные люди не могут помочь мне именно в моём примере. Думаю заняло бы это от силы минут 5-10, но вместо этого подсказывают где что почитать. Спасибо.
waldicom
Ща тебе расскажут притчу о том, что лучше научить человека рыбачить, чем дать ему рыбу. А может какую-нить другую притчу расскажут. А может и нет.

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
AllesKlar
Цитата (webtask.pro @ 28.03.2018 - 12:31)
Странно что умные люди не могут помочь мне именно в моём примере. Думаю заняло бы это от силы минут 5-10, но вместо этого подсказывают где что почитать. Спасибо.

Ок.
Итак: нет, все наследуемые классы получат все свойства родительского класса, за исключением privat
Это был точный и исчерпывающий ответ на твой вопрос.

Надеюсь, что не возникнет ситуации на подобии:
- а как водить автомобиль?
- включаешь передачу, давишь газ - вперед.
- а какую передачу включать? на ОРТ или на НТВ?
- ясно.. слушай, вон автошкола, отличная, там научат.
- че трудно, вроде умный человек.
- ок: смотри: вот коробка передач, вот рычаг переключения передач, вот педаль газа. Включаешь передачу, давишь газ - вперед.
....
- Я включил передачу и надавил газ, а не едет.
- двигатель заведи!
- ты не говорил....

_____________
[продано копирайтерам]
Игорь_Vasinsky
class SitePages extends EngineClass{
public function __construct() {
???
}
...
список методов в которых надо обращаться к объекту $smarty и $engine
}


а чё ты унсаследовался?

если так и надо - то объект класса EngineClass будет доступен в SitePages как $this-> (но только если ты в SitePages переназначишь какие-либо методы - то ты получишь изменённый EngineClass)

чтобы использовать $smarty внутри SitePages ты можешь и через конструктор передавать, но по мне - я бы добавил метод сеттер в SitePages или EngineClass (я не вижу полной картины) и проперти бы довавил в класс

public $tplEngine; 

public function setTplEngine($tplEngine){
$this->tplEngine = $tplEngine;
}


и использовал бы

$obj = new SitePages();
$obj->tplEngine = $smarty;


Все. теперь $smarty внутри доступен как $this->tplEngine

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
webtask.pro
Спасибо. Буду пробовать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.