iluhansk/yii2-lazy

implementation pattern design 'lazy load' for components of yii2

Installs: 9

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0

Type:yii2-extension

v1.0.0 2017-04-30 15:08 UTC

This package is not auto-updated.

Last update: 2024-04-23 23:38:20 UTC


README

implementation pattern design "lazy load" for components of yii2

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist iluhansk/yii2-lazy "*"

or add

"iluhansk/yii2-lazy": "*"

to the require section of your composer.json file.

Usage

Add LazyBehavior to target class and define methods corresponding lazy properties:

namespace common\components;

use \yii\base\Component;
use iluhansk\renderer\LazyBehavior;

/**
 * @property int $passengersCount Count of passengers in the car
 */
class Car extends Component {

    public function behaviors() {
        return [
            'lazy' => [
                'class' => LazyBehavior::className()
            ],
        ];
    }

    public function lazy_passengersCount() {
        //some logic here, for example:
        return rand(1,4);
    }

}

And use lazy property in any place:

use common\components\Car;

echo "PassengersCount first call: $o->passengersCount
"; //first use lazy property will call lazy_passengersCount method of object echo "PassengersCount second call: $o->passengersCount
"; //this will return stored value (and not call lazy_passengersCount method again)