includes/Features/IFeature.php
<?php
namespace MobileFrontend\Features;
/**
* Represents single mobile feature
*
* @package MobileFrontend\Features
* @codeCoverageIgnore
*/
interface IFeature {
/**
* Beta mode defined in config
*/
public const CONFIG_BETA = 'beta';
/**
* Stable mode defined in config
*/
public const CONFIG_STABLE = 'base';
/**
* Get the feature id
* Used as a identifier in forms, database etc. Should be unique
*
* @return string
*/
public function getId();
/**
* Get the feature group
* @return string
*/
public function getGroup();
/**
* Serialise the feature as a string so that the feature manager can perform array_diff
* and array_intersect on results and identify where features are available and where they are not.
* This should return the value of getId.
* @return string
*/
public function __toString();
/**
* Check feature availability in given user mode ( base, beta, alpha etc )
* @param IUserMode $mode UserMode
* @return bool
*/
public function isAvailable( IUserMode $mode );
/**
* The feature name defined as a translation tag
* ex: mobile-frontend-mobile-option-MFConfigFlag
* @return string
*/
public function getNameKey();
/**
* The feature name defined as a translation tag,
* ex: mobile-frontend-mobile-option-MFConfigFlag-description
* @return string
*/
public function getDescriptionKey();
}