Page MenuHomePhabricator
Paste P4826

PHP serialize/unserialize to different class for T156364
ActivePublic

Authored by hashar on Jan 27 2017, 10:58 PM.
<?php
class WithPublic {
public $property;
function __construct( $p ) { $this->property = $p; }
function getProperty() { print $this->property; }
}
class WithPrivate {
private $property;
function __construct( $p ) { $this->property = $p; }
function getProperty() { print $this->property; }
}
$pub = new WithPublic( 'value' );
$pub_s = serialize( $pub );
$priv = new WithPrivate( 'value' );
$priv_s = serialize( $priv );
echo "Class with public property unserialized to class with private property";
$mut_pub_to_priv = unserialize(
str_replace( '10:"WithPublic"', '11:"WithPrivate"', $pub_s ) );
var_export( $mut_pub_to_priv ); echo "\n";
echo "Property should be 'value':";
var_export( $mut_pub_to_priv->getProperty() ); echo "\n";
echo "Class with private property unserialized to class with public property";
$mut_priv_to_pub = unserialize(
str_replace( '11:"WithPrivate"', '10:"WithPublic"', $priv_s ) );
var_export( $mut_priv_to_pub ); echo "\n";
echo "Property should be 'value':";
var_export( $mut_priv_to_pub->getProperty() ); echo "\n";