![]() |
wrapper Klass в PHP
привет! Помогите написать так называемый wrapper Klass который можно написат с помощью функции overload()
это понятие помойму из C++ но поскольку я им не владею сказать с увереностью не могу. ну примерно смысл в том что мне будет достаточно работать с этим классом вместо того чтобы мучатся с набором классов. Вы скажете делай extends (inheritance) блин не помню как это слово по русски. но это сдеь не подойдет по смыслу мож кто знает как это сделать? |
a? extend по русски это наследование... а что ты от мне хочешь, я так и не понял
|
хмм да это не легко понять.. это вобще мне helldomain про это рассказал да вот не дорассказал.
короче пишу движок для странички, образовались различные классы. типа error, mysql, upload, vars и т.д. вот как ты правильно подметил хотел я ихз всех наследованием связать. ну скажем error -> mysql -> upload -> view. работать то работало бы, но помсоветовал мне он (а он чувак знающий!) что мол делай wrapper klass. |
Не припомню в своей практике случая, чтобы в PHP нужна была обертка (class wrapper) для всех классов сразу. Что касаемо класса, который можно написать с помощью overload(), то это ф-ия которая добавляет к классу методы set, get и call, и причем тут wrapper не очень понятно.
|
да я вот с этой обёрткой вроде разобрался..
он мне типа тако го чето обьячнял class Wrap { var Mysql var Error var Vars .... } как я понимаю теперь надо подумать как сделать что бы Wrap имел все функци этих классов. типа construction kit он становится... вроде так. може теперь придумаешь? ато у меня в кождом новом скрипте приходится возится с кучкой класов. Добавлено через 1 минуту: или ты всегда наследованием пользуешся, несмотря ни на что? |
RTFM короче.
|
RTFM ??
|
RTFM - Read This Fucking Manual.
Добавлено через 4 минуты: Na samom dele eto ne sowsem wrapper. Eto bolshe t.n. kit class. Klass s funkciyami wishego urownya, sozdajushij sebe wse objekti. A to, chto imelos w widu pod overload() eto i est wrapper chast - reakciya na popitki zapisi/chteniya/wizowa. |
В чем суть наворота?
|
да вот в чём суть то вроде ясно.Сказал бы он мне как замутить этот наворот!! было бы дело!!!
наследственность дествительно не катит я заметил |
shuron
Если я правильно понял, тебе нужно завести один класс, который внутри себя инстанцирует все младшие (читай - более низкого уровня) классы. Затем в этом классе ты создаешь методы, которые могут при своей работе вызывать _несколько_ методов низкоуровневых классов. Т.е. PHP код:
PS: а вообще, найди книжку по паттернам проектирования и почитай - полезно. |
Да что-то в этом роде я и имел в виду... так это тоже можно сделать. спасибо.
но есть в PHP ещё и метода overload и вот с ней можна этот класс сделать удобней ну нутром чую если так хотите.. :)) но не знаю как.. |
а нафига это? :) чтобы круто было?
|
2 Stasik: Щас это модно, понимаешь ;)
|
эх юмаристы...
писанины меньше три метода будет на весь класс и пофиг сколько в нем вложено классов а так как Saruman написал это слишком специально. и немного не то что я хотел.. короче сам докопаюсь если будет работать то нештяк. |
Budet ono rabotat, budet.
|
helldomain
вот и подсказал бы! а-то заварил кашу!!:)) и даже спецы форума в недоумении:)):yees: |
Nu chto ya mogu sdelat, takaya u menya logika jestokaya.
|
да я заметил.. :))
|
Prawda? Zahochetsya paradoksow - zwoni ;-).
P.S. Ya ne blondinka. |
ги ги! да я в курсе что ты не блондинка, и не брюнетка:))
Я в Феврале займусь опять посерьёзнее страничкой и весь мусор, что я напрограмировал буду упорядочивать, и вот тогда "враппер" класс то и понадобится.. вот тогда и буду тебе названивать и Асю загружать вопросами..:biggrin: ночи на пролёт:) Пока набирайся сил, наслаждайся тишиной(перед бурей), можешь даже соскучиться немного...:biggrin: P.S. помойму я понял почему ты был против моей конструкции наследственности. Я ведь на jave "воспитан" а там с extends с разу наследуется и Typ и Code. Тоесть там даже нет этого различия между subtyping и subclassing. Но если думать логически то, например Klass MySQL никак не Subtype класса Error и если я зделаю extends то subtyping будет хилый.. Это примерно то, что ты иммел ввиду тем что, предложаный мной вариант наследственности противоречит OO- концептам? или я намутил уже слишком глубоко? |
E! Primerno tak. Liubaya model doljna bit ne tolko prawilna s tochki zreniya koncepcij, no doljna eshe obladat kakoi-to logikoi. Smisl delat nasledowanie Error->MySQL->Chto_Nit_Eshe, esli MySQL ne ispolzuet error, a Chto_Nit_Eshe ne ispolzuet mysql s errorom???
|
а вот в том то и дело что в моей задумке использовалось бы всё!!!
|
Da, no odna komponenta ne ispolzuet druguju. W tom-to i fokus. Pochitai, dlya chego nujno nasledowanie. Ya ne imeju w widu ispolzowanie konechnim prilojeniem, a ispolzowanie komponent mejdu soboi.
|
Разрешите внести свои два цента в беседу? 8)
Насколько я понял shuronа, ему нужен класс, который мог бы использовать методы и mysql, и error. Так, может, имеет смысл не использовать наследование и не плодить монстров, а просто инстанцировать экземпляры этих классов из того, который в них нуждается? Или даже, если _несколько_ классов нуждаются в доступе к mysql и error, то использовать паттерн singleton и инстанцировать их один раз, а потом работать с одним и тем же объектом из всех классов. Или я где-то в корне неправ? |
Tak ya emu o tom i glagoliu.
|
задумка вобще такая была:
Всё начинается с ошибки... :)) первый класс это error он реагирует на ошибки и в зависимости от вида ошибки решает что с ней делать(сообшить пользователю, послать мне мыло и.т.д) потом MySQL наследует и исплоьзут класс error, например если не смог "конектица" то вызывыешь функцию класса error... на третьм шаге у меня есть уже больше классов которы используют MySQl и естевствено error. Я бы так всё это и сделал если бы не сомневался что есть лучшее решения... потому то на третем уровне и выше некоторые класы в "дереве наследования" мне не используются. Сейчас я так и делаю как вы описали, просто инстанциирую нужные классы... но всёже от error можно и понаследовать остальным классам где ошибки могут возникнуть А в остальном хочу просто понять как это вы там с wrappe'рами или Цитата:
ПРИМЕР ДАЙТЕ.... Добавлено через 2 минуты: да знаю я для чего наследование, читал не раз |
shuron
Путь наименьшего сопротивления 8) Берешь в аттаче файл singleton - это скрипт, реализующий на php данный паттерн. Затем думаешь, какие объекты в твоем дизайне должны существовать в единственном экземпляре. Затем работаешь следующим образом. 1. Сначала инициализируешь singleton: PHP код:
PHP код:
PS: на phpclasses.org есть более новая версия singleton.php, но она значительно переписана и наследуется от PEAR. Зачем это сделано я еще не разбирался, если есть интерес - качай и смотри. Общий принцип должен быть тем же самым. PPS: сходи в книжный магазин и найди книгу Эриха Гаммы "Паттерны проектирования". Прочитай - узнаешь много полезного. |
Цитата:
как-нибудь прочту. Просто всё это легче понять людям которые имеют опыт, я пока не много в своей жизни написал:) А singleton.php разве это ... относится к wrapper'ам? singleton же вроде допускает только чтобы один Обьнкт был сосдан с Класса? |
shuron
А я и не говорил, что относится, я тебе предложил метод решения твоей проблемы. Со своими врапперами сам разбирайся, я пока толком не понял, что вы с хеллом под этим подразумеваете. |
Saruman
угу.. А вобще это тоже потернчик может правда у него и второе название есть "kit " или даже "construction kit" Короче он добавляет дополнительные возможности в класс.. без наследования... ладно в феврвле поговорим года разбурусь.. щас время нет.. |
Ehh Shuron, wremeni kak takowogo net woobsche. Eto fiktiwnaya proizwodnaya funkcii jisni.
|
эхх "х...домаин" :)) планированию поддается с трудом...
|
Daa, h{...}domain zwuchit ochen dwulichno ;-).
|
Почитай вот такую доку.
http://www.phppatterns.com/index.php...leview/28/1/2/ Вроде бы все понятно. Перегрузка операторов вещь всегда полезная. |
домайн!!
:biggrin: Добавлено через 1 минуту: @_is_absent угу это вроде бы то и есть... :)) мучос грациос, лови 5 |
shuron
Ну спасибо. А вообще сначала надо родную доку копать... :) |
Doku kopat ne nado. Ee nado ostorojno liubit, chto-bi ne umirala.
|
Цитата:
PS: Хелл, кончай флудить. Какой пример ты подаешь юзерам. |
RaZEr
да ладно тебе флудить, мы же это... у нас тут интимная обстановка... ;) |
| Часовой пояс GMT +4, время: 04:03. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.