Page 1 of 1

Storage

PostPosted: 21 Mar 2016, 07:22
by ArtMares
Версия
0.1

Описание
Основная задача хранение переданных данных а так же возможность получить ранее записанные данные в совершенно разных класса не связанных ни как друг с другом

Исходники
Code:
/**
 * @author  ArtMares (Dmitriy Dergachev)
 * @date    01.03.2016
 */

if(!function_exists('loadStorage')) {
    function &loadStorage() {
        static $storage;
        if(is_null($storage)) $storage = new Storage();
        return $storage;
    }
}

class Storage {
    private $data = array();

    public function __set($name, $value) {
        $this->data[$name] = $value;
    }

    public function __get($name) {
        if($this->__isset($name)) {
            return $this->data[$name];
        }
        return null;
    }

    public function __isset($name) {
        return isset($this->data[$name]);
    }

    public function __unset($name) {
        unset($this->data[$name]);
    }
}

Как использовать
Code:
/** Подключение аддона в проект начиная с версии 0.5.1 */
require_once('qrc://AddonName/Storage.php');

class MainWindow extends QMainWindow {
    private $storage;

    public function __construct() {

        parent::__construct();

        // Загрузка класса Хранилище
        $this->storage = loadStorage();

        $data = array(1, 3, 6, 4);

        // Передаем данные в Хранилище
        $this->storage->data = $data;

        // Получаем данные из Хранилища
        // Если данных с таким именем нет в Хранилище то получим null
        $data = $this->storage->data;

        // Передаем класс в Хранилище для того чтобы в другом классе
        // вызвать его публичный метод
        $this->storage->maniWindow = $this;
    }

    public function sortData() {

        // Получаем данные из Хранилища
        $data = $this->storage->data;

        // Производим сортировку данных и записываем обратно в Хранилище
        $this->storage->data = asort($data);
    }
}

class Page extends QWidget {
    private $storage;

    public function __construct() {
        parent::__construct();

        $this->storage = loadStorage();

        // Получаем данные ранее переданные в Хранилище
        $data = $this->storage->data;

        print_r($data);
        // Array(
        //    [0] => 1
        //    [1] => 3
        //    [2] => 6
        //    [3] => 4
        // )

        // Вызываем метод другого класса
        $this->storage->mainWindow->sortData();

        $data = $this->storage->data;

        print_r($data);
        // Array(
        //    [0] => 1
        //    [1] => 3
        //    [2] => 4
        //    [3] => 6
        // )
    }
}
Установка
Storage_0.1.7z
Архив необходимо скачать и распаковать в директорию addons установленной программы PQBuilder
Пример пути куда необходимо распаковывать архив:
C:\Program FIles (x86)\PQBuilder\addons