Fatal error: Uncaught Error: Call to a member function getProperties() on null in W:\domains\Shop.loc\public\index.php [закрыт]

400
02 сентября 2021, 05:20
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Registry.php

    namespace shop;
      use TSingleton;
    class Registry {

        public  static $properties = [];
        public function setProperty($name, $value){
            self::$properties[$name] = $value;
        }
        public function  getProperty($name){
            if(isset(self::$properties[$name])){
                return self::$proporties[$name];
        }else {
            return null;
        }
        }

        public function getProperties(){
            return self::$properties;
        }
    }

index.php

     require_once dirname(__DIR__) . '/config/init.php';
     new \shop\App();
     var_dump(\shop\App::$app->getProperties());

TSingleton.php

    namespace shop;
    trait TSingletone{
        private static $instance;
        public static function instance(){
            if (self :: $instance === null){
                self::$instance = new self;
            };
            return self::$instance;
        }
    }

params.php

    return [
      'admin_email' => 'admin.com', 
      'shop_name' => 'Shop.loc',
      'pagination' => 3,
      'smtp_login' => 'ddada',
      'smtp_password' => 'adad',

    ];

App.php

    namespace shop;
      class App {
        public static $app;
        public function construct(){
            $query = trim($_SERVER['QUERY_STRING'], '/');
            self::$app = Registry::instance();
            $this -> getParams();
        }
        protected function getParams(){
            $params = require_once CONF . '/params.php';
            if (!empty($params)){
                foreach ($params as $k => $v){
                    self::$app->setProperty($k , $v);
                }
            }
        }
    }
Answer 1

Cделай выполнение через try, а в catch закинь всевозможную отладочную инфу и смотри что не так.

try{
     require_once dirname(__DIR__) . '/config/init.php';
     new \shop\App();
     var_dump(\shop\App::$app->getProperties());
}catch(Error $e){
     var_dump($e,debug_backtrace(),get_included_files());exit;
}

Хотя тут и без дебага невооруженным глазом видно, что App -> getParams() нигде не выполняется, потому что метод App -> construct() - не меджик, и не был вызван нигде в коде!

Answer 2

Перенесите запись use TSingleton; внутрь класса Registry. У Вас не правильный синтаксис использования тейтов.

READ ALSO
Как реализовать ajax запрос к БД?

Как реализовать ajax запрос к БД?

Решил, тренировки ради, написать сервис для сокращения ссылокНа данный момент столкнулся с следующей трудностью:

89
Не приходят push-уведомления на IOS

Не приходят push-уведомления на IOS

Написан функционал для отправки push-уведомлений для IOSС локального сервера уведомления приходят, а с сайта нет

106
Не получается сортировать по дате используя distinct

Не получается сортировать по дате используя distinct

У меня таблица из ссылокМногие повторяются

242
Преобразование class в массив byte []

Преобразование class в массив byte []

При работе через Bluetooth получаю ответ от оборудования по сокету в формате массива byte[] buffer

207