Работа с наследованием

DelphiWorld

Новичок
есть метод в родителе, который задает значение свойству
необходимо в классе-наследнике обновить значения этого свойства, вызывая
$this->getLoadTeams(); в наследнике ничего не происходит

подскажите как быть ))
 

DelphiWorld

Новичок
вызываю в конце parent::__construct();
там в конструкторе задаются свойства этого объекта, безрезультатно
 

DelphiWorld

Новичок
хотя это не столь важно, больше интересует:
есть массив $teams в род. классе
в конструкторе если сделать $this->teams = $this->getLoadTeams();

можно ли в дочернем классе изменить значение $this->teams путем перезагрузки? потому что все свойства там сейчас задаются внутри метода
 

Yuriy_S

-=PHP-Club=-
PHP:
class foo {
	
	protected $data = null;
	
	public function __construct($data = 'foo_data') 
	{
		$this->data = $data;	
	}	
}

class bar extends foo {
	
	public function getFooData() 
	{
		
		return $this->data;
	}
	
	public function setFooData()
	{
		parent::__construct('bar_data');
		return $this->getFooData();	
	}	
	
}

$obj = new bar();
echo $obj->getFooData();
$obj->setFooData();
echo $obj->getFooData();
 

DelphiWorld

Новичок
вот код, чтоб более менее понятно было ))
PHP:
class 1 {
	public $teams = array();
	public __construct()
	{
	$this->getLoadTeams();
	}
	private function loadTeams()
	{
		...
		...
		...
		$this->teams[$i] += $sum;
		.. //Дальше работа с элементами массива $teams
		
	return $this->teams;	
	}
	public function getLoadTeams()
	{
		return $this->loadTeams();
	}
}
class 2 extends 1 {
	private function use1($id,$t1,$t2)
	{
		...
		...
		...
		//тут нужно перезагрузить свойство из parent:: , а именно $teams путем вызова getLoadTeams() и обновить эту переменную
	}
}
 

Yuriy_S

-=PHP-Club=-
Adelf
я так никогда не делаю:) на основе его слов написал=)
 

Yuriy_S

-=PHP-Club=-
DelphiWorld
Это код??? Ты что, издеваешься?
Не удивляюсь, почему у тебя ничего не работает...
Я тебе привел пример кода, что в нем непонятного? берешь вместо вызова parent::__construct('some data'); - вызываешь твой метод getLoadTeams и передаешь ему данные в качестве аргумента.
 

DelphiWorld

Новичок
DelphiWorld
Это код??? Ты что, издеваешься?
Не удивляюсь, почему у тебя ничего не работает...
Я тебе привел пример кода, что в нем непонятного? берешь вместо вызова parent::__construct('some data'); - вызываешь твой метод getLoadTeams и передаешь ему данные в качестве аргумента.
не буду спорить с "гуру", но у меня все работает ) какие данные? там ничего не нужно передавать в аргументе, все в функции выполняется, нужно просто обновить переменную, пересчитать по сути.. да и что собственно тебе не нравится в моем коде?
 

Yuriy_S

-=PHP-Club=-
class 1, class 2 - какие 1,2? Ты в коде такое где-нибудь видел? для конструктора отсутствует ключевое слово function. Это у тебя какой-то псевдокод больше.
 

DelphiWorld

Новичок
class 1, class 2 - какие 1,2? Ты в коде такое где-нибудь видел? для конструктора отсутствует ключевое слово function. Это у тебя какой-то псевдокод больше.
это не копипаст,а быстрый наброс, если тебе лучше будет смотреть class User {} & class Users_Acrions{} , то оно так и есть, в конструкторе слово пропустил, но блин... это мелочи, ппц )
 

DelphiWorld

Новичок
так, никто не подсказывает. автору советую всё же прочитать те 5-10 страниц книги где рассказывается про ооп.
http://www.php.net/manual/ru/language.oop5.php
http://php.net/manual/ru/language.oop5.visibility.php
я работаю с двумя хайлоад-проектами в 50000+ хостов в сутки и ты действительно думаешь, что я оставляю синтаксические ошибки, без которых в принципе класс не загрузится?
 

Adelf

Administrator
Команда форума
я работаю с двумя хайлоад-проектами в 50000+ хостов в сутки и ты действительно думаешь, что я оставляю синтаксические ошибки, без которых в принципе класс не загрузится?
Ты можешь быть джуниором в команде, работающей над данными проектами. Не надо понты кидать, когда тебе помочь хотят. Видно, что у тебя нет понимания ООП. Потому что любому. знающему основы данная задача не отняла бы даже сколько-нибудь времени.

PHP:
//тут нужно перезагрузить свойство из parent:: , а именно $teams путем вызова getLoadTeams() и обновить эту переменную
не пробовал $this->getLoadTeams();?
 

AmdY

Пью пиво
Команда форума
DelphiWorld
да, конечно, ты это прекрасно продемонстрировал.

Сказать спасибо гордость не позволила? код то в примере поправил изменив private на public function getLoadTeams.
 

DelphiWorld

Новичок
Ты можешь быть джуниором в команде, работающей над данными проектами. Не надо понты кидать, когда тебе помочь хотят. Видно, что у тебя нет понимания ООП. Потому что любому. знающему основы данная задача не отняла бы даже сколько-нибудь времени.

PHP:
//тут нужно перезагрузить свойство из parent:: , а именно $teams путем вызова getLoadTeams() и обновить эту переменную
не пробовал $this->getLoadTeams();?
$this->getLoadTeams(); описано в самом начале
пробовал, бестолку... да и наследование не для данной задачи, перевел это на паттерн регистри, все впорядке =) P.S. тебе тоже "Видно, что у тебя нет понимания ООП. Потому что любому. знающему основы данная задача не отняла бы даже сколько-нибудь времени." так что "Не надо понты кидать"
 

DelphiWorld

Новичок
DelphiWorld
да, конечно, ты это прекрасно продемонстрировал.

Сказать спасибо гордость не позволила? код то в примере поправил изменив private на public function getLoadTeams.
в примере и был public, пример писал для топа, от того и class 1{}, class2{} и т.п., возможны синтаксические ошибки
PHP:
public function getLoadTeams()
    {
        return $this->loadTeams();
    }
я таких ошибок не делаю, да и если бывает то ругается пхп при вызове.. так что за что собственно спасибо? =) никто по сути не ответил на мой вопрос, только холивар начался
 

DelphiWorld

Новичок
Задача решилась путем паттерна регистри:
что-то вроде:
PHP:
Registry::set('user',$user);
class Actions {
private $user;
public function __construct()
{
$this->user = Registry::get('user');
}
}
$actions = new Actions();
 
Сверху