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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача значений функции, как лучше 
:(
    Опции темы
Gold Dragon
  Дата 3.8.2005, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Мне нужно использовать в функции достаточное количество внешних данных.

Как мне это лучше сделать:
1. передавать значения в функцию? (есть ли ограничения на количество передаваемых переменных?)
2. создать массив, в который загонять переменные по необходимости и передавать одну переменную-массив?
3. объявлять и использовать в самой функции глобаньные переменные?
4. иное?

подскажите как лучше и правильнее.


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 3.8.2005, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Я в таких случаях выбираю просто.
1. Предположим есть шаблон отображения информации о файле. Т.е. информация из одной темы и я передаю один массив.
2. Если информация разнородная, к примеру в классе для работы с Базой, я отправляю сами переменные, чтобы в функции можно было лучше понять что и где, да и не генерировать лишний раз не нужгный массив.
3.
Цитата(Red @ 3.8.2005, 13:37)
объявлять и использовать в самой функции глобаньные переменные?

Неа.. Использовал только для объектов и то сейчас перешел к 1 объекту.


Цитата(Red @ 3.8.2005, 13:37)
4. иное?

http://php.rinet.ru/manual/ru/function.func-get-args.php
PM ICQ   Вверх
Irokez
Дата 3.8.2005, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



смотря какие данные, если например конфиги, то можно передать путь к файлу с конфигами
PM   Вверх
Gold Dragon
Дата 3.8.2005, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Мне тогда лучше класс сделать?
вот пример, все данные строковые. Вообще, это данные для отображения в контексте
Код

function content_ind($total_kabak, $total_comment, $lim_comment, $ok2, $ok1, $ses, $korot, $left)
{

....

}

4-й вариант - всё равно передавать нужно много, а писать такую длинную строку не хочется
Добавлено @ 14:37

в других функциях данных ещё больше... Это в основном окончания к словам, например, "1 заведение", 2 заведения, т.е. в зависимости от результата. И таких данных много


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 3.8.2005, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



массив.
Добавлено @ 14:48
Или: http://php.rinet.ru/manual/ru/function.func-get-args.php
PM ICQ   Вверх
Gold Dragon
Дата 3.8.2005, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



это не совсем то, мне нужны переменные, функции не войдут
Код

function content_ind($total_kabak, $total_comment, $lim_comment, $ok2, $ok1.....){
return <<<EOF
<div align="center">
....
<p>На сегодня в базе данных: {$total_kabak} {$ok2}<br>
Отзывов: {$total_comment} на {$lim_comment} заведени{$ok1}
....
</div>
EOF;
}




--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 3.8.2005, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Red Dragon применяя ту функцию ты получишь массив из аргуметов, не прописывая их в ().
Да, это не очень удобно, но не заменимо при динамическом кол-ве параметром. В противном случае - ассоциативный массив.
PM ICQ   Вверх
Gold Dragon
Дата 3.8.2005, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(Mal @ 3.8.2005, 15:48)
В противном случае - ассоциативный массив.

наверное в данном случае это лучший вариант


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 27.6.2007, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



в общем поднимаю тему, опять актуальна.

Сейчас я передаю в функции исключительно один массим, да и вообще у меня отдельные переменные свидины до минимума. Мне так удобнее обрабатывать. НО(!)

сейчас есть глобальные переменные, ну например что-то такое
$baza = new CDatabase(_DB, _HOST, _USER , _PASW);

вопрос: как лучше?
function qq($baza){
//.....
}
или 
function qq(){
    GLOBAL $baza;
//.....
}

приветствуется обоснование, опыт, предпочтения


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
mishaSL
Дата 27.6.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 19
Всего: 54



Gold Dragon, лично я предпочитаю и считаю правильным так:
Код

$class = new MyClass();

function test1(& $class) {
}




--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
WolfON
Дата 27.6.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mishaSL,в php5 нет нужды ставить & - все и так передается по ссылке 
PM MAIL ICQ   Вверх
sTa1kEr
Дата 27.6.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



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

class SomeAPI
{
   public $class;
   static private $_instance;
   static public function Instance()
   {
      if (self::$_instance === null)
      {
         self::$_instance = new SomeAPI();
      }
      return self::$_instance;
   }
   private function __construct()
   {
      $this->class = new stdClass();
   }
}

function test()
{
   $class = SomeAPI::Instance()->class;
   var_dump($class);
}

Цитата(WolfON @  27.6.2007,  14:18 Найти цитируемый пост)
mishaSL,в php5 нет нужды ставить & - все и так передается по ссылке  

Не все, только объекты и ресурсы.

PM MAIL   Вверх
Daevaorn
Дата 27.6.2007, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: нет
Всего: 70



Цитата(Gold Dragon @  27.6.2007,  13:52 Найти цитируемый пост)
вопрос: как лучше?function qq($baza){//.....}или function qq(){    GLOBAL $baza;//.....}

на самом деле эти записи абсолютно разные по лигике. и точек пересечения мало.
но первый способ универсальней конечно и перекрывает второй.
PM MAIL WWW   Вверх
-=Ustas=-
Дата 28.6.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

Репутация: 32
Всего: 69



Gold Dragon, с инверсией зависимостей между классами знаком?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Gold Dragon
Дата 28.6.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(-=Ustas=- @  28.6.2007,  08:54 Найти цитируемый пост)
Gold Dragon, с инверсией зависимостей между классами знаком?
я вообще с классами не дружу. Сколько раз пытался строить проекты, не выходит.. Использую только отдельные функции. Пользуюсь только готовыми классами, типа работа с почтой, с базой и т.п.



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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