object serializen
Hallo,
Ik heb een Connfiguration class gemaakt waarin ik via __set en __get configuratie instellingen als properties kan opslaan en opvragen. Nu kan het zijn dat er een string, een array of een object wordt toegevoegd. Als het gaat om een object dan moet het object eerst geserialized worden. Als ik het object dan wil opvragen moet het weer geunserialized worden.
Het probleem is dit: als ik een setting wil opvragen weet ik niet of het om een geserialized object gaat. Dit moet ik dus controleren en als het zo is, dan moet ik het eerst unserializen en dan teruggeven. Nu heb ik een omslachtig stukje code gevonden dat controleert of het om een geserializede string gaat.
function is_serial( $data ) {
$data = @unserialize($data);
if( $data === false ) {
return false;
} else {
return true;
}
}
Echter, nu moet ik dus bij iedere setting die ik ophaal dat stukje code gaan aanroepen om te controleren of het om een geserializede string gaat. Ik heb het gevoel dat dit best omslachtig is en vraag me af of iemand een beter idee heeft? Moet ik het kunnen toevoegen en ophalen van objecten wellicht niet mogelijk maken? Graag reacties!
Ik heb een Connfiguration class gemaakt waarin ik via __set en __get configuratie instellingen als properties kan opslaan en opvragen. Nu kan het zijn dat er een string, een array of een object wordt toegevoegd. Als het gaat om een object dan moet het object eerst geserialized worden. Als ik het object dan wil opvragen moet het weer geunserialized worden.
Het probleem is dit: als ik een setting wil opvragen weet ik niet of het om een geserialized object gaat. Dit moet ik dus controleren en als het zo is, dan moet ik het eerst unserializen en dan teruggeven. Nu heb ik een omslachtig stukje code gevonden dat controleert of het om een geserializede string gaat.
function is_serial( $data ) {
$data = @unserialize($data);
if( $data === false ) {
return false;
} else {
return true;
}
}
Echter, nu moet ik dus bij iedere setting die ik ophaal dat stukje code gaan aanroepen om te controleren of het om een geserializede string gaat. Ik heb het gevoel dat dit best omslachtig is en vraag me af of iemand een beter idee heeft? Moet ik het kunnen toevoegen en ophalen van objecten wellicht niet mogelijk maken? Graag reacties!
Gesponsorde koppelingen:
Waarom wil je dingen serializeren in je config object??
Ik wil aan mijn Configuration object properties kunnen toekennen, maar ook objecten.
Nu wil ik ook een object kunnen toevoegen aan een Configuration object. Voorbeeld:
Het bovenstaande werkt allemaal prima, maar om dat object te kunnen toevoegen als property (string) moet ik het eerst serializen. Doe ik dat niet dan krijg ik een foutmelding dat het object niet als string kan worden toegevoegd.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$config = new Configuration();
$config->test = 'Kees';
echo $config->test; // resultaat is "Kees"
?>
$config = new Configuration();
$config->test = 'Kees';
echo $config->test; // resultaat is "Kees"
?>
Nu wil ik ook een object kunnen toevoegen aan een Configuration object. Voorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$database_config = new Configuration();
$database_config->username = 'keesKees';
$database_config->password = 'Schepers';
// nu wil ik de database config toevoegen aan de reeds bestaande config
$config->database_settings = $database_config;
// nu kan ik de database settings vanuit het 1e config object als volgt oproepen
echo $config->database_settings->username; // toont "keesKees"
?>
$database_config = new Configuration();
$database_config->username = 'keesKees';
$database_config->password = 'Schepers';
// nu wil ik de database config toevoegen aan de reeds bestaande config
$config->database_settings = $database_config;
// nu kan ik de database settings vanuit het 1e config object als volgt oproepen
echo $config->database_settings->username; // toont "keesKees"
?>
Het bovenstaande werkt allemaal prima, maar om dat object te kunnen toevoegen als property (string) moet ik het eerst serializen. Doe ik dat niet dan krijg ik een foutmelding dat het object niet als string kan worden toegevoegd.
Oke, je serialiseert dus omdat je settings in DB wilt schrijven? Waarom wil je het in de DB schrijven?
Kees, dit is slechts een voorbeeldje. Je moet het iets globaler zien. Ik heb een Configuration object en daar kan ik iedere configuratie-setting in opslaan die ik wil. Maar het kan soms handig zijn om een "sub" configuratieobject toe te voegen aan de algemene configuratie.
Dus je hebt bijv. een "sub" configuratie object gemaakt van je database settings en dat object wil je toevoegen aan het "hoofd" configuratie object.
Daarom wil ik dus een object kunnen toevoegen, maar (correct me if I'm wrong) dan moet ik dat object dus eerst serializen. Toch?
Dus je hebt bijv. een "sub" configuratie object gemaakt van je database settings en dat object wil je toevoegen aan het "hoofd" configuratie object.
Daarom wil ik dus een object kunnen toevoegen, maar (correct me if I'm wrong) dan moet ik dat object dus eerst serializen. Toch?



