Как воспользоваться ф-цией из параллельного класса?

ayrat9

Новичок
Как воспользоваться ф-цией из другого класса (не родителя)?

Можно ли, находясь в классе А, воспользоваться переменной или функцией класса В? При этом жестко задано условие, что класс В не должен являться родителем класса А.
 

ForJest

- свежая кровь
ayrat9
$this-> B = &new B();
$this-> B-> the_function();
Не наследованием, так агрегированием :)
 

SiMM

Новичок
Дык может у него функции вполне себе статичны? ;)
B::some_function()
Всё же лучше наверно было проблему описать.
 

ayrat9

Новичок
В классе turnir_fpdf мне необходимо воспользоваться переменными из класса vars (штук 15), они все уже прописаны в vars, а в тупую забивать их заново в новом классе неохота. Вот я и справшиваю: можно ли их как-то вызвать (см.условие)?

-~{}~ 11.01.05 21:08:

For_Jest
------------

Щас попробую твой вариант. Он мне сразу пришел на ум, но подумал что это неправильно.
 

SiMM

Новичок
ayrat9, а ты меньше думай. Пришло на ум - пробуй, не работает - разбирайся, не получается - спрашивай. А делать "пришло на ум - спрашивай" - не стоит - времени больше потратишь.
 

ayrat9

Новичок
to Simm
------------

Знаете продолжение поговорки:
"Умные люди учатся на чужих ошибках, ..."?
 

SiMM

Новичок
"... а разумные для этого пользуются поиском в форуме и чтением документации"?
 

ayrat9

Новичок
to ForJest
------------

Не получается
Пробовал (кусок кода с новыми строчками) :

<?php
require ("/home/site/req/df.class");
require ("/home/site/req/vars.class"); // добавленная строка

class Turnir extends DF {

var $B;
var $I;
var $U;
var $my; // добавленная строка

$this->my=&new vars; // добавленная строка

function some_function()
{
echo ($this->my->SOME_STRING."blah-blah-blah"); // добавленная строка
}
...

ошибки такие:
Parse error: parse error, unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in z:\home\site\req\turnir_df.class on line 14

Fatal error: Cannot instantiate non-existent class: turnir in z:\home\site\www\pdf\generate_pdf.html on line 9

-~{}~ 11.01.05 21:50:

строка 14:
$this->my=&new vars;
 

ForJest

- свежая кровь
ayrat9
Поразительные эффекты от моего совета.
Признаться я ничего такого не имел ввиду. Особенно про
T_OLD_FUNCTION - это происки враждебных сил.
---------
Попробуй следующий вариант:
PHP:
//жестоко удалённая строка
function Turnir()//конструктор класса
{//открывающая кавычка
$this->my=&new vars// перемещённая строка
; //точка с запятой внизу точки
}//закрывающая кавычка
 

ForJest

- свежая кровь
А. Ещё раз прошу прощения. В мой постинг закралась всё-таки ошибка. Вместо "кавычка" нужно читать "скобка". Ещё раз приношу свои извинения.
 

ayrat9

Новичок
Честно говоря я не могу понять: шутишь ли ты или действительно помогаешь.

Надеюсь на второе.

Если я правильно понял, то нужно в переменную $my инициализировать класс vars в конструкторе класса Turnir, и потом в любых других ф-циях можно обращаться к заветным переменным?

Правильной ли будет следующая форма обращения?
$this->my->SOME_STRING
 

ForJest

- свежая кровь
ayrat9
Отсылаю вас, уважамемый к документации, чтобы не смущать вас более.
 

ayrat9

Новичок
Не менее уважаемый ForJest. Простите за настойчивость, но
мне нужны эти переменные НЕ при инициализации объекта TURNIR, а в функциях ВНУТРИ класса TURNIR
 

neko

tеam neko
вы чувствуете как звучит? "функция... из параллельного класса"
 

ayrat9

Новичок
Еще раз попытаюсь сформулировать вопрос:

Как, находясь во внутриклассовой функции, можно воспользоваться переменной другого класса(не родителя)?

Насколько я понял необходимо использовать метод агрегации классов. Но мне нужно воспользоваться этой переменной не после объявления объекта, а внутри самого класса.

Спасибо.
------------
ПС: если вы не желаете что-либо объяснять новичку в пхп, так дайте хотя бы правильный линк на нужную статью.
 

Screjet

Новичок
Смотри, как бы правильно звучал твой вопрос:

Как в методе объекта класса использовать свойства другого объекта класса.

далее.

Как я могу использовать это свойство объекта, не создавая объекта класса, а из объявления класса :)


Если прямо. Изучи самые основы ООП. Купи книгу Гради Буч "ООП и ООА" и читай перед сном.
 

ayrat9

Новичок
Свою проблемку я решил. Хотя и не так красиво как задумывал.
Жаль, а ведь я хотел узнать что-то новое для себя. Но здесь эти знания вытягивать клещами приходится.
 

SiMM

Новичок
ayrat9, здесь описание проблемы клещами вытягивать приходится. Нельзя обратиться к свойству класса - нет такого понятия. Есть свойство ОБЪЕКТА, конкретно-взятого экземпляра класса. А для того, чтобы к нему обратиться, его нужно вначале создать.
 
Сверху