1. Go to this page and download the library: Download code-foundation/flow-config 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/ */
code-foundation / flow-config example snippets
composer
class User implements CodeFoundation\FlowConfig\Interfaces\EntityIdentifier
{
public function getEntityType(): string
{
return 'user';
}
public function getEntityId(): string
{
return $this->id;
}
}
// Build a read-only config
$baseConfig = new ReadonlyConfig([
'timezone' => 'UTC'
]);
// Build a system config
$systemConfig = new DoctrineConfig($this->getEntityManager());
// Build a entity based config
$entityConfig = new DoctrineEntityConfig($this->getEntityManager());
// Build the cascading configuration objects that tries each of the above in turn.
$cascadeConfig = new CascadeConfig($baseConfig, $systemConfig, $entityConfig);
$systemConfig = new DoctrineConfig($this->getEntityManager(), false);
$entityConfig = new DoctrineEntityConfig($this->getEntityManager(), false);
class MyAccessControlClass implements AccessControlInterface
{
// Set our read-only keys.
private $readOnlyKeys = ['abc123'];
// Set our keys that are restricted and never returned.
private $restrictedKeys = ['xyz987'];
// Set entities that cannot be modified
private $readOnlyEntities = [MyEntityClass::class];
public function canGetKey(string $key, ?EntityIdentity $entity = null): bool
{
// Return whether the key is not in our read-only array.
return \in_array($key, $this->readOnlyKeys) === false;
}
public function getSetKey(string $key, ?EntityIdentity $entity = null): bool
{
// Check whether the key is in our restricted array.
if (\in_array($key, $this->restrictedKeys) === true) {
return false;
}
// Check whether the entity is read only
if ($entity !== null && in_array(\get_class($entity), $this->readOnlyEntities) === true) {
return false;
}
return true;
}
}
$user1 = new User()->setId(999);
$user1 = new User()->setId(1001);
echo $systemConfig->get('timezone'); // UTC
echo $entityConfig->get('timezone'); // UTC
echo $cascadeConfig->getEntityConfigItem('timezone', $user1); // UTC
echo $cascadeConfig->getEntityConfigItem('timezone', $user2); // UTC
// Update the setting for that platform.
$entityConfig->set('timezone', 'Australia/Melbourne');
echo $systemConfig->get('timezone'); // UTC
echo $entityConfig->get('timezone'); // 'Australia/Melbourne'
echo $cascadeConfig->getEntityConfigItem('timezone', $user1); // 'Australia/Melbourne'
echo $cascadeConfig->getEntityConfigItem('timezone', $user2); // 'Australia/Melbourne'
// Update a given users settings
$cascadeConfig->setByEntity($user1, 'timezone', 'Pacific/Auckland');
echo $systemConfig->get('timezone'); // UTC
echo $entityConfig->get('timezone'); // 'Australia/Melbourne'
echo $cascadeConfig->getEntityConfigItem('timezone', $user1); // 'Pacific/Auckland'
echo $cascadeConfig->getEntityConfigItem('timezone', $user2); // 'Australia/Melbourne'
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.