У меня есть следующая настройка.
index.php
require_once "common.php"; ... common.php
  ... $obj = new MyClass; require_once "config.php" ... 
config.php
  ... require_once "settings.php"; ... 
settings.php
  $obj->dostuff = true; ... 
Когда я открываю index.php, я получаю: Строгие стандарты: создание объекта по умолчанию из пустого значения в settings.php на 3
  Если я ставлю $obj->dostuff = true;  внутри config.php он не выводит сообщение об ошибке. 
Может кто-нибудь объяснить, почему я получаю эту ошибку? Я не спрашиваю, как это исправить, просто поймите, почему.
EDIT: У меня плохо, у меня было 2 файла config.php для каждой части сайта, и я только что изменил что-то в одном из них, оставив старый заказ в другом, теперь он отлично работает после того, как все загрузится в правильном порядке.
Если $ obj означает глобальный доступ к системе, вы можете использовать шаблон singleton для доступа из любого места:
 class MyClass { protected static $_instance; static function getInstance() { if (null === self::$_instance) { self::$_instance = new self(); } return self::$_instance; } } 
Затем вы можете создать свои методы в этом классе. Чтобы получить сам объект, просто вызовите:
 $obj = MyClass::getInstance(); 
Кроме того, если вы просто хотите вызвать один из своих методов, но нет необходимости возвращать что-либо:
 MyClass::getInstance()->objectMethod(); 
Я считаю, что это очень эффективный способ организовать интегральные одноэлементные системные операции.
На практике мой проект использует это для получения конфигурации из любой точки системы:
 class syConfig { protected static $_instance; private $_config; static function getInstance() { if (null === self::$_instance) { self::$_instance = new self(); } return self::$_instance; } public function load($xmlString) { $xml = simplexml_load_string($xmlString); $this->_config = $xml; } public function getConfig() { return $this->_config; } } 
Это выглядит проблемой. В settings.php $ obj недоступен. PHP создает новый из стандартного класса и дает вам предупреждение. Вы можете подтвердить это, поставив
 echo get_class($obj); 
в ваши settings.php, сразу после строки, которая создает ошибку. Если это эхо «StdClass», то это так.
Вы уверены, что $ obj не создается внутри функции / метода?