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 :: Ошибка Using $this when not in object context

 PHP.SU

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


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

> Без описания
dot
Отправлено: 04 Января, 2017 - 08:43:01
Post Id


Новичок


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


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




Добрый день только осваиваю программирование на php и столкнулся вот с такой вот проблемой в коде на $request = $this->getRequest(); выдает ошибку Ошибка Using $this when not in object context
Подскажите плиз что я не так делаю ?
Ниже полный код

CODE (htmlphp):
скопировать код в буфер обмена
  1. class PageControllerManager extends PageController {
  2.    
  3.     public function process() {
  4.         try
  5.         {
  6.                 $request = $this->getRequest();
  7.                 $name = $request->getProperty('userName');
  8.                 if(is_null($request->getProperty('submitted')))
  9.                 {
  10.                     $request->addFeedback('Вы не авторизовались в системе');
  11.                     $this->forward('Registration.php');
  12.                 }
  13.                 $this->forward('UserCaller.php');
  14.         }
  15.         catch (Exception $exc)
  16.         {
  17.             echo $exc->getTraceAsString();
  18.         }
  19.  
  20.        
  21.     }
  22.  
  23. }
  24.  
  25.  
  26.  
  27. abstract class PageController {
  28.     private $request;
  29.     function __construct() {
  30.         $request = RequestRegistry::getRequest();
  31.         if(is_null($request))
  32.         {
  33.             $request = new Request();
  34.         }
  35.         $this->request = $request;
  36.     }
  37.    
  38.     abstract function process();
  39.     function forward($resource) {
  40.         include($resource);
  41.         exit(0);
  42.     }
  43.    
  44.     function getRequest()
  45.     {
  46.         return $this->request;
  47.     }
  48. }
  49.  
  50. class RequestRegistry extends Registry{
  51.     private function __construct() {
  52.     }
  53.    
  54.     static function instance(){
  55.         if(!isset(self::instance()))
  56.         {
  57.             self::instance() = new self();
  58.         }
  59.         return self::instance();
  60.     }
  61.    
  62.     protected function get($key) {
  63.         if(isset($this->values[$key]))
  64.         {
  65.             return $this->values[$key];
  66.         }
  67.         return null;
  68.     }
  69.    
  70.     protected function set($key, $value) {
  71.         $this->values[$key] = $value;
  72.     }
  73.    
  74.     static function getRequest()
  75.     {
  76.         return self::instance()->get('request');
  77.     }
  78.    
  79.     static function setRequest(\mycontrollers\Request $request) {
  80.         return self::instance()->set('request', $request);
  81.     }
  82. }
  83.  
  84. abstract class Registry {
  85.     abstract protected function get($key);
  86.     abstract protected function set($key,$value);
  87. }
  88.  

(Отредактировано автором: 04 Января, 2017 - 08:45:23)

 
 Top
Мелкий Супермодератор
Отправлено: 04 Января, 2017 - 10:02:18
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Смотреть надо, откуда вызывается метод.
Метод вызван как статический, а у статических методов $this нет.


-----
PostgreSQL DBA
 
 Top
dot
Отправлено: 04 Января, 2017 - 10:15:15
Post Id


Новичок


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


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




Вызывается так PageControllerManager::process();
находится в index.php
 
 Top
Мелкий Супермодератор
Отправлено: 04 Января, 2017 - 10:42:25
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Ну, собственно.
Замените на создание объекта и вызывайте метод объекта.
Или замените реализацию метода на статический.


-----
PostgreSQL DBA
 
 Top
dot
Отправлено: 04 Января, 2017 - 11:05:38
Post Id


Новичок


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


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




хмм вот так $request = $this::getRequest(); ?? тогда он выдает Notice: Undefined variable:

Fatal error: Class name must be a valid object or a string и ругается на эту строку , скажите это означает что $request пустая переменная ?
 
 Top
Мелкий Супермодератор
Отправлено: 04 Января, 2017 - 11:09:00
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Объект вам нужен, объект.
PHP:
скопировать код в буфер обмена
  1. $Manager = new PageControllerManager;
  2. $Manager->process()


-----
PostgreSQL DBA
 
 Top
dot
Отправлено: 04 Января, 2017 - 11:17:53
Post Id


Новичок


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


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




Мелкий пишет:
Объект вам нужен, объект.
PHP:
скопировать код в буфер обмена
  1. $Manager = new PageControllerManager;
  2. $Manager->process()


Спасибо это помогло , не понятно правда почему, но там тут хоть заработало. Щас буду с другими ошибками разбираться. Спасибо огромное за помощь Улыбка
 
 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