| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > вызов конкретной функции из класса |
| Автор: Sukhof 12.12.2004, 13:20 | ||
Народ! помогите ламеру. В ООП полный дуб. Суть такая, мне необходимо перейти на использование классов, поэтому собстно и начал осваивать, а то уже замаело по 200 файлов с разными функциями редактировать, хочу все в одно место собрать. Есть вот такой класс
соответственно на главной странице есть три ссылки, добавить (?act=add), суммировать (?act=sum) и редакт.(?act=edit) Вопрос как из этого класса вызвать нужную функцию. А может я вообще по неправильному пути пошел. В БД есть 46 таблиц соответственно надо с ними выполнять три операции добавлять, изменять и получать. Когда взялся за проект я сделал так каждую операцию разместил по трем разным папкам. Теперь в каждой папке есть по 46 файлов. Знаю, знаю это ламерский ход. Недавно мне дали еще пару таблиц, так я пол дня просидел с добавлением операций для новых таблиц. Решил это дело унифицировать. Мой пропитые мозги подсказали что надо осваивать ООП. Хочу чтоб было так <td><?выполнятеся нужная операция?></td>//и таких строк в одном файле может доходить до 100 Если я сделаю так то у меня будет 46 файлов в одной папке, а не по трем по 46 |
| Автор: Mal Hack 12.12.2004, 14:25 | ||||
|
| Автор: Sukhof 12.12.2004, 14:29 |
| чего то я ничего не понял можно поподробнее с коментами Добавлено @ 14:34 Ой все разобрался просто не знал что такое switch |
| Автор: Sukhof 12.12.2004, 14:41 |
| Но вот отсюда вытекает опять вопрос, допустим выбрали нужную функцию, которая, скажем связалась с БД, (например) просуммировала определенные позиции в таблицах БД и выдало значение. Как теперь это значение красиво и окуратно, без нагромождений вставить в html код. Скажем вот пример: <table> <tr> <td>Значение 1</td> <td>Значение 2</td> <td>Значение 3</td> </tr> <tr> <td>Значение 4</td> <td>Значение 5</td> <td>Значение 6</td> </tr> </table> Получиться не красиво если в теги TD каждый раз писать switch и т.д. |
| Автор: Mal Hack 12.12.2004, 14:57 |
| 2 цикла. верхний - по <tr>, внутренний по <td> и там вставляй значения.... |
| Автор: Sukhof 13.12.2004, 11:13 |
| Нет с циклами дело не прокатит так как иногда некоторые таблицы в мускуле бывают пустые. Пробовал получается что если мускул не вернул значения то не выводится html таблица. |
| Автор: Sukhof 13.12.2004, 11:39 |
| Ой понял но все равно это получается весьма громоскло. Может есть другой способ |
| Автор: Mal Hack 13.12.2004, 12:34 | ||
| Вместо switch'a можеш написать eval( "\$Obg -> ".$_GET['act']."();" ); Но это не самый лучший вариант...
Ну и что? Главное алгоритм правильно продумай. |
| Автор: IZ@TOP 13.12.2004, 14:35 | ||||
Да, это чревато запросм ввиде:
|
| Автор: Mal Hack 13.12.2004, 14:47 |
| IZ@TOP да это-то понятно... Я и писал: "Но это не самый лучший вариант..."... В любом случае входняк надо всегда проверять... |
| Автор: skalex 14.12.2004, 13:24 | ||
Sukhof, если методы в Вашем классе статические (не оперируют с переменными класса), то обращаться к ним следует так:
И создавать экземпляр класса не требуется. |
| Автор: Guest 14.12.2004, 16:06 | ||||||||
| Так весело, если бы я еще знал о чем это. Попробую объяснить по другому. Структура проекта такая: /add/file1.inc // в этом файле формы для заполнения Содержание файла такое
/edit/file1.inc // в этом файле формы для редактирования
/sum/file1.inc // в этом файле выводим результат суммирования по различным критериям
Все это находится в разных папках в разных файлах, т.е. в каждой папке 46 файлов, всего 138 файлов. Естестно здесь пример есть такие файлы где количество полей input переваливает за 200. Что бы внести изменения, сами понимаете сколько надо перелапатить. Хочу сделать так /file1.inc // Содержание файла такое
И будет выглядеть все просто и красиво, изменять легко и вносить новые формы просто |
| Автор: Sukhof 14.12.2004, 16:08 |
| Сорри это был я а не гость Добавлено @ 16:09 Файлы совпадают между собой, т.е. они идентичны, но в каждом файле используются разные функции |
| Автор: IZ@TOP 14.12.2004, 16:18 | ||||
Если эти файлы подключаются внутри обхъекта класса, то следует к ним обращаться так: $this->sum(...):
Если они подключаются из какого либо другого файла и объект твоего класса создан, то следует обращаться к ним через имя созданного объекта (например $obj = new ClassName;):
|