1. Go to this page and download the library: Download romm/configuration-object library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
namespace MyVendor\MyExtensions\Company;
use Romm\ConfigurationObject\ConfigurationObjectInterface;
use Romm\ConfigurationObject\Traits\ConfigurationObject\DefaultConfigurationObjectTrait;
use Romm\ConfigurationObject\Traits\ConfigurationObject\MagicMethodsTrait;
use MyVendor\MyExtensions\Model\Company\Employee;
class Company implements ConfigurationObjectInterface
{
use DefaultConfigurationObjectTrait;
use MagicMethodsTrait;
const CACHE_NAME = 'cache_company';
/**
* @var string
* @validate NotEmpty
*/
protected $name;
/**
* @var \ArrayObject<MyVendor\MyExtensions\Company\Employee>
*/
protected $employees;
/**
* @return ServiceFactory
*/
public static function getConfigurationObjectServices()
{
return ServiceFactory::getInstance()
->attach(ServiceInterface::SERVICE_CACHE)
->setOption(CacheService::OPTION_CACHE_NAME, self::CACHE_NAME)
->attach(ServiceInterface::SERVICE_PARENTS);
}
}
namespace MyVendor\MyExtensions\Company;
use Romm\ConfigurationObject\Service\Items\Parents\ParentsTrait;
use Romm\ConfigurationObject\Traits\ConfigurationObject\MagicMethodsTrait;
class Employee
{
use ParentsTrait;
use MagicMethodsTrait;
/**
* @var string
* @validate NotEmpty
*/
protected $name;
/**
* @var string
* @validate NotEmpty
* @validate Romm.ConfigurationObject:HasValues(values=Male|Female)
*/
protected $gender;
/**
* @var string
* @validate EmailAddress
*/
protected $email;
/**
* Returns the email of the employee.
*
* If the email was not registered, a default one is assigned to
* him, based on its name and its company name.
*
* Example: `John Doe` of the company `My Company` will be assigned
* the default email: `[email protected]`.
*
* @return string
*/
public function getEmail()
{
if (null === $this->email
&& $this->hasParent(Company::class)
) {
$sanitizedEmployeeName = SomeUtility::sanitizeStringForEmail($this->getName());
$company = $this->getParent(Company::class);
$sanitizedCompanyName = SomeUtility::sanitizeStringForEmail($company->getName(), '-');
$this->email = vprintf(
'%s@%s.com',
[$sanitizedEmployeeName, $sanitizedCompanyName]
);
}
return $this->email;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.