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 :: Как получить имя дочернего класса внутри класса-родителя? [2]

 PHP.SU

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


 Страниц (6): « 1 [2] 3 4 5 6 »   

> Без описания
Eazy-E
Отправлено: 29 Мая, 2012 - 08:48:36
Post Id



Гость


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


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




DelphinPRO, можете обосновать свой ответ? в чем хрень? чем плох мой метод?


-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
caballero
Отправлено: 29 Мая, 2012 - 09:59:33
Post Id


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


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


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




Eazy-E пишет:
DelphinPRO, можете обосновать свой ответ? в чем хрень? чем плох мой метод?

Раз он твой ты и должен обосновывать его разумность. А плох он тем что в твоей архитектуре ты не можешь разрулить элементарные вещи. Я апример так и не понял что ты хочешь сделать и зачем сваливать все MVC в с один клас.
Просто сядь и подумай что ты хочешь сделать а ты берешь с инета абстрактные картинки и пытаешся на них что то построить просто заменяя цветные кубики классами.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Eazy-E
Отправлено: 29 Мая, 2012 - 10:28:54
Post Id



Гость


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


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




Вот, что я хочу:
Controller передает в Model переменную содержащую текст. Model добавляет теги к тексту и передает их обратно в Controller. Controller передает переменную в View. Я же хочу расширить функционал Model извне, чтобы можно было, скажем, не только добавлять теги <strong>, но и теги <em> и т.д. и т.п. Если еще короче, я хочу ПЕРЕХВАТИТЬ переменную $text, которая уже обработана в Model, но еще не передана в View.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class MVC {
  4.  
  5. public function Model ($text) {
  6.  
  7. $text = '<strong>' . $text . '</strong>';
  8. return $text;
  9.  
  10. }
  11.  
  12. public function View ($text) {
  13.  
  14. echo $text;
  15.  
  16. }
  17.  
  18. public function Controller () {
  19.  
  20. $text = 'Some text';
  21. $new_text = self::Model($text);
  22. self::View($new_text);
  23.  
  24. }
  25.  
  26. }
  27.  

(Отредактировано автором: 29 Мая, 2012 - 10:29:42)



-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
caballero
Отправлено: 29 Мая, 2012 - 10:35:20
Post Id


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


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


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




Цитата:
Controller передает в Model переменную содержащую текст. Model добавляет теги к тексту и передает их обратно в Controller. Controller передает переменную в View.

к чему такие сложности. view и сам может запросить данные у модели, ему э лучше хнать что надо отрисовывать и какие для этого данные нужны.
Цитата:
я хочу ПЕРЕХВАТИТЬ переменную $text

где перехватить? в каком месте и кем?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Eazy-E
Отправлено: 29 Мая, 2012 - 10:40:21
Post Id



Гость


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


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




Вот еще один вариант:

PHP:
скопировать код в буфер обмена
  1.  
  2. ////////////////////////ЗАКРЫТЫЙ КОД////////////////////////
  3. class MVC {
  4.      
  5.     public function Model ($text) {
  6.      
  7.                 $text = '<strong>' . $text . '</strong>';
  8.                 return $text;
  9.      
  10.     }
  11.      
  12.     public function View ($text) {
  13.      
  14.                 echo $text;
  15.      
  16.     }
  17.      
  18.     public function Controller () {
  19.      
  20.                 $text = 'Some text';
  21.                 $text = self::Model($text);
  22.                 return $text;
  23.                 self::View($text);
  24.      
  25.     }
  26. }
  27.  
  28. MVC::Controller();    
  29. ////////////////////////ЗАКРЫТЫЙ КОД////////////////////////
  30.      
  31. class Child2 extends MVC {
  32.  
  33.         public function Set () {
  34.      
  35.                 $new_text = parent::Controller(); //получаю переменную с текстом
  36.                 $new_text = '<em>' . $new_text . '</em>'; // добавляю еще теги
  37.                 parent::View($new_text); //передаю в MVC::View();
  38.      
  39.     }
  40.      
  41. }
  42.  
  43. Child2::Set();
  44.  

(Отредактировано автором: 29 Мая, 2012 - 11:11:16)



-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Мая, 2012 - 11:10:58
Post Id



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


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


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




Жесть. Не ломайте ООП. Вам все говорят что вы бред пишите.
Я вам говорил выше как создать многофункциональные сущности внутри одной "родительской". Вы же замкнулись на невозможной хренатени:
PHP:
скопировать код в буфер обмена
  1. function a($x) {
  2.   // что-то делаем
  3.  
  4.   // а вот ту вы хотите сделать return
  5.  
  6.   // а вот тут вы хотите принять параметры
  7.  
  8.   // что-то делаем дальше
  9.  
  10. }
 
 Top
Eazy-E
Отправлено: 29 Мая, 2012 - 11:13:10
Post Id



Гость


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


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




DeepVarvar, вероятно для меня плохо доходит Огорчение предоставьте хоть простенький пример. Спасибо.
(Добавление)
DeepVarvar, все, перечитал ваши первые посты, доперло наконец-то до меня Улыбка Благодарю за помощь!

(Отредактировано автором: 29 Мая, 2012 - 11:13:42)



-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
DelphinPRO
Отправлено: 29 Мая, 2012 - 11:52:00
Post Id



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


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


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




расширение функционла классов является одним из постулатов объекто-ориентированого программирования. Допустим у вас есть базовый класс
PHP:
скопировать код в буфер обмена
  1. class Model {
  2.   function makeStrongText($text) {
  3.     return '<strong>'.$text.'</strong>';
  4.   }
  5. }

Исходный код этого класса закрыт от стороннего разработчика, которому понадобилось, чтобы модель умела еще делать курсивный текст. Что он сделает? Унаследует свой класс от базового.
PHP:
скопировать код в буфер обмена
  1. class MyModel extends Model {
  2.   function makeItalicText($text){
  3.     return '<em>'.$text.'</em>';
  4.   }
  5. }

Всё - программист получил новую модель которая умеет делать и жирный и курсивный текст.
Теперь вопрос - как вашей системе использовать MyModel вместо Model?
Ответ прост - пусть этим занимается какой-нибудь менеджер расширений.
В зависимости от внешних условий он будет определять имя класса модели (или пусть об этом думает сторонний программист, если модель вызывается из его же контроллера)
и создавать объект этого класса
PHP:
скопировать код в буфер обмена
  1. $class = getClassNameModel('внешние параметры');
  2. $obj = new $class();

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

=======
на всякий случай задам вопрос еще раз, если вы его не заметили.
Зачем пихать в один класс несколько сущностей? Почему бы не сделать так, как делают все - для контроллера, модели и вида - отдельные классы\файлы?
=======


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
etoYA
Отправлено: 29 Мая, 2012 - 12:51:23
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




На, посмотри. Думаю сразу же поймешь, как работает это все по отдельности. (создай отдельный хост, так как он привязан к корню).

UPD

Или отредактируй в роутере application/controllers/router
Скачать файл: www.rar
Скачан раз: 78

(Отредактировано автором: 29 Мая, 2012 - 12:54:31)

 
 Top
sKaa
Отправлено: 29 Мая, 2012 - 13:27:20
Post Id



Частый посетитель


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


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

[+]



Господи, какой бред ....
 
 Top
etoYA
Отправлено: 29 Мая, 2012 - 14:16:35
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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





sKaa, это ты про меня?)
 
 Top
tato
Отправлено: 29 Мая, 2012 - 14:47:16
Post Id



Посетитель


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


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




Назовем вашего мутанта MVPC модель-представление-плагинатор- контроллер

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

Но Я солидарен с остальными, все это хрень...

======
Картинка

Скачать файл: mvpc.xcf
Скачан раз: 103

(Отредактировано автором: 29 Мая, 2012 - 14:53:40)



-----
просто ?: сложно
 
 Top
Eazy-E
Отправлено: 29 Мая, 2012 - 14:55:57
Post Id



Гость


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


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




да понял я уже, что все это хрень и можно обойтись без костылей Улыбка


-----
Новое всегда пугает — даже того, кто это новое создает.
(RZA)
 
 Top
etoYA
Отправлено: 29 Мая, 2012 - 14:56:39
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




tato, ему нужно просто почитать про роли модели-вьюхи-контроллера, тогда у него сразу же отпадет желание делать плагинаторУлыбка. Ведь, контроллер по сути и есть плагинатор...
(Добавление)
А перехватывать данные можно и во фронт-контроллере

(Отредактировано автором: 29 Мая, 2012 - 14:56:53)

 
 Top
tato
Отправлено: 29 Мая, 2012 - 15:06:12
Post Id



Посетитель


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


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




Наследование наше все, и Ваше кстати тоже.


-----
просто ?: сложно
 
 Top
Страниц (6): « 1 [2] 3 4 5 6 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB