Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Fatal error: Using $this when not in object context

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
SkaN
Отправлено: 10 Июля, 2011 - 19:28:11
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. class MySQL {
  2.         var $server;
  3.         var $login;
  4.         var $password;
  5.         var $db;
  6.  
  7.         function connect($server, $login, $password, $db) {
  8.                 $this->server = $server;
  9.                 $this->login = $login;
  10.                 $this->password = $password;
  11.                 $this->db = $db;
  12.                
  13.                 mysql_connect($server, $login, $password);
  14.                 mysql_select_db($db);
  15.         }
  16. }

Вот такой вот простенький код, с первого взгляда должен работать. Он вызывается этим кодом:
PHP:
скопировать код в буфер обмена
  1. include 'includes/mysql.php';
  2. MySQL::connect('localhost', 'root', '***', 'skan_blog');

Но встроенный дебаггер выдает мне сообщение из заголовка. Что интересно, в отчете об ошибке есть значения всех переменных:
PHP:
скопировать код в буфер обмена
  1. Variables in local scope (#2): $db = 'skan_blog' $login = 'root' $password = '***' $server = 'localhost'

(Добавление)
Если добавить объект на класс и вызвать метод через объект, то не происходит ничего, запрос к базе не посылается, а метод не факт, что вообще выполняется (проверено if'ом):
PHP:
скопировать код в буфер обмена
  1. include 'includes/mysql.php';
  2. $mysql = new MySQL;
  3. $mysql->connect('localhost', 'root', '***', 'skan_blog');
 
 Top
OrmaJever Модератор
Отправлено: 10 Июля, 2011 - 20:23:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




PHP:
скопировать код в буфер обмена
  1. MySQL::connect('localhost', 'root', '***', 'skan_blog');

1) метод который так вызывается должен быть статическим
2) в статических методах недолжно быть переменой $this. Потому что это указатель на объект которого нету при вызове статических методов.
SkaN пишет:
Если добавить объект на класс и вызвать метод через объект, то не происходит ничего, запрос к базе не посылается, а метод не факт, что вообще выполняется (проверено if'ом):

а что должно произойти? Посмотрите метод connect(), в нём нету ни вывода ни return'a, а соединение с базой вы так не увидите Подмигивание


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Июля, 2011 - 20:53:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




self::server = $server; и т.д...
 
 Top
SkaN
Отправлено: 11 Июля, 2011 - 08:18:06
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




DeepVarvar пишет:
self::server = $server;

спасибо) я первый раз работал с классами, еще не очень такие маленькие нюансы понимал
(Добавление)
PHP:
скопировать код в буфер обмена
  1.         function connect($server, $login, $password, $db) {
  2.                 self::server = $server;
  3.                 self::login = $login;


PHP:
скопировать код в буфер обмена
  1. Parse error: syntax error, unexpected '=' in /var/www/skanblog/includes/mysql.php on line 20


20-я строчка это та, которая посередине. там вроде бы все на месте...
 
 Top
SkaN
Отправлено: 11 Июля, 2011 - 11:16:25
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




явно что-то не так во всех присвоениях переменным значений. Потому что эта ошибка показывает на эту строчку и ей подобные.
(Добавление)
OrmaJever пишет:
метод который так вызывается должен быть статическим

до меня наконец-то это дошло. Всем свойствам и методам прописал static, но теперь дебаггер ругается так:
PHP:
скопировать код в буфер обмена
  1. Parse error: syntax error, unexpected T_VAR, expecting T_VARIABLE on line 3

Ругается на эту строчку:
 
 Top
OrmaJever Модератор
Отправлено: 11 Июля, 2011 - 11:42:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




1) не self::server а self::$server
2) static public $server;


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DeepVarvar Супермодератор
Отправлено: 11 Июля, 2011 - 12:18:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




OrmaJever да - я торопился написать ответ - очепятка вышла.
 
 Top
SkaN
Отправлено: 11 Июля, 2011 - 12:19:20
Post Id



Гость


Покинул форум
Сообщений всего: 103
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




спасибо...)
(Добавление)
PHP:
скопировать код в буфер обмена
  1. Parse error: syntax error, unexpected T_VAR, expecting T_VARIABLE on line 3

Ругается на эту строчку:



это осталось по-прежнему.
(Добавление)
убрал везде var и он перестал ругаться на ошибку. Теперь просто не работает)
(Добавление)


эта фигня вообще не нужна, без нее все работает. Это так, если кто еще лоханется, как я

(Отредактировано автором: 11 Июля, 2011 - 12:25:05)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB