Properties: Difference between revisions

From Sunhill Framework Documentation
Rewrite of article
+ explaination of some methods
Line 7: Line 7:
# The property fetches the value from the connected storage
# The property fetches the value from the connected storage
# Optional it formats the output to a human readable form
# Optional it formats the output to a human readable form
The method to call to read a property's value is
$property->getValue():mixed;
Calling this method initiates the algorithm as above.


== Writing a property value ==
== Writing a property value ==
Line 15: Line 20:
# The property passes the value to the storage
# The property passes the value to the storage


The method to write a property's value is
$property->setValue(mixed $value)
Calling this method initiates the algorithm as above.
== setStorage() and getStorage() ==
Due the fact that every property needs a storage to handle the values there are these methods that handle the storage
$property->setStorage(AbstractStorage $storage);
This method sets the active storage for this property. Normally this is done by the property manager.
$property->getStorage(): AbstractStorage;
Returns the current set storage for this property.
== commit() and rollback() ==
As users should not interact with storages the call of
$property->commit();
and
$propery->rollback();
are passed to the storage. The meaning of this methods is to make a change to the value of a property persistent (commit) or revoke (rollback) it.
== Name of property ==
Every property should have a name. The name does not have necessarily be unique.
$property->setName(string $name);
Sets the name of the property to the given name if it is a valid name. Inavlid names are:
* Names that start with an underscore _
* Reserved names like 'object', 'string' or 'id'
* Empty names ('')
 
$property->name(string $name);
Is an alias to ->setName();
$property->forceName(string $name);
Skips the validation of the property name and should normally not be uses. It is uses internally for objects to define internal variables like _uuid.
$property->getName()
Returns the name of the property.
$property->isValidPropertyName(string $test);
Tests if the given name would pass the validation test.
== Ownership of properties ==
A property can be owned by another property.This is useful in records and arrays but also for the [[InfoMarket]]. The statement
$propertyA->owner == $propertyB;
means that propertyA is a part of propertyB. Both can share the same storage or define a storage on their own.
$property->setOwner(AbstractProperty: $owner): AbstractProperty;
Sets the owner for this property. $owner must be a valid property.
$property->getOwner(): ?AbstractProperty
Returns the current set owner (or null if no owner is set) of this property.
$property->getPath(): string;
This method is used for [[InfoMarket]] to identifiy a InfoMarket item. It combines the name of each owning property.
Example:
"grandfather.father.son"
==
<!--
<!--
{{Outdated}}
{{Outdated}}

Revision as of 17:43, 13 September 2024

A property is a logical piece of information. The property class capsulates everything that has to do with type, validation, semantic meaning and access rights. The data itself is retrieved and stored to a storage.

Reading a property value

A typical read process would be:

  1. The property is called to return a value
  2. The property checks if the current user is allowed to read the information
  3. The property fetches the value from the connected storage
  4. Optional it formats the output to a human readable form

The method to call to read a property's value is

$property->getValue():mixed;

Calling this method initiates the algorithm as above.

Writing a property value

A typical write/modify process would be:

  1. The property is called to write/modify a value
  2. The property checks if the current user is allowed to write or modify the information
  3. The property checks if the given value is valid for the type and semantic meaning of the property
  4. The property passes the value to the storage

The method to write a property's value is

$property->setValue(mixed $value)

Calling this method initiates the algorithm as above.

setStorage() and getStorage()

Due the fact that every property needs a storage to handle the values there are these methods that handle the storage

$property->setStorage(AbstractStorage $storage);

This method sets the active storage for this property. Normally this is done by the property manager.

$property->getStorage(): AbstractStorage;

Returns the current set storage for this property.

commit() and rollback()

As users should not interact with storages the call of

$property->commit(); 

and

$propery->rollback();

are passed to the storage. The meaning of this methods is to make a change to the value of a property persistent (commit) or revoke (rollback) it.

Name of property

Every property should have a name. The name does not have necessarily be unique.

$property->setName(string $name);

Sets the name of the property to the given name if it is a valid name. Inavlid names are:

  • Names that start with an underscore _
  • Reserved names like 'object', 'string' or 'id'
  • Empty names ()
$property->name(string $name);

Is an alias to ->setName();

$property->forceName(string $name);

Skips the validation of the property name and should normally not be uses. It is uses internally for objects to define internal variables like _uuid.

$property->getName()

Returns the name of the property.

$property->isValidPropertyName(string $test);

Tests if the given name would pass the validation test.

Ownership of properties

A property can be owned by another property.This is useful in records and arrays but also for the InfoMarket. The statement

$propertyA->owner == $propertyB;

means that propertyA is a part of propertyB. Both can share the same storage or define a storage on their own.

$property->setOwner(AbstractProperty: $owner): AbstractProperty;

Sets the owner for this property. $owner must be a valid property.

$property->getOwner(): ?AbstractProperty

Returns the current set owner (or null if no owner is set) of this property.

$property->getPath(): string;

This method is used for InfoMarket to identifiy a InfoMarket item. It combines the name of each owning property. Example:

"grandfather.father.son"

==