Архив метки: ООП

PHP Хранение временных данных в методах

Проблема: реализация алгоритмов обработки данных требует генерации и дальнейшего использования неких промежуточных данных. Хранение которых требует выделение места в оперативной памяти.  Что, при неаккуратном использовании, может создавать «мусор», засорять память и, в итоге, замедлять работу приложения.

Предлагаемый способ:

В моих приложениях всегда существует некий базовый класс, на основании которого я  создаю остальные классы. В этот базовый у меня скидываются те методы, которые оказываются нужны всем объектам. Даже если в некоторых классах я потом переопределяю метод.

И так в этом базовом классе создаем новое свойство

private $ini = array();

 

Приватное, что бы даже если случайно где-то ошибся и обратился к нему, то в лучшем случае получил бы ошибку.  Название свойства не важно, и почему оно у меня получилось именно ini я не знаю. так получилось.

В деструкторе, конечно, есть строчка

function __destruct() {
unset($this->ini);
}

Теперь как использовать.

class НОВЫЙ_КЛАCС extends БАЗОВЫЙ_КЛАСС

function __destruct() {
    parent::_destruct();
}

Ну и метод, в котором используем:

function methodTwoTwo() {
$this->ini[__FUNCTION__] = 2*2;
return ( $this->ini[__FUNCTION__] );
}

 

function methodTwoSix() {
$this->ini[__FUNCTION__] = 2*6;
return$this->ini[__FUNCTION__);
}

Если бы мы использовали $this->ini в обоих случаях, то в случае вызова метода в методе мы бы получили путаницу, поскольку свойство $this->ini в зоне видимости всех методов класса. Добавляя ключ массива __FUNCTION__ мы используем массив $this->ini раздельно в разных методах, не допуская путаницы данных.

Освобождается память при уничтожении экземпляра объекта автоматическим вызовом __destruct().