2015-07-15 5 views
0

У меня есть 3 файла:Возвращаемый объект класса из функции класса?

main.php (весь код сайта) AccountHandler.class.php (ручки вход/выход из системы/получить согла деталь) User.class.php (Plain объектов, методы получения и установки для общие пользовательские черты)

В функции «login» в AccountHandler он проверяет правильность пароля и возвращает данные в файле для учетной записи. Затем я хочу создать экземпляр объекта «Пользователь» и заполнить его этими данными, возвращая указанный объект из функции.

Однако, с другой стороны, в main.php, где функция изначально была вызвана, мне нужно распознать объект «Пользователь» и получить доступ к значениям.

Как я могу добавить файл класса пользователя в BOTH класс AccountHandler И main.php, чтобы они могли использовать класс «Пользователь»?

Имеет ли смысл это?

class User 
{ 

private $email; 
private $username; 
private $role; 

public function __construct($email, $username, $role) 
{ 
    $this->setUsername($username); 
    $this->setEmail($email); 
    $this->setRole($role); 
} 

public function getEmail(){ 
    return $this->email; 
} 

public function setEmail($email){ 
    $this->email = $email; 
} 

public function getUsername(){ 
    return $this->username; 
} 

public function setUsername($username){ 
    $this->username = $username; 
} 

public function getRole(){ 
    return $this->role; 
} 

public function setRole($role){ 
    $this->role = $role; 
} 


} 
+0

Не уверен, что я понял это четко, но я бы использовал 'require_once (« user_class.php »)' внутри самого верхнего (предположим, что вы добавляете это в 'main.php', который также импортирует файл' account-handler'). Это должно быть wok – Kamehameha

+0

Вы создаете экземпляр класса User в функции класса AccountHandler и возвращаете объект User. И вы вызываете функцию AccountHandler из main.php. Если это так, просто назначьте возвращаемый объект переменной. – frz3993

ответ

0

Создав объект ресурсов, вы можете передать объекты по ссылке.

Вот пример кода.

main.php

$resources = new stdClass; 
$account = new account($resources); 
$account->checkAccount(); 
if(isset($resources->user)){ 
    var_dump($resources->user); 
} 

класс Account

class account{ 

    private $resources; 
    private $loginSuccess = false; 

    public function __construct($resources){ 
    $this->resources = $resources; 
    } 

    public function checkAccount(){ 

    if($this->loginSuccess){ 
     $this->resources->user = new user($email, $username, $role); 
    } 

    } 
} 

Вы также можете найти this полезную

0

Оказывается, я могу использовать автозагрузку:

spl_autoload_register('autoloader'); 

function autoloader($classname) { 
    include_once 'php/includes/' . $classname . '.class.php'; 
} 

наверху моего main.php, создайте экземпляр AccountHandler и используйте в нем класс User и включите его автоматически! Спасибо всем.

+0

Я думал, вы сказали, что хотите получить доступ к пользовательскому классу из main.php и класса учетной записи? Я не понимаю, как этот ответ достигает этого – andrew

+0

Да, это, похоже, достигает того, что я могу создать пользовательские объекты в обоих файлах. – Broak

+0

Они будут отдельными экземплярами пользовательского класса, и вы не сможете делиться свойствами между ними. Это плохой подход. – andrew

Смежные вопросы