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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов метода класса из функции, не работает в теле функции 
V
    Опции темы
HipJ
  Дата 11.9.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Помогите smile пожалуйста
Использую DBSimple в своем скрипте
Код

require_once "DbSimple/Generic.php";
$DB = DbSimple_Generic::connect("mysql://testbd:12345@localhost/testbd");


если далее использовать этот класс
 
Код

$code = "";
$d_id = 1;
$code = $DB->selectCell(
    'SELECT sdname FROM data WHERE did=?', 
    $d_id
);
echo $code;

то все в порядке

а если все тоже самое, но в функции
Код

function LoadData($d_id){
$code = "";
$code = $DB->selectCell(
    'SELECT data FROM data WHERE did=?', 
    $d_id
);
echo $code;
}

то появляется ошибка 
Notice: Undefined variable: DB in j:\home\testbed2\www\lib\components\livescores.php on line 19

Fatal error: Call to a member function selectCell() on a non-object in j:\home\testbed2\www\lib\components\livescores.php on line 19

объясните почему так происходит.. и что сделать для решения данной проблемы.
PM MAIL   Вверх
IZ@TOP
Дата 11.9.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Патамушта нужно брать переменную $DB из суперглобального массива $GLOBASL, или объявлять ее в начале функции:

Код

global $DB


Добавлено через 34 секунды
Ну, или что еще лучше, использовать паттерн Singletone.


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

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


Эксперт
***


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

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



Или передавать класс в функцию как аргумент.


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


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


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

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



Цитата(mishaSL @  11.9.2007,  16:41 Найти цитируемый пост)
Или передавать класс в функцию как аргумент. 

Изврат.


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

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


Опытный
**


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

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



Лучше ссылку на обьект...
PM MAIL   Вверх
mishaSL
Дата 11.9.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(IZ@TOP @  11.9.2007,  15:50 Найти цитируемый пост)
Изврат. 

Почему же изврат, по мне это куда удобнее чем global $DB. Но это кому как удобнее. 
Оооо... только сейчас заметил, что ошибся в попыхах... ссори не класс конечно же передавать, а объект.

Цитата(Acer @  11.9.2007,  15:51 Найти цитируемый пост)
Лучше ссылку на обьект... 

В PHP5 все объекты по умолчанию передаются по ссылке, в PHP4 конечно надо указать &



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

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



Цитата(mishaSL @  11.9.2007,  16:45 Найти цитируемый пост)
Почему же изврат, по мне это куда удобнее чем global $DB. Но это кому как удобнее. Оооо... только сейчас заметил, что ошибся в попыхах... ссори не класс конечно же передавать, а объект.


Достинство твоего подхода будет только тогда, когда функция должна обращаться к методам какого-то определенного объекта (например, есть несколько подключений к разным базам данных). Если же мы обращаемся к глобальному объекту, то лучше использовать global

PM MAIL ICQ   Вверх
mishaSL
Дата 11.9.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(ewolf @  11.9.2007,  18:34 Найти цитируемый пост)
то лучше использовать global

Цитата(mishaSL @  11.9.2007,  16:45 Найти цитируемый пост)
Но это кому как удобнее.


Просто я недолюбливаю использование global в принципе.



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


Опытный
**


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

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



а лучше упаковать в класс и $this->db smile
PM MAIL ICQ   Вверх
HipJ
Дата 11.9.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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


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

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