# elementor/4.0.4/modules/usage/element-usage-calculator-registry.php

Elementor Website Builder – more than just a page builder, version 4.0.4. 39 lines.

- Page: https://pluginprobe.com/plugins/elementor/4.0.4/code/modules/usage/element-usage-calculator-registry.php
- Raw: https://pluginprobe.com/plugins/elementor/4.0.4/raw/modules/usage/element-usage-calculator-registry.php
- Modified: 2026-02-04T20:46:24+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/elementor/4.0.4/code/modules/usage/element-usage-calculator-registry.php#L10-L20`.

```php
<?php

namespace Elementor\Modules\Usage;

use Elementor\Modules\Usage\Contracts\Element_Usage_Calculator;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class Element_Usage_Calculator_Registry {

	/** @var Element_Usage_Calculator[] */
	private array $calculators = [];

	private ?Element_Usage_Calculator $fallback = null;

	/**
	 * @param Element_Usage_Calculator[] $calculators
	 */
	public function __construct( array $calculators = [] ) {
		$this->calculators = $calculators;
	}

	public function set_fallback( Element_Usage_Calculator $calculator ): void {
		$this->fallback = $calculator;
	}

	public function get_calculator_for( array $element, $element_instance ): ?Element_Usage_Calculator {
		foreach ( $this->calculators as $calculator ) {
			if ( $calculator->can_calculate( $element, $element_instance ) ) {
				return $calculator;
			}
		}

		return $this->fallback;
	}
}

```
