Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP, как можно автоматически внедрить метод в класс? / 8 сообщений из 8, страница 1 из 1
06.03.2015, 12:39
    #38897046
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, как можно автоматически внедрить метод в класс?
Есть у меня такой фрагмент кода (приватный метод), который я добавляю в классы:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
private function _store($var, $value=null, $unset=null)
{
  static $store;
  if (!isset($store)) $store = array();
  if (!array_key_exists($var, $store)) $store[$var] = null;
  if (isset($value) || isset($unset)) $store[$var] = $value;
  if (isset($unset)) unset($store[$var]);
  if (!isset($unset)) return $store[$var];
}


Использую его, чтобы приватные данные были видны снаружи, для сохранения использую $this->_store('password','123'), для чтения использую $this->_store('password').
Сейчас этот метод я просто пишу в каждом классе, в котором такое требуется.
Я бы хотел сделать так, чтобы этот метод был автоматически доступен в каждом классе.
Что-то вроде class MyClass1 implements IPrivateStore, только в интерфейсах реализацию не делают. Но синтаксически интерфейс выглядит самым удобным.
Можно конечно создать класс BaseClass, реализовать в нем этот метод и все остальные классы наследовать от него.
Но мне почему-то это не кажется лучшим решением.
Может быть есть другие способы, как этот метод внедрить во все классы?
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
06.03.2015, 12:51
    #38897065
PHP, как можно автоматически внедрить метод в класс?
...
Рейтинг: 0 / 0
06.03.2015, 13:05
    #38897084
kunaksergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, как можно автоматически внедрить метод в класс?
Alibek B.,
Или наследование или делегирование.
...
Рейтинг: 0 / 0
06.03.2015, 13:10
    #38897093
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, как можно автоматически внедрить метод в класс?
авторИспользую его, чтобы приватные данные были видны снаружи,

__get
__set
...
Рейтинг: 0 / 0
06.03.2015, 13:47
    #38897174
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, как можно автоматически внедрить метод в класс?
kunaksergeyИли наследование или делегирование.
А делегирование это как?

ScareCrow , я опечатался, « Использую его, чтобы приватные данные НЕ были видны снаружи ».
Мне нужно скрыть эти данные из дампа (var_dump или print_r).
...
Рейтинг: 0 / 0
06.03.2015, 13:49
    #38897177
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, как можно автоматически внедрить метод в класс?
как то так... http://php.net/manual/ru/language.oop5.traits.php
Любопытно. Похоже на то, что мне нужно.
Я правда пока не разобрался, как этим пользоваться.
...
Рейтинг: 0 / 0
06.03.2015, 14:00
    #38897202
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, как можно автоматически внедрить метод в класс?
как то так... http://php.net/manual/ru/language.oop5.traits.php
Да, самое то.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
trait PrivateStore
{
        private function _store($name, $value=null, $unset=null)
        {
                static $store;
                if (!isset($store)) $store = array();
                if (!array_key_exists($name, $store)) $store[$name] = null;
                if (isset($value) || isset($unset)) $store[$name] = $value;
                if (isset($unset)) unset($store[$name]);
                if (!isset($unset)) return $store[$name];
        }
}

class MyClass
{
        use PrivateStore;
        public $username;
        public function __construct($username, $password)
        {
                $this->username = $username;
                $this->_store('pass', $password);
        }
        public function login()
        {
                $password = $this->_store('pass');
                ...
        }

}
...
Рейтинг: 0 / 0
06.03.2015, 17:31
    #38897495
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP, как можно автоматически внедрить метод в класс?
Alibek B.,
очередной геморой на пустом месте
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP, как можно автоматически внедрить метод в класс? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]