[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Передача в метод ссылки на статичный объект
web-dev
Привет, вот пишу тут сайтец и решил код сделать более ооп-шным, в общем намудрил что-то и не работает. В метод передаётся ссылка на статичный объект и этому объекту через магический метод должны назначаться свойства, но на практике ничего не работает. Посмотрите пожалуйста. Привожу естественно упрощённый пример. Спасибо


class User{
static $obj = NULL;
public function __get($name)
{
return false;
}

public function __set($name, $value)
{
self::$obj->$name = $value; // почему-то не работает
}

static function auth($user){
if(true) // в оригинале тут всякие запросы, проверки и всё такое
{
$user->name = 'John';
$user->auth = true;
return true;
}
}


public function __construct(){
if(!self::auth(self::$obj)) self::$obj->auth=false;
}

static function getdata()
{
if(self::$obj == NULL) self::$obj=new User;
return self::$obj;
}
}


if(USER::getdata()->auth === true) print 'всё ок';
else print 'всё плохо';

print_r(USER::getdata()); // пусто





Спустя 4 минуты, 14 секунд (5.01.2011 - 16:25) ZSH написал(а):
public function __set($name, $value)
{
$this->$name = $value; // почему-то не работает
}

Спустя 5 минут, 10 секунд (5.01.2011 - 16:30) web-dev написал(а):
на результат это не повлияло
USER::getdata() возвращает пустой объект

Спустя 1 день, 5 часов, 49 минут, 58 секунд (6.01.2011 - 22:20) Basili4 написал(а):
$this->name = $value; // почему-то не работает
Вот

Спустя 17 минут, 39 секунд (6.01.2011 - 22:38) linker написал(а):
Basili4
Нет, тут действительно нужно так
$this->$name = $value
Тут сама логика неправильная. Я так понимаю имеется ввиду синглтон, если так, то реализация неправильная.

Спустя 15 часов, 15 минут, 5 секунд (7.01.2011 - 13:53) web-dev написал(а):
Да, имеется.
Короче, в метод auth вообще не надо ничего передавать, а писать в нём self::$obj->имя свойства = значение
и тогда __set будет правильно работать (без всяких $this).

Реализация не не правильная... а авторская cool.gif tongue.gif


Спустя 6 часов, 19 минут, 47 секунд (7.01.2011 - 20:13) linker написал(а):
web-dev
Ну само-собой авторская, кабы почитал как это делается правильно, то авторство бы не изменилось, а вот реализация...

Спустя 3 часа, 23 минуты, 28 секунд (7.01.2011 - 23:36) web-dev написал(а):
Прочитаю, у меня есть книга паттерны и шаблоны программирования


_____________
IT - это такая область, что приходится постоянно бежать вперед, чтобы оставаться на месте.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.