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.SU

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


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

> Описание: Из области ООП
razorg1991
Отправлено: 26 Мая, 2014 - 20:18:51
Post Id


Частый гость


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


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




Может сейчас и ересь написал, изучаю ООП, пытаюсь нацарапать, что-то похожее на CMS Ха-ха по MVC
Нужно решить следующую задачу:

К примеру в контроллере или модели используются часто одни и те же функции (конкретно в моделе выборка из базы, delete, update и т.п.).
Писать в каждой модели данные функции (ок методы Хорошо ) не разумно, по-моему проще их вызывать из другого класса и передать им данные на вход для обработки (ну или как-то по-другому, собственно это и пытаюсь узнать).
Про наследование классов знаю, но это не совсем то что мне нужно в данном случае. В моем случае скорее всего будут по одному базовому классу для контроллеров и моделей соответственно, от которых будут наследоваться все остальные. Описывать в них все общие методы мне бы тоже не хотелось (я понимаю что это снова звучит как ересь, иначе зачем тогда создавать базовые классы, но снова повторюсь суть не в том).
Поясню чего хочу добиться...
Структура моего приложения:
/core
/controllers
/models
/views

В каталоге core будут находиться как раз таки все общие классы с методами и свойствами. Эта папка в последующем при разработке и наполнении станет своего-рода фреймворком (моим), который я в будущем хочу использовать в других проектах.
Остальные папки говорят сами за себя.
Базовый контроллер и базовая модель (т.е. родительские классы) будут как бы уникальными для конкретного проекта, а вот все содержимое core будет неизменно и универсально (возможно иногда дополнятся).

Читал про интерфейсы, но это не то. Что-то похожее __call, но как я понял его можно использовать только после создания объекта, а не в классе.

В общем поделитесь пожалуйста опытом, может кто-то решал подобные задачи или подскажите что-то получше.
 
 Top
Panoptik
Отправлено: 26 Мая, 2014 - 20:54:39
Post Id



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


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


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




по поводу моделей посмотрите в сторону ORM (Doctrine, Propel) вобщем почитайте литературку, реализовывать это возможно не стоит (есть готовые решения) но появятся новые мысли

магический метод __call описывается в классе, но вызывается неявно, когда у объекта пытаются вызвать несуществующий (неописанный в классе) метод

для того чтобы здраво найти решение для реализации базовых контроллера/модели сперва опишите для себя, можно (лучше) здесь функционал, который вы хотите возложить на данные компоненты

дальше по пунктам можно будет давать советы по реализации того или иного случая

а в общем конечно сколько людей столько и мнений и каждый реализовывает эти вещи по своему вкусу


-----
Just do it
 
 Top
razorg1991
Отправлено: 26 Мая, 2014 - 21:09:11
Post Id


Частый гость


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


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




Panoptik пишет:
есть готовые решения


Я вначале вообще хотел использовать yii, начал даже изучать, но потом сделал для себя вывод, что моих знаний еще маловато (много непонятно) да и весь функционал фреймворка мне нужен. Поэтому для лучшего понимания и изучения ООП думаю лучше писать свое, в чем точно разберусь, ну а потом в будущем уже посмотрим, может и Zend осилю Радость

А вообще пока не хочу использовать готовые решения, ни ORM'ы, хочу написать свой велосипед, сейчас для меня будит так понятнее

(Отредактировано автором: 26 Мая, 2014 - 21:29:58)

 
 Top
razorg1991
Отправлено: 27 Мая, 2014 - 20:30:32
Post Id


Частый гость


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


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




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

Только вот как тогда с автолоадером функций быть?
 
 Top
boatswain
Отправлено: 27 Мая, 2014 - 21:46:24
Post Id


Новичок


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


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




сам только учусь, поэтому если я правильно понял вопрос, то почему бы не использовать статические методы? или если нужно будет еще использовать и наследование, то Singletoon?
 
 Top
razorg1991
Отправлено: 27 Мая, 2014 - 22:15:50
Post Id


Частый гость


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


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




boatswain пишет:
то почему бы не использовать статические методы?


Дык статические методы одного класса, я ведь тоже не могу использовать в другом классе.
 
 Top
LIME
Отправлено: 27 Мая, 2014 - 22:21:12
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




кто тебе сказал?
(Добавление)
у статических членов область видимости везде
(Добавление)
boatswain где наследование и где синглтон
если нужны быстрые кеды берите оранжевые

наоборот наследование не сильная сторона синглтона
пока не придумали позднее статическое связывание
 
 Top
boatswain
Отправлено: 28 Мая, 2014 - 10:43:21
Post Id


Новичок


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


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




LIME пишет:
boatswain где наследование и где синглтон
если нужны быстрые кеды берите оранжевые

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

говорю ж, только учусь %). мы на уроке рассматривали синглтон как решение, в случае, когда нужно было использовать наследование класса, но при этом ограничиться только одним экземпляром. Раз Вы говорите, что это не сильная его сторона, то наверное дальше будем изучать что-то еще ;-).
 
 Top
LIME
Отправлено: 28 Мая, 2014 - 11:14:55
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




ну если рассматривать синглтон как пример для изучения наследования то это другое дело
на наследовании становится видно что self:: берется у родителя а не собственный
это и мешает при наследовании синглтон в отличии от static::
 
 Top
razorg1991
Отправлено: 29 Мая, 2014 - 08:33:58
Post Id


Частый гость


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


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




LIME пишет:
кто тебе сказал?
(Добавление)
у статических членов область видимости везде


Ну да Закатив глазки Это я забыл )))
Кстати еще я забыл, что в свойство одного класса можно записать объект другого класса Радость
Кажись я нашел то что хотел Ха-ха
 
 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