Class Alvine
Die Klasse Alvine dient als Basis für die meisten Framework-Klassen und bietet grundlegende Funktionen und Konstante an. Über die APIVERSION kann der Stand der API abgefragt und bei Änderungen der API im Code von abgeleiteten Klassen geprüft werden.
Eindeutige ID
Jede von Alvine abgeleitete Klasse erbt die Methode \Alvine\Core\Alvine::getID(). Damit lässt sich die eindeutige ID des Objekts ermitteln. Die ID ist - falls von der abgeleiteten Klasse nicht anders implementiert eine UUID. (\Alvine\Util\UUID).
DI-Container
Die Klasse enthält einen integrierten DI-Container, der es nicht nur erlaubt Werte über die __set Methode zu speicher, sondern auch Lambdafunktionen. Die Lambdafunktionen können dann wahlweise über den Zugriff auf die Eigenschaft oder als echter Funktionsaufruf aufgerufen werden.
Eigenschaften
// Neue Alvine Basisklasse erstellen class Derived extends \Alvine\Core\Alvine { // ... eigener Code } $container = new Derived(); // Eigenschaften $container->mail = '[email protected]'; $container->passwort_value = 'geheim'; $container->international = 'Iñtërnâtiônàlizætiøn';
Um Exception zu vermeiden, lässt sich mittels der Methode Alvine::propertyExists()
, vorher überprüfen
ob eine Eigenschaft mit dem entstprechenden Namen an das Objekt gehängt wurde. Alternativ kann auch
mit einem try/catch Block gearbeitet werden. Die Methode Alvine::propertyExists()
ist jedoch vorzuziehen.
if($obj->propertyExists('myproperty')) { $value = $obj->myproperty; } try { $value = $obj->myproperty; } catch(Exeption $e) { ... }
Lambdafunktion
// Neue Alvine Basisklasse erstellen class Derived extends \Alvine\Core\Alvine { // ... eigener Code } // Neue Alvine Basisklasse erstellen $container = new Derived(); $container->mail = '[email protected]'; $container->passwort_value = 'geheim'; $container->international = 'Iñtërnâtiônàlizætiøn'; // Lambdafunktionen $container->user = function($obj) { // Objekt ist eine Referenz auf den eigenen Container return $obj->mail; }; $container->addUser = function($obj, $name) { // füge einen Benutzer hinzu..... }; echo $container->user; // Ausgabe: [email protected] // Alternativer Aufruf als Funktion $conatiner->addUser('Mein Name');
Serialisierung
Die Alvine-Klasse implementiert das \Alvine\Core\SerializableImplementation Trait. Von Alvine abgeleitetet Klasse erhalten dadurch eine verbesserte Unterstüzung für die Serialisierung. So wird beim erstellen eines Objektes aus einem serialisierten Datenstrom die Version der Klasse geprüft und bei Abweichungen eine Korrektur-Methode aufgerufen. (Details \Alvine\Core\SerializableImplementation)
- Alvine\Core\Alvine implements Serializable uses Alvine\Core\SerializableImplementation
Direct known subclasses
Alvine\Cache\CacheObject, Alvine\Cache\Probe\Probe, Alvine\Core\System, Alvine\Data\DataQuery, Alvine\Date\Chronology, Alvine\Date\Interval, Alvine\Date\Period, Alvine\Date\Quantity, Alvine\Date\Timezone, Alvine\Date\Timezone\Transition, Alvine\I18n\Locale, Alvine\I18n\Resource\ISO4217, Alvine\Core\AbstractFactory, Alvine\IO\File\Directory, Alvine\IO\File\File, Alvine\IO\Reader, Alvine\IO\Stream, Alvine\IO\Writer, Alvine\Net\Address, Alvine\Net\CIDR, Alvine\Net\CIDR\Prefix, Alvine\Net\Context\Context, Alvine\Net\Context\Options, Alvine\Core\AutoLoader, Alvine\Net\Http\Authentication\Credentials, Alvine\Net\Http\Body, Alvine\Net\Http\Cookie, Alvine\Net\Http\HTTPMessage, Alvine\Net\Http\Util\ChunkedMessageParser, Alvine\Net\Mail\Authentication\CramMD5, Alvine\Net\Mail\Authentication\Login, Alvine\Net\Mail\Authentication\Plain, Alvine\Net\Mail\Mail, Alvine\Net\Mail\MailAddress, Alvine\Core\Component, Alvine\Net\NetworkInterface, Alvine\Net\Resource\URI, Alvine\Net\Session\Nonce, Alvine\Net\Session\Session, Alvine\Net\Socket, Alvine\Net\Util\Port, Alvine\Net\Util\PortMapping, Alvine\Persistence\Clutch, Alvine\Persistence\DataSource, Alvine\Persistence\Find\Index, Alvine\Core\Event\Event, Alvine\Persistence\Find\IndexResponse, Alvine\Persistence\Relation\Field, Alvine\Persistence\Relation\Query, Alvine\Persistence\Relation\Result, Alvine\Persistence\Relation\SQL\DataObject, Alvine\Persistence\Relation\Statement, Alvine\Persistence\SecurityContext, Alvine\Persistence\Storage, Alvine\Security\Authentication\Authority, Alvine\Security\Authentication\Credential, Alvine\Core\Event\EventQueue, Alvine\Security\Authentication\Group, Alvine\Security\Authentication\Identity, Alvine\Security\Authorization\DefaultAccessControl, Alvine\Security\Authorization\DefaultAccessControlList, Alvine\Security\Authorization\DefaultPermission, Alvine\Text\Formatter, Alvine\Types\Any, Alvine\Types\ClassType, Alvine\Types\Mime\MIMEType, Alvine\Util\Constraint, Alvine\Core\Event\Handler, Alvine\Util\Deployment\Phar\Producer, Alvine\Util\Error\StackFrame, Alvine\Util\Iterator\RecursiveNodeList, Alvine\Util\Logging\ExecutionData, Alvine\Util\Logging\Formatter, Alvine\Util\Logging\Handler, Alvine\Util\Logging\LogRecord, Alvine\Xml\Parser, Alvine\Xml\XPath, Alvine\Core\GenericFactory, Alvine\Core\SingletonIndirect known subclasses
Alvine\Cache\CacheManager, Alvine\Cache\Examiner, Alvine\Core\Framework, Alvine\Net\Http\Header\Field, Alvine\Net\Http\Header\HostField, Alvine\Net\Http\Header\LocationField, Alvine\Net\Http\Header\OriginField, Alvine\Net\Http\Header\PragmaField, Alvine\Net\Http\Header\PublicKeyPins, Alvine\Net\Http\Header\RefererField, Alvine\Net\Http\Header\ServerField, Alvine\Net\Http\Header\SetCookieField, Alvine\Net\Http\Header\TeField, Alvine\Core\PSR0Loader, Alvine\Net\Http\Header\TrailerField, Alvine\Net\Http\Header\TransferEncodingField, Alvine\Net\Http\Header\UpgradeField, Alvine\Net\Http\Header\UpgradeInsecureRequestsField, Alvine\Net\Http\Header\UserAgentField, Alvine\Net\Http\Header\VaryField, Alvine\Net\Http\Header\ViaField, Alvine\Net\Http\Header\XEtcdClusterIdField, Alvine\Net\Http\Header\XEtcdIndexField, Alvine\Net\Http\Header\XForwardedForField, Alvine\Data\ArrayQuery, Alvine\Net\Http\Header\XForwardedHostField, Alvine\Net\Http\Header\XForwardedPortField, Alvine\Net\Http\Header\XForwardedProtoField, Alvine\Net\Http\Header\XForwardedServerField, Alvine\Net\Http\Header\XRaftIndexField, Alvine\Net\Http\Header\XRaftTermField, Alvine\Net\Http\Header\XRequestedWithField, Alvine\Net\Http\Header\XXSSProtectionField, Alvine\Net\Http\HTTPClient, Alvine\Net\Http\Request, Alvine\Data\Dataset, Alvine\Net\Http\RequestHeader, Alvine\Net\Http\Response, Alvine\Net\Http\ResponseHeader, Alvine\Net\Http\Util\DateTime, Alvine\Net\IP4Address, Alvine\Net\IP6Address, Alvine\Net\IPAddress, Alvine\Net\MACAddress, Alvine\Net\Mail\Context\TLSOptions, Alvine\Net\Mail\MailPart, Alvine\Data\TextQuery, Alvine\Net\Mail\MailPartAttachment, Alvine\Net\Mail\MailPartHTML, Alvine\Net\Mail\MailPartMultipart, Alvine\Net\Mail\MailPartText, Alvine\Net\Mail\SMTPClient, Alvine\Net\Resource\IRI, Alvine\Net\Server, Alvine\Persistence\Find\FilterDocument, Alvine\Persistence\Find\IndexDocument, Alvine\Persistence\Find\IndexMap, Alvine\Data\XmlQuery, Alvine\Persistence\Find\Query, Alvine\Persistence\LookupTable, Alvine\Persistence\Manager, Alvine\Persistence\ObjectStorage, Alvine\Persistence\Permission\AccessControl\ReadWriteDelete, Alvine\Persistence\Permission\Delete, Alvine\Persistence\Permission\Read, Alvine\Persistence\Permission\Write, Alvine\Persistence\Provider\File\DataSource, Alvine\Persistence\Relation\Definition, Alvine\Date\AbstractCalendar, Alvine\Persistence\Relation\Field\Blob, Alvine\Persistence\Relation\Field\Boolean, Alvine\Persistence\Relation\Field\Character, Alvine\Persistence\Relation\Field\Date, Alvine\Persistence\Relation\Field\FloatType, Alvine\Persistence\Relation\Field\Integer, Alvine\Persistence\Relation\Field\NullValue, Alvine\Persistence\Relation\Field\Numeric, Alvine\Persistence\Relation\Field\Time, Alvine\Persistence\Relation\Field\Timestamp, Alvine\Date\AbstractDateTime, Alvine\Persistence\Relation\Field\Varchar, Alvine\Persistence\Relation\GenericStatement, Alvine\Persistence\Relation\PreparedStatement, Alvine\Persistence\Relation\Record, Alvine\Persistence\Relation\Records, Alvine\Persistence\Relation\Results, Alvine\Persistence\Relation\SQL\Delete\DefinedStatement, Alvine\Persistence\Relation\SQL\Delete\Result, Alvine\Persistence\Relation\SQL\Delete\Statement, Alvine\Persistence\Relation\SQL\ErrorResult, Alvine\Date\Calendar, Alvine\Persistence\Relation\SQL\GroupBY, Alvine\Persistence\Relation\SQL\Insert\DefinedStatement, Alvine\Persistence\Relation\SQL\Insert\Result, Alvine\Persistence\Relation\SQL\Insert\Statement, Alvine\Persistence\Relation\SQL\Limit, Alvine\Persistence\Relation\SQL\OrderBy, Alvine\Persistence\Relation\SQL\Select\DefinedStatement, Alvine\Persistence\Relation\SQL\Select\Result, Alvine\Persistence\Relation\SQL\Select\Statement, Alvine\Persistence\Relation\SQL\Update\DefinedStatement, Alvine\Date\Date, Alvine\Persistence\Relation\SQL\Update\Result, Alvine\Persistence\Relation\SQL\Update\Statement, Alvine\Persistence\Relation\SQL\Where, Alvine\Persistence\Relation\Transaction, Alvine\Security\Authentication\Anonymous, Alvine\Security\Authentication\Authority\ADS\Authority, Alvine\Security\Authentication\Authority\Database\Authority, Alvine\Security\Authentication\Credential\CryptedPassword, Alvine\Security\Authentication\Credential\Identified, Alvine\Security\Authentication\Credential\Password, Alvine\Cache\Object\File, Alvine\Date\DateTime, Alvine\Security\Authentication\Credential\PublicKey, Alvine\Security\Authentication\Credential\Unidentified, Alvine\Security\Authentication\User, Alvine\Security\Authorization\Role, Alvine\Text\ArgumentText, Alvine\Text\MessageArgumentFormatter, Alvine\Text\MessageFormatter, Alvine\Text\Text, Alvine\Types\ArrayHelper, Alvine\Types\ASCII, Alvine\Date\Duration, Alvine\Types\Character, Alvine\Types\Collection, Alvine\Types\Configuration\Ini, Alvine\Types\Configuration\Properties, Alvine\Types\HierarchicalProperties, Alvine\Types\HierarchicalString, Alvine\Types\Integer, Alvine\Types\KeyValue, Alvine\Types\Map, Alvine\Types\Map\ObjectMap, Alvine\Date\Instant, Alvine\Types\Map\ParameterMap, Alvine\Types\Map\SimpleMap, Alvine\Types\MediaType, Alvine\Types\Mime\Application, Alvine\Types\Mime\Application\Json, Alvine\Types\Mime\Audio, Alvine\Types\Mime\Content, Alvine\Types\Mime\Image, Alvine\Types\Mime\Message, Alvine\Types\Mime\Model, Alvine\Date\Month, Alvine\Types\Mime\Multipart, Alvine\Types\Mime\Multipart\Related, Alvine\Types\Mime\Part, Alvine\Types\Mime\Text, Alvine\Types\Mime\Video, Alvine\Types\Node, Alvine\Types\Node\Constraint\Ancestor, Alvine\Types\Node\Constraint\Name, Alvine\Types\Node\Constraint\Value, Alvine\Types\NodeList, Alvine\Date\MonthDay, Alvine\Types\Parameter, Alvine\Types\Parameter\ArrayType, Alvine\Types\Parameter\Boolean, Alvine\Types\Parameter\Collection, Alvine\Types\Parameter\Integer, Alvine\Types\Parameter\Map, Alvine\Types\Parameter\Mixed, Alvine\Types\Parameter\Simple, Alvine\Types\Parameter\StringType, Alvine\Types\Parameters, Alvine\Date\Period\LastDay, Alvine\Types\Properties, Alvine\Types\Queue, Alvine\Types\RegularExpression, Alvine\Types\Stack, Alvine\Types\StringList, Alvine\Types\StringType, Alvine\Types\Subset, Alvine\Util\Constraint\AndOperator, Alvine\Util\Constraint\EndsWith, Alvine\Util\Constraint\Equal, Alvine\Date\Period\LastMonth, Alvine\Util\Constraint\EqualNull, Alvine\Util\Constraint\Invalid, Alvine\Util\Constraint\Length, Alvine\Util\Constraint\MaximumLength, Alvine\Util\Constraint\MinimumLength, Alvine\Util\Constraint\NotEndsWith, Alvine\Util\Constraint\NotEqual, Alvine\Util\Constraint\NotNull, Alvine\Util\Constraint\NotStartsWith, Alvine\Util\Constraint\Number, Alvine\Date\Period\LastQuarter, Alvine\Util\Constraint\Operator, Alvine\Util\Constraint\OrOperator, Alvine\Util\Constraint\RegEx, Alvine\Util\Constraint\StartsWith, Alvine\Util\Constraint\StringType, Alvine\Util\Constraint\Valid, Alvine\Util\Error\Backtrace, Alvine\Util\Error\PHPHandler, Alvine\Util\Logging\Formatter\HTML, Alvine\Util\Logging\Formatter\Plain, Alvine\Date\Period\LastWeek, Alvine\Util\Logging\Handler\Chrome, Alvine\Util\Logging\Handler\ElasticSearch, Alvine\Util\Logging\Handler\File, Alvine\Util\Logging\Handler\HTTP, Alvine\Util\Logging\Handler\Loggr, Alvine\Util\Logging\Handler\Mail, Alvine\Util\Logging\Handler\Memory, Alvine\Util\Logging\Handler\Syslog, Alvine\Util\Logging\Logger, Alvine\Util\Profiling\Profiler, Alvine\Date\Period\LastYear, Alvine\Xml\Attribute, Alvine\Xml\AttributeMap, Alvine\Xml\Document, Alvine\Xml\DocumentNamespace, Alvine\Xml\Element, Alvine\Xml\Node, Alvine\Xml\NodeList, Alvine\Cache\Object\FileContent, Alvine\Date\Second, Alvine\Date\Time, Alvine\Date\Timestamp, Alvine\Date\Year, Alvine\Date\YearMonth, Alvine\I18n\Currency, Alvine\I18N\MessageArgumentFormatter, Alvine\I18N\MessageFormatter, Alvine\I18n\PropertyText, Alvine\IO\BufferReader, Alvine\Cache\Probe\BooleanProbe, Alvine\IO\ByteInputStream, Alvine\IO\ByteOutputStream, Alvine\IO\ColumnTextReader, Alvine\IO\ColumnTextWriter, Alvine\IO\CsvReader, Alvine\IO\CsvWriter, Alvine\IO\File\FileList, Alvine\IO\File\OverridableFile, Alvine\IO\File\Restricted, Alvine\IO\File\Restricted\Exclusive, Alvine\Cache\Probe\DirectoryProbe, Alvine\IO\File\Restricted\Shared, Alvine\IO\File\TemporaryDirectory, Alvine\IO\File\TemporaryFile, Alvine\IO\FileInputStream, Alvine\IO\FileOutputStream, Alvine\IO\InputStream, Alvine\IO\ObjectReader, Alvine\IO\ObjectWriter, Alvine\IO\OutputStream, Alvine\IO\StringInputStream, Alvine\Cache\Probe\FileContentProbe, Alvine\IO\StringOutputStream, Alvine\IO\TextReader, Alvine\IO\TextWriter, Alvine\Net\CIDR\IP4Prefix, Alvine\Net\Client, Alvine\Net\Context\SocketOptions, Alvine\Net\Http\Authentication\Scheme\Basic, Alvine\Net\Http\Body\NullBody, Alvine\Net\Http\Environment\Body, Alvine\Net\Http\Environment\Cookie, Alvine\Cache\Probe\FileProbe, Alvine\Net\Http\Environment\File, Alvine\Net\Http\Environment\Request, Alvine\Net\Http\Environment\RequestHeader, Alvine\Net\Http\Environment\Response, Alvine\Net\Http\Environment\ResponseHeader, Alvine\Net\Http\FormData, Alvine\Net\Http\Header, Alvine\Net\Http\Header\AcceptCharsetField, Alvine\Net\Http\Header\AcceptEncodingField, Alvine\Net\Http\Header\AcceptField, Alvine\Core\ComponentLoader, Alvine\Net\Http\Header\AcceptImplementation, Alvine\Net\Http\Header\AcceptLanguageField, Alvine\Net\Http\Header\AccessControlRequestHeadersField, Alvine\Net\Http\Header\AccessControlRequestMethodField, Alvine\Net\Http\Header\AuthorizationField, Alvine\Net\Http\Header\CacheControlField, Alvine\Net\Http\Header\CfConnectingIpField, Alvine\Net\Http\Header\CfIpcountryField, Alvine\Net\Http\Header\CfRayField, Alvine\Net\Http\Header\CfUnbufferedUploadField, Alvine\Core\Environment, Alvine\Net\Http\Header\CfVisitorField, Alvine\Net\Http\Header\ConnectionField, Alvine\Net\Http\Header\ContentDispositionField, Alvine\Net\Http\Header\ContentEncodingField, Alvine\Net\Http\Header\ContentLengthField, Alvine\Net\Http\Header\ContentSecurityPolicyField, Alvine\Net\Http\Header\ContentTypeField, Alvine\Net\Http\Header\CookieField, Alvine\Net\Http\Header\DateField, Alvine\Net\Http\Header\DNTFieldNamespace: Alvine\Core
Package: Alvine\Core
Category: Framework
License: Licence
Author: schukai GmbH info@schukai.de
Version: Release: $Revision: 3009 $
Since: 20110904
See:
Alvine\Core\SerializableImplementation
Link: Alvine
Located at core/Alvine.class.php
public
string
|
|
public
void
|
#
__set( string $name, mixed $value )
Jede von der Alvine-Klasse abgeleitete Klasse besitzt die Fähigkeit beliebige Werte und Lambda-Funktionen an das Objekt zu hängen. |
public
mixed
|
#
__get( string $name )
Diese Methode wird inplizit aufgerufen wenn eine nicht definierte Eigenschaft abgefragt wird. Ist die Eigenschaft eine Anonyme-Funktion (Closure), so wird diese Funktion aufgerufen und die Klasse als Parameter übergeben. |
public
Closure
|
#
getClosure( string $name )
Closure über den definierten Namen holen. Ist keine Eigenschaft mit dem Namen definiert, so wird eine BadPropertyException geworfen. Gibt es eine Eigenchaft mit dem Namen, ist diese aber kein Closure, so wird eine NotFoundException geworfen. |
public
boolean
|
#
propertyExists( string $name )
Prüfen ob eine Eigenschaft als dynamische Eigenschaft verfügbar ist, die über $obj->property abgefragt werden kann. |
public
mixed
|
#
__call( string $name, array $arguments )
Ein Closures das dem Objekt übergeben wurde, kann entweder als Property oder als Funktion aufgerufen werden. |
public
boolean
|
#
isCallable( type $name )
Mit dieser Methode kann geprüft werden, ob eine Methode aufrufbar ist. Das gilt für echte und eingehängte DI-Methoden (Lambda). |
public
string
|
|
public
string
|
#
getID( )
Diese Methode gibt eine eindeutige ID des Objektes zurück. Bei der ID handelt es sich um eine Zeichenkette in der Form einer UUID. |
public
string
|
#
getShortID( integer $length = null )
Diese Methode entfernt alle Minuszeichen aus der UUID des Hash. Wird eine Länge definiert, so wird nach dem entfernen der Minuszeichen die ersten $length Zeichen zurückgegeben. |
public
boolean
|
#
equals(
Diese Funktion vergleicht zwei Objekte. Dazu wird von beiden der
Wert, der von |
public
|
#
getClone( boolean $deepClone = false )
Diese Methode gibt ein geklontes Objekt von sich selber zurück. Wenn eine abgeleitete Klasse diese Methode nicht unterstützt, so muss diese die Methode überschreiben und eine CloneNotSupportedException werfen. Die Standardmethode klont eine seichte Kopie der Eigenschaften. Das bedeutet das Objekte in den Eigenschaften nicht geclont werden. Sollen diese auch geclont werden muss true übergeben werden. |
public
|
#
__clone( )
Interne Hook für das Clonen des Objektes. Wenn das zu klonende Objekt bereits eine eindeutige ID hat, dann wird auch für das neue Objekt eine eindeutige ID erstellt. |
public
string
|
|
public
boolean
|
#
isInstanceOf( object $object )
Prüft ob das übergebene Objekt eine Instanz dieses Objektes ist. Allerdings ist darauf zu achten, das vorher definiert wurde, das das neue Objekt von Alvine abgeleitet wurde. |
serialize(),
unserialize()
|
checkAndAdjustSerialisation(),
serialize(),
unserialize()
|
integer |
VERSION
Generelle Alvine-Version |
#
2
|
integer |
APIVERSION
Version der API-Version der Klasse. |
#
1
|
string |
IDENTIFICATION
Identifizierung der Alvine API |
#
'Alvine'
|
integer |
SERIALVERSION
Version der Klasse (wird für die Serialisierung verwendet. Ändert sich der interne Aufbau der Klasse, so muss dieser Wert nach oben gesetzt werden. Die Serialisierung muss diesen Wert abfragen und bei Bedarf einen Wrapper für das Arbeiten mit veralteten Objekten implmenetieren. |
#
1
|
protected
array
|
$properties
Liste mit dynamischen Eigenschaften die über __get und __set bearbeitet werden können. |
#
[]
|
protected
string
|
$hash
Eindeutige ID |
#
null
|