Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ООП php функция из другого класса

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Serhio
Отправлено: 27 Августа, 2015 - 06:11:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 194
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Доброго времени суток!

Include ('classA.php');
Include ('classB.php');

Идет вызов: $obj=new сlassB(); $obj->metodclassB(argformetodclassA);

В классе В нужно использовать метод класса А
Можно схематично пример написать/прикинуть как это делается? Как правильно в методе класса В вызвать метод класса А?


Спасибо.
 
 Top
armancho7777777 Супермодератор
Отправлено: 27 Августа, 2015 - 09:41:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Мда...
PHP:
скопировать код в буфер обмена
  1. class A
  2. {
  3.     public function methodA($arg)
  4.     {
  5.         var_dump(__METHOD__, func_get_args());
  6.     }
  7. }
  8.  
  9. class B
  10. {
  11.     private $_classA;
  12.    
  13.     public function __construct()
  14.     {
  15.         $this->_classA = new A();
  16.     }
  17.  
  18.     public function methodB($arg)
  19.     {
  20.         $this->_classA->methodA($arg);
  21.     }
  22. }

(Добавление)
Или...
PHP:
скопировать код в буфер обмена
  1. class A
  2. {
  3.     public function methodA($arg)
  4.     {
  5.         var_dump(__METHOD__, func_get_args());
  6.     }
  7. }
  8.  
  9. class B
  10. {
  11.     private $_classA;
  12.    
  13.     public function __construct(A $classA)
  14.     {
  15.         $this->_classA = $classA;
  16.     }
  17.  
  18.     public function methodB($arg)
  19.     {
  20.         $this->_classA->methodA($arg);
  21.     }
  22. }
  23.  
  24. $obj=new сlassB(new A());
  25. $obj->methodB('argformetodclassA');

(Добавление)
И вообще, для чего Вам это?
Какая стоит задача ?
 
 Top
Panoptik
Отправлено: 27 Августа, 2015 - 12:03:36
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




я думаю все гораздо проще. человек спрашивает о наследовании?

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class A
  3. {
  4.    public function doSmth()
  5.    {
  6.         echo get_class($this) . PHP_EOL;
  7.    }
  8. }
  9.  
  10. class B extends A {}
  11.  
  12. $obj = new B;
  13. $obj->doSmth();
  14. echo '<br>';
  15. $obj = new A;
  16. $obj->doSmth();
  17.  

(Добавление)
или же если речь идет о делегировании с ДИ контейнером, то тут нужно посмотреть на второй пример armancho7777777


-----
Just do it
 
 Top
Serhio
Отправлено: 28 Августа, 2015 - 02:57:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 194
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Доброго времени суток!

Спасибо за ответы, извините за не оперативность.

То Panoptik - Про наследование я прочел и вроде если я правильно его понял это не то что мне нужно.

То armancho7777777 - Спасибо. Очень интресно. Мне кажется это то что мне нужно. Надо мне перечитать про конструкторы, а то не совсем ясно понятны области видимости методов и объектов. Если есть материалы или полезные ссылки буду благодарен. Да это то что мне нужно, все же вот пример что хотел:

classA {

function methoA(){....}

}

$obj = new classA();

classB {

$obj->methodA() // требуется вызвать метод methoA
....

function methoB(){ ....} //какой-то метод
..
}

Я так понял что это решается через конструкторы?

(Отредактировано автором: 28 Августа, 2015 - 03:16:34)

 
 Top
Panoptik
Отправлено: 28 Августа, 2015 - 10:38:58
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




это решается через что угодно, и называется делегирование

https://goo[dot]gl/1spK8W

основная идея хранить в свойстве (члене) одного класса указатель на другой

инициализацию удобнее производить в конструкторе, но можно и в других методах

доступ можно также произвести через геттеры

(Отредактировано автором: 28 Августа, 2015 - 10:46:16)



-----
Just do it
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Августа, 2015 - 12:08:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Но вот нафейхоа создавать экземпляр-хранилище -- я таки не понимаю.
Если таких хранилищ намечается больше одного, то еще ладно.
Но ведь лепят же сразу.

И давайте не будем тут про интерпрайзный подход в команде из 20-100 человек.
Там оно оправдано, т.к. никто не знает в какую сторону завтра зачешется левая пятка манагеров.
И завтра может вдруг понадобиться более одного инстанса.

Кто-нибудь это вообще объясняет новичкам?
Нет. Не объясняет.
Вместо объяснения начинаются бросания словечками типа обзервер, синглтон, паттерн, делегирование..
И вся эта кухня давно превратилась в какое-то сектантское движение.

Мсяч, кароче.
 
 Top
Panoptik
Отправлено: 28 Августа, 2015 - 13:40:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




та пусть понабивает шишек, че ты мешаешь людям заниматься садомазахизмом

тут вот код в посте не могут нормально и понятия не имеют об автолоадере, зато спрашивают о высших материях как-то взаимодействие двух классов

порекомендую для начала почитать это: Мэтт Зандстра Объекты, Шаблоны и Методики
имхо для старта и понятия самое оно. ну и конечно предварительно ознакомиться с разделом
http://php.net/manual/ru/language.oop5.php


-----
Just do it
 
 Top
Serhio
Отправлено: 28 Августа, 2015 - 19:50:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 194
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Panoptik пишет:
та пусть понабивает шишек, че ты мешаешь людям заниматься садомазахизмом

тут вот код в посте не могут нормально и понятия не имеют об автолоадере, зато спрашивают о высших материях как-то взаимодействие двух классов

порекомендую для начала почитать это: Мэтт Зандстра Объекты, Шаблоны и Методики
имхо для старта и понятия самое оно. ну и конечно предварительно ознакомиться с разделом
http://php.net/manual/ru/language.oop5.php



Если бы еще было бы время на садомазахизм, то было бы шикарно)))
Спасибо за ссылочки, если еще кто-то даст инфы, спасибо.
 
 Top
DelphinPRO
Отправлено: 28 Августа, 2015 - 20:29:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




DeepVarvar пишет:
Вместо объяснения начинаются бросания словечками типа обзервер, синглтон, паттерн, делегирование..
И вся эта кухня давно превратилась в какое-то сектантское движение.


Что плохого в том, что человек будет иметь понятие о паттернах программирования?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Serhio
Отправлено: 28 Августа, 2015 - 22:31:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 194
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




Еще народ рекомендовал книгу GoF банды четырех.

(Отредактировано автором: 28 Августа, 2015 - 22:54:10)

 
 Top
caballero
Отправлено: 29 Августа, 2015 - 14:50:40
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Что плохого в том, что человек будет иметь понятие о паттернах программирования?

как минимум ему сначала следовало бы вообще иметь понятие о програмировании.
он в двух классах не ориентируется а ему паттерны впаривают


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Serhio
Отправлено: 29 Августа, 2015 - 17:01:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 194
Дата рег-ции: Март 2012  


Помог: 1 раз(а)




.

(Отредактировано автором: 30 Августа, 2015 - 13:21:48)

 
 Top
armancho7777777 Супермодератор
Отправлено: 30 Августа, 2015 - 03:20:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




caballero пишет:
Цитата:
Что плохого в том, что человек будет иметь понятие о паттернах программирования?

как минимум ему сначала следовало бы вообще иметь понятие о програмировании.
он в двух классах не ориентируется а ему паттерны впаривают

+1
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB