Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вызов конкретной функции из класса, немного про ООП для ламера 
:(
    Опции темы
Sukhof
Дата 12.12.2004, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 18.4.2004
Где: Тюмень

Репутация: 0
Всего: 2



Народ! помогите ламеру. В ООП полный дуб. Суть такая, мне необходимо перейти на использование классов, поэтому собстно и начал осваивать, а то уже замаело по 200 файлов с разными функциями редактировать, хочу все в одно место собрать. Есть вот такой класс
Код

class name
{


function sum(здесь 4 аргумента)

       {
       echo "сдесь производим суммирование из БД и выводим результат ";
       }

function edit(здесь 2 аргумента)
       {
       echo "Здесь редактируем полученные данные из БД";
       }

function add($name) // здесь один
       {// Здесь добавляем
       echo "input type=text name='$name' value=''";
       }

}



соответственно на главной странице есть три ссылки, добавить (?act=add), суммировать (?act=sum) и редакт.(?act=edit)
Вопрос как из этого класса вызвать нужную функцию.

А может я вообще по неправильному пути пошел. В БД есть 46 таблиц соответственно надо с ними выполнять три операции добавлять, изменять и получать. Когда взялся за проект я сделал так каждую операцию разместил по трем разным папкам. Теперь в каждой папке есть по 46 файлов. Знаю, знаю это ламерский ход. Недавно мне дали еще пару таблиц, так я пол дня просидел с добавлением операций для новых таблиц. Решил это дело унифицировать. Мой пропитые мозги подсказали что надо осваивать ООП. Хочу чтоб было так

<td><?выполнятеся нужная операция?></td>//и таких строк в одном файле может доходить до 100

Если я сделаю так то у меня будет 46 файлов в одной папке, а не по трем по 46

--------------------
Не бойся делать то, что не умеешь. Помни Ковчег построил любитель, а Титаник профессионалы.
PM MAIL   Вверх
Mal Hack
Дата 12.12.2004, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата
соответственно на главной странице есть три ссылки, добавить (?act=add), суммировать (?act=sum) и редакт.(?act=edit)
Вопрос как из этого класса вызвать нужную функцию.
+

Код

// описание класса....

$Obj = & new ClassName;

switch( $_GET['act'] )
{
 case 'add' : $Obj -> Add( params... ):
 case 'edit' : $Obj -> Edit( params... ):
 case 'sum' : $Obj -> Sum( params... ):

}

PM ICQ   Вверх
Sukhof
Дата 12.12.2004, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 18.4.2004
Где: Тюмень

Репутация: 0
Всего: 2



чего то я ничего не понял можно поподробнее с коментами
Добавлено @ 14:34
Ой все разобрался просто не знал что такое switch
--------------------
Не бойся делать то, что не умеешь. Помни Ковчег построил любитель, а Титаник профессионалы.
PM MAIL   Вверх
Sukhof
Дата 12.12.2004, 14:41 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 18.4.2004
Где: Тюмень

Репутация: 0
Всего: 2



Но вот отсюда вытекает опять вопрос, допустим выбрали нужную функцию, которая, скажем связалась с БД, (например) просуммировала определенные позиции в таблицах БД и выдало значение. Как теперь это значение красиво и окуратно, без нагромождений вставить в 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 и т.д.

--------------------
Не бойся делать то, что не умеешь. Помни Ковчег построил любитель, а Титаник профессионалы.
PM MAIL   Вверх
Mal Hack
Дата 12.12.2004, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



2 цикла.
верхний - по <tr>, внутренний по <td> и там вставляй значения....
PM ICQ   Вверх
Sukhof
Дата 13.12.2004, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 18.4.2004
Где: Тюмень

Репутация: 0
Всего: 2



Нет с циклами дело не прокатит так как иногда некоторые таблицы в мускуле бывают пустые. Пробовал получается что если мускул не вернул значения то не выводится html таблица.
--------------------
Не бойся делать то, что не умеешь. Помни Ковчег построил любитель, а Титаник профессионалы.
PM MAIL   Вверх
Sukhof
Дата 13.12.2004, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 18.4.2004
Где: Тюмень

Репутация: 0
Всего: 2



Ой понял но все равно это получается весьма громоскло. Может есть другой способ
--------------------
Не бойся делать то, что не умеешь. Помни Ковчег построил любитель, а Титаник профессионалы.
PM MAIL   Вверх
Mal Hack
Дата 13.12.2004, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Вместо switch'a можеш написать eval( "\$Obg -> ".$_GET['act']."();" );
Но это не самый лучший вариант...
Цитата
Ой понял но все равно это получается весьма громоскло. Может есть другой способ

Ну и что? Главное алгоритм правильно продумай.
PM ICQ   Вверх
IZ@TOP
Дата 13.12.2004, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(Mal @ 13.12.2004, 13:34)
eval( "\$Obg -> ".$_GET['act']."();" );

Да, это чревато запросм ввиде:
Цитата
http://example.com/index.php?act=val;implode('', file(__FILE__));print



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Mal Hack
Дата 13.12.2004, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



IZ@TOP да это-то понятно... Я и писал: "Но это не самый лучший вариант..."...
В любом случае входняк надо всегда проверять...
PM ICQ   Вверх
skalex
Дата 14.12.2004, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



Sukhof, если методы в Вашем классе статические (не оперируют с переменными класса), то обращаться к ним следует так:
Код
ClassName::MethodName($args);

И создавать экземпляр класса не требуется.
PM   Вверх
Guest
Дата 14.12.2004, 16:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Так весело, если бы я еще знал о чем это. Попробую объяснить по другому. Структура проекта такая:

/add/file1.inc // в этом файле формы для заполнения
Содержание файла такое
Код

<tr>
<td><input name=1></td>
<td><input name=2></td>
<td><input name=3></td>
</tr>


/edit/file1.inc // в этом файле формы для редактирования
Код

<tr>
<td><input name=1 value='<?edit ('здесь изменяем значения в БД', $name = '1') ?>'></td>
<td><input name=1 value='<?edit ('здесь изменяем значения в БД', $name = '2') ?>'></td>
<td><input name=1 value='<?edit ('здесь изменяем значения в БД', $name = '3') ?>'></td>
</tr>


/sum/file1.inc // в этом файле выводим результат суммирования по различным критериям
Код

<tr>
<td><?echo sum ('выводим суммированное значение из БД'); ?></td>
<td><?echo sum ('выводим суммированное значение из БД'); ?></td>
<td><?echo sum ('выводим суммированное значение из БД'); ?></td>
</tr>


Все это находится в разных папках в разных файлах, т.е. в каждой папке 46 файлов, всего 138 файлов. Естестно здесь пример есть такие файлы где количество полей input переваливает за 200. Что бы внести изменения, сами понимаете сколько надо перелапатить.

Хочу сделать так

/file1.inc //
Содержание файла такое
Код

<tr>
<td><? сюда подставляем нужные теги с нужной функцией изходя из переданных по ссылке значений переменной act т.е. это или add или edit или sum
, а код программы подставил уже нужные функции и теги ?><td>
<td><?сюда подставляем нужные теги с нужной функцией изходя из переданных по ссылке значений переменной act т.е. это или add или edit или sum,
а код программы подставил уже нужные функции и теги ?></td>
<td><? сюда подставляем нужные теги с нужной функцией изходя из переданных по ссылке значений переменной act т.е. это или add или edit или sum
, а код программы подставил уже нужные функции и теги?></td>
</tr>


И будет выглядеть все просто и красиво, изменять легко и вносить новые формы просто
  Вверх
Sukhof
Дата 14.12.2004, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 18.4.2004
Где: Тюмень

Репутация: 0
Всего: 2



Сорри это был я а не гость
Добавлено @ 16:09
Файлы совпадают между собой, т.е. они идентичны, но в каждом файле используются разные функции

Это сообщение отредактировал(а) Sukhof - 14.12.2004, 16:09
--------------------
Не бойся делать то, что не умеешь. Помни Ковчег построил любитель, а Титаник профессионалы.
PM MAIL   Вверх
IZ@TOP
Дата 14.12.2004, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Если эти файлы подключаются внутри обхъекта класса, то следует к ним обращаться так: $this->sum(...):
Код

<tr>
<td><?echo $this->sum ('выводим суммированное значение из БД'); ?></td>
<td><?echo $this->sum ('выводим суммированное значение из БД'); ?></td>
<td><?echo $this->sum ('выводим суммированное значение из БД'); ?></td>
</tr>

Если они подключаются из какого либо другого файла и объект твоего класса создан, то следует обращаться к ним через имя созданного объекта (например $obj = new ClassName;):
Код

<tr>
<td><?echo $obj->sum ('выводим суммированное значение из БД'); ?></td>
<td><?echo $obj->sum ('выводим суммированное значение из БД'); ?></td>
<td><?echo $obj->sum ('выводим суммированное значение из БД'); ?></td>
</tr>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.