CakeFest 2024: The Official CakePHP Conference

wddx_serialize_value

(PHP 4, PHP 5, PHP 7)

wddx_serialize_valueTek bir değeri bir WDDX paketi içinde dizgeleştirir

Uyarı

Bu işlev PHP 7.4.0'da tamamen KALDIRILMIŞTIR.

Açıklama

wddx_serialize_value(mixed $değer, string $açıkama = ?): string

Belirtilen değerden bir WDDX paketi oluşturur.

Bağımsız Değişkenler

değer

Dizgeleştirilecek değer.

açıkama

Paket başlığında görünmek üzere belirtilmesi isteğe bağlı açıklama dizgesi.

Dönen Değerler

Bir hata oluşursa false yoksa bir WDDX paketi döner.

add a note

User Contributed Notes 1 note

up
-4
chris at digitalbase dot com
22 years ago
When serializing JavaScript objects to interact with PHP objects, you should make the JavaScript object's first entry a php_class_name.

PHP:
class myclass {
var $name;
var $age;
var $ssn;
...

function myclass() {
$this->name = "";
$this->age = "";
$this->ssn = "";
...
}
}

JavaScript:
// serialization example code is from the
// WDDX SDK http://www.openwddx.org
function SerializeMsg(name, age, ssn, ...) {
var MyObj = new Object;

// the following line is necessary in order
// to deserialize back to a PHP object
MyObj.php_class_name = "myclass";

MyObj.name = name;
MyObj.age = age;
MyObj.ssn = ssn;
...

// Create a new serializer "object" to do our work for us
MySer = new WddxSerializer;

// Serialize the Message variable into a WDDX Packet
MyWDDXPacket = MySer.serialize(MyObj);

// Output WDDX Packet so we can see what it looks like
return MyWDDXPacket;
}

Now you can use this in a page which is its own form action:
<?php
// don't forget to include the class definition from above!
if (!isSet($wddx_packet))
$MyObj = new myclass();
else
$MyObj = wddx_deserialize($wddx_packet);
?>

<html>
<head>
<script language="JavaScript">
<!--
function Init() {
// sets the form's text-elements
tmp = document.MyForm;

tmp.name.value = "<? echo $MyObj->name ?>";
tmp.age.value = "<? echo $MyObj->age ?>";
tmp.ssn.value = "<? echo $MyObj->ssn ?>";
...
}

function SerializeMsg(name, age, ssn, ...) {
// see above!
}

function SubmitForm() {
// sumbits the form
tmp = document.MyForm;

tmp.wddx_packet.value =
SerializeMsg(tmp.name.value, tmp.age.value, tmp.ssn.value,...);
document.submit();
}
// -->
</script>
</head>
<body>
...
<form name="MyForm"
action="<? echo $PHP_SELF ?>" method="post">
<input name="wddx_packet" type="hidden">
<input name="name" type="text">
<input name="age" type="text">
<input name="ssn" type="text">
...
<input name="SubmitBtn" type="button" onclick="SumbitForm()">
</form>
</body>
</html>

---------------------------------
If you don't provide that first 'php_class_name' in the JavaScript function, then when PHP deserializes it will deserialize into an associative array and not an object instance.

Note that this provides a way to maintain state without
using sessions or cookies - just good old HTML!

Hope this helps!
--
Chris Hansen
To Top