У меня есть один основной класс main, который я использую для хранения конфигурации и нескольких объектов. Однако я не могу получить доступ к объектам и переменным в классе, который расширяет main через $this
.
Вот некоторые из моего основного класса:
<?php
class main{
// the configuration vars
public $config = array();
// the current user variables
public $uid; // contains the user ID
public $gid; // contains the group ID
// database variables
public $DB; // contains the connection
public $query_id; // contains the query ID
public $query_count; // how many queries have there been?
// cache variables
public $cache;
// start up functions
public function startup(){
// first, set up the caching
if(function_exists('memcache_connect') AND $this->config['use_memcache'] == true){
// start up memcache
require_once('memcache.class.php');
$this->cache = Cache::getInstance();
}
// now, set up the DB
$this->connectToDatabase();
// now, set up the user session
$this->setUserSession();
// are we logged in? If so, update our location
if($this->uid > 0){
// update location
$this->updateUserSession();
}
}
Вот пример другого класса
<?php
class user extends main{
public function viewProfile($uid){
exit($this->config['session_prefix']); // displays nothing
if($this->cache->exists('key')){ // fails
Значение $config настроено правильно, и я могу прочитать его в main
, но не в любом подклассе. Объект $cache->exists просто приводит к Call to a member function exists() on a non-object
.
В index.php классы загружаются и настраиваются. Сначала настраивается класс Main, после чего вызывается функция запуска. Массив конфигурации передается перед вызовом запуска.
Может ли кто-нибудь предложить, как я могу это исправить?