Trait SerializableImplementation
SerializableImplementation
Das Trait definiert eine Implementierung des \Serializable Interfaces und kann in Zusammenspiel mit der Verwendung des \Serializable-Interfaces angewendet werden.
Um eine fertige Implementierung umzusetzen, reicht es das Interface einzubinden und das Trait mittelse use anzugeben. Wird in der Klasse, die den Trait verwendet die Konstante SERIALVERSION definiert, so kann darüber die Version der Serialisierung geprüft werden. Wird die Konstante nicht definiert, so wird immer die Version 1 genommen. In allen von Alvine\Core\Alvine abgeleiteten Klassen ist die Konstante definiert.
Lambdafunktionen
Werden Lambdafunktionen definiert, so kann das Objekt nicht mehr serialisiert werden. Der Aufruf von serialize würde in so einem Fall eine PHP Exception werfen. Die Lambdafunktion wird nicht im Scope des Objekts ausgeführt. Es steht als erster Parameter allerdings eine Referenz auf das Objekt zur Verfügung.
class NewClass implements \Serializable { use SerializableImplementation; const SERIALVERSION = 1; // ... code }
Volatile Werte
Als Besonderheit können Eigenschaften mit der Vorsilbe volatile von der Serialisierung ausgeschlossen werden. Im folgenden Beispiel wird $index serialisiert, $volatileIndex jedoch nicht.
class NewClass implements \Serializable { use SerializableImplementation; protected $volatileIndex = 1; }
Versionsprüfung
Abgeleitetet Klassen müssen, wenn Sie die Prüfung der Version nutzen wollen, die Methode Alvine::checkAndAdjustSerialisation() überschreiben. Im folgenden Sequenzdiagramm ist der Aufruf von Alvine::checkAndAdjustSerialisation() beschrieben.
Fehler beim Serialisieren
Beim Serialisieren können mehrere Fehler auftreten. Einige werden über eine UnserializeException abgefangen, andere direkt von PHP. In den Fällen in denen PHP den Fehler erkennt (z.B. wenn die gewünschte Klasse nicht verfügbar ist), dann wird eine PHP \Exception geworfen.
Debugging
Sollten beim Ausführen von unserialise die Fehlermeldung Class __PHP_Incomplete_Class has no unserializer kommen, dass die Klasse fehlt, kann mit folgendem Konstrukt der Klassenname ermittelt werden:
\ini_set('unserialize_callback_func', 'debug_unserialize'); function debug_unserialize($classname) { die(var_dump($classname)); }
Indirect Known Users
Alvine\Cache\CacheManager, Alvine\Cache\CacheObject, Alvine\Core\AbstractFactory, Alvine\Net\Http\Cookie, Alvine\Net\Http\Environment\Body, Alvine\Net\Http\Environment\Cookie, 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\Core\AutoLoader, Alvine\Net\Http\Header\AcceptCharsetField, Alvine\Net\Http\Header\AcceptEncodingField, Alvine\Net\Http\Header\AcceptField, 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\Core\Component, Alvine\Net\Http\Header\CfIpcountryField, Alvine\Net\Http\Header\CfRayField, Alvine\Net\Http\Header\CfUnbufferedUploadField, 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\Core\ComponentLoader, Alvine\Net\Http\Header\CookieField, Alvine\Net\Http\Header\DateField, Alvine\Net\Http\Header\DNTField, 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\Core\Environment, Alvine\Net\Http\Header\ServerField, Alvine\Net\Http\Header\SetCookieField, Alvine\Net\Http\Header\TeField, 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\Core\Event\Event, Alvine\Net\Http\Header\XEtcdClusterIdField, Alvine\Net\Http\Header\XEtcdIndexField, Alvine\Net\Http\Header\XForwardedForField, 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\Core\Event\EventQueue, Alvine\Net\Http\Header\XXSSProtectionField, Alvine\Net\Http\HTTPClient, Alvine\Net\Http\HTTPMessage, Alvine\Net\Http\Request, Alvine\Net\Http\RequestHeader, Alvine\Net\Http\Response, Alvine\Net\Http\ResponseHeader, Alvine\Net\Http\Util\ChunkedMessageParser, Alvine\Net\Http\Util\DateTime, Alvine\Net\IP4Address, Alvine\Core\Event\Handler, Alvine\Net\IP6Address, Alvine\Net\IPAddress, Alvine\Net\MACAddress, Alvine\Net\Mail\Authentication\CramMD5, Alvine\Net\Mail\Authentication\Login, Alvine\Net\Mail\Authentication\Plain, Alvine\Net\Mail\Context\TLSOptions, Alvine\Net\Mail\Mail, Alvine\Net\Mail\MailAddress, Alvine\Net\Mail\MailPart, Alvine\Core\Framework, Alvine\Net\Mail\MailPartAttachment, Alvine\Net\Mail\MailPartHTML, Alvine\Net\Mail\MailPartMultipart, Alvine\Net\Mail\MailPartText, Alvine\Net\Mail\SMTPClient, Alvine\Net\NetworkInterface, Alvine\Net\Resource\IRI, Alvine\Net\Resource\URI, Alvine\Net\Server, Alvine\Net\Session\Nonce, Alvine\Core\GenericFactory, Alvine\Net\Session\Session, Alvine\Net\Socket, Alvine\Net\Util\Port, Alvine\Net\Util\PortMapping, Alvine\Persistence\Clutch, Alvine\Persistence\DataSource, Alvine\Persistence\Find\FilterDocument, Alvine\Persistence\Find\Index, Alvine\Persistence\Find\IndexDocument, Alvine\Persistence\Find\IndexMap, Alvine\Cache\Examiner, Alvine\Core\PSR0Loader, Alvine\Persistence\Find\IndexResponse, 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\Core\Singleton, Alvine\Persistence\Relation\Definition, Alvine\Persistence\Relation\Field, 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\Core\System, Alvine\Persistence\Relation\Field\Time, Alvine\Persistence\Relation\Field\Timestamp, Alvine\Persistence\Relation\Field\Varchar, Alvine\Persistence\Relation\GenericStatement, Alvine\Persistence\Relation\PreparedStatement, Alvine\Persistence\Relation\Query, Alvine\Persistence\Relation\Record, Alvine\Persistence\Relation\Records, Alvine\Persistence\Relation\Result, Alvine\Persistence\Relation\Results, Alvine\Data\ArrayQuery, Alvine\Persistence\Relation\SQL\DataObject, Alvine\Persistence\Relation\SQL\Delete\DefinedStatement, Alvine\Persistence\Relation\SQL\Delete\Result, Alvine\Persistence\Relation\SQL\Delete\Statement, Alvine\Persistence\Relation\SQL\ErrorResult, 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\Data\DataQuery, 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\Persistence\Relation\SQL\Update\Result, Alvine\Persistence\Relation\SQL\Update\Statement, Alvine\Persistence\Relation\SQL\Where, Alvine\Persistence\Relation\Statement, Alvine\Persistence\Relation\Transaction, Alvine\Data\Dataset, Alvine\Persistence\SecurityContext, Alvine\Persistence\Storage, Alvine\Security\Authentication\Anonymous, Alvine\Security\Authentication\Authority, Alvine\Security\Authentication\Authority\ADS\Authority, Alvine\Security\Authentication\Authority\Database\Authority, Alvine\Security\Authentication\Credential, Alvine\Security\Authentication\Credential\CryptedPassword, Alvine\Security\Authentication\Credential\Identified, Alvine\Security\Authentication\Credential\Password, Alvine\Data\TextQuery, Alvine\Security\Authentication\Credential\PublicKey, Alvine\Security\Authentication\Credential\Unidentified, Alvine\Security\Authentication\Group, Alvine\Security\Authentication\Identity, Alvine\Security\Authentication\User, Alvine\Security\Authorization\DefaultAccessControl, Alvine\Security\Authorization\DefaultAccessControlList, Alvine\Security\Authorization\DefaultPermission, Alvine\Security\Authorization\Role, Alvine\Text\ArgumentText, Alvine\Data\XmlQuery, Alvine\Text\Formatter, Alvine\Text\MessageArgumentFormatter, Alvine\Text\MessageFormatter, Alvine\Text\Text, Alvine\Types\Any, Alvine\Types\ArrayHelper, Alvine\Types\ASCII, Alvine\Types\Character, Alvine\Types\ClassType, Alvine\Types\Collection, Alvine\Date\AbstractCalendar, 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\Types\Map\ParameterMap, Alvine\Types\Map\SimpleMap, Alvine\Date\AbstractDateTime, 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\MIMEType, Alvine\Types\Mime\Model, Alvine\Types\Mime\Multipart, Alvine\Cache\Object\File, Alvine\Date\Calendar, 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\Types\Parameter, Alvine\Date\Chronology, 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\Types\Properties, Alvine\Date\Date, Alvine\Types\Queue, Alvine\Types\RegularExpression, Alvine\Types\Stack, Alvine\Types\StringList, Alvine\Types\StringType, Alvine\Types\Subset, Alvine\Util\Constraint, Alvine\Util\Constraint\AndOperator, Alvine\Util\Constraint\EndsWith, Alvine\Util\Constraint\Equal, Alvine\Date\DateTime, 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\Duration, 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\Deployment\Phar\Producer, Alvine\Util\Error\Backtrace, Alvine\Util\Error\PHPHandler, Alvine\Util\Error\StackFrame, Alvine\Date\Instant, Alvine\Util\Iterator\RecursiveNodeList, Alvine\Util\Logging\ExecutionData, Alvine\Util\Logging\Formatter, Alvine\Util\Logging\Formatter\HTML, Alvine\Util\Logging\Formatter\Plain, Alvine\Util\Logging\Handler, Alvine\Util\Logging\Handler\Chrome, Alvine\Util\Logging\Handler\ElasticSearch, Alvine\Util\Logging\Handler\File, Alvine\Util\Logging\Handler\HTTP, Alvine\Date\Interval, 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\Logging\LogRecord, Alvine\Util\Profiling\Profiler, Alvine\Xml\Attribute, Alvine\Xml\AttributeMap, Alvine\Xml\Document, Alvine\Date\Month, Alvine\Xml\DocumentNamespace, Alvine\Xml\Element, Alvine\Xml\Node, Alvine\Xml\NodeList, Alvine\Xml\Parser, Alvine\Xml\XPath, Alvine\Date\MonthDay, Alvine\Date\Period, Alvine\Cache\Object\FileContent, Alvine\Date\Period\LastDay, Alvine\Date\Period\LastMonth, Alvine\Date\Period\LastQuarter, Alvine\Date\Period\LastWeek, Alvine\Date\Period\LastYear, Alvine\Date\Quantity, Alvine\Date\Second, Alvine\Date\Time, Alvine\Date\Timestamp, Alvine\Date\Timezone, Alvine\Cache\Probe\BooleanProbe, Alvine\Date\Timezone\Transition, Alvine\Date\Year, Alvine\Date\YearMonth, Alvine\I18n\Currency, Alvine\I18n\Locale, Alvine\I18N\MessageArgumentFormatter, Alvine\I18N\MessageFormatter, Alvine\I18n\PropertyText, Alvine\I18n\Resource\ISO4217, Alvine\IO\BufferReader, Alvine\Cache\Probe\DirectoryProbe, Alvine\IO\ByteInputStream, Alvine\IO\ByteOutputStream, Alvine\IO\ColumnTextReader, Alvine\IO\ColumnTextWriter, Alvine\IO\CsvReader, Alvine\IO\CsvWriter, Alvine\IO\File\Directory, Alvine\IO\File\File, Alvine\IO\File\FileList, Alvine\IO\File\OverridableFile, Alvine\Cache\Probe\FileContentProbe, Alvine\IO\File\Restricted, Alvine\IO\File\Restricted\Exclusive, 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\Cache\Probe\FileProbe, Alvine\IO\OutputStream, Alvine\IO\Reader, Alvine\IO\Stream, Alvine\IO\StringInputStream, Alvine\IO\StringOutputStream, Alvine\IO\TextReader, Alvine\IO\TextWriter, Alvine\IO\Writer, Alvine\Net\Address, Alvine\Net\CIDR, Alvine\Cache\Probe\Probe, Alvine\Net\CIDR\IP4Prefix, Alvine\Net\CIDR\Prefix, Alvine\Net\Client, Alvine\Net\Context\Context, Alvine\Net\Context\Options, Alvine\Net\Context\SocketOptions, Alvine\Net\Http\Authentication\Credentials, Alvine\Net\Http\Authentication\Scheme\Basic, Alvine\Net\Http\Body, Alvine\Net\Http\Body\NullBodyPackage: Alvine\Core
Category: Framework
License: Licence
Author: schukai GmbH info@schukai.de
Version: Release: $Revision: 173 $
Since: 20110917
Link: Alvine
Located at core/SerializableImplementation.trait.php
public
string
|
|
protected
|
|
public
|