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 :: работа $this через Namespace

 PHP.SU

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


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

> Описание: работает не так, как я ожидал
Gamer-X
Отправлено: 29 Марта, 2014 - 21:03:31
Post Id



Новичок


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


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




Только начал осваивать нэймспейсы, долго пытался вообще их "запустить", и вот какая у меня проблема сейчас:

основной класс
PHP:
скопировать код в буфер обмена
  1. class Module{
  2. function myFunc($data){
  3. //среди прочего
  4. Users\_deleteModule::deleteTable($data);
  5. }
  6. }


вызываемый класс
PHP:
скопировать код в буфер обмена
  1. namespace Users
  2. class _deleteModule{
  3. function deleteTable($data){
  4. //среди прочего
  5. $this->deleteTableComponent($data);
  6. }
  7. }


и вот ошибка:
Fatal error: Call to undefined method Module::deleteTableComponent() in ....
причем тут Module::, когда надо чтобы вызывался $this у _deleteModule?
 
 Top
caballero
Отправлено: 29 Марта, 2014 - 21:38:26
Post Id


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


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


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




неправильно функцию вызываешь поставь слеш вначале составного имени.

А $this там вообще ни причем.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Gamer-X
Отправлено: 29 Марта, 2014 - 22:20:55
Post Id



Новичок


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


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




не имеет значения, и со слешем та же проблема
 
 Top
OrmaJever Модератор
Отправлено: 29 Марта, 2014 - 22:26:14
Post Id



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


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


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




а может проблема в том что метода deleteTableComponent нету в классе _deleteModule ? Однако Такой вариант вы не рассматривали? Однако


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Gamer-X
Отправлено: 29 Марта, 2014 - 22:31:12
Post Id



Новичок


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


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




метод есть, я проверил, не ошибся ли в написании
кстати, всё, что до вызова $this'ом внутри метода deleteTable - отработало
 
 Top
caballero
Отправлено: 29 Марта, 2014 - 22:42:57
Post Id


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


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


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




так ты же вызываешь метод как статический
какое $this в таком случае


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Gamer-X
Отправлено: 30 Марта, 2014 - 13:52:43
Post Id



Новичок


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


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




действительно, self:: помогло
но почему он у меня static, если я этого не указывал?
 
 Top
caballero
Отправлено: 30 Марта, 2014 - 18:27:46
Post Id


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


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


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




оно не static

то ты обращаешся к нему как к статическому

наоборот надо вызывать как обычную функцию и использовать $this


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Gamer-X
Отправлено: 13 Апреля, 2014 - 19:35:17
Post Id



Новичок


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


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




Чтобы не создавать тему, спрошу здесь же. Раньше все работало, но после переноса папки с классами в другое место, у меня один и тот же класс в разных местах и работает и нет:
в одном месте работает без проблем, в другом говорит, что класса Articles\dbConnect нет. Как решить?

Класс выглядит примерно так:
namespace Articles{
class createData{
function myFunc(){
//среди прочего
dbConnect::query();
}
}
}
 
 Top
Gamer-X
Отправлено: 14 Апреля, 2014 - 14:41:11
Post Id



Новичок


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


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




Решено путем указания глобального неймспейса:
\dbConnect::query();
 
 Top
caballero
Отправлено: 14 Апреля, 2014 - 14:43:47
Post Id


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


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


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




его всегда надо указывать


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 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