Object Serialization

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
User avatar
Templeton Peck
Forum Commoner
Posts: 45
Joined: Sun May 11, 2003 7:51 pm

Object Serialization

Post by Templeton Peck »

I'm trying to serialize an object and write it to file but I keep getting this message: Warning: fwrite(): supplied argument is not a valid stream resource files.inc on line 20

which is from this code:

<?php

function write_person_object($fn, $person)
{
$handle = -1;

if(is_readable($fn) == true)
{
$handle = fopen($fn, "a");
}

if($handle == -1)
{
echo "invalid file handle";
return;
}

$plain_bytes = serialize($person);

fwrite($fn,$plain_bytes);

}

?>



The Function call page

<?php

include 'cpeople.inc';
include 'files.inc';

$name = "";
$number = "";

if(isset($_POST['save']))
{

if(isset($_POST['number']))
{
$number = $_POST['number'];
}

if(isset($_POST['name']))
{
$name = $_POST['name'];
}

$person = new people_t();

$person->set_name($name);
$person->set_number($number);

write_person_object("test.obj",$person);

}

?>


The class page

<?php

class people_t
{
function people_t()
{
$name = "";
$number = "";
}

function set_name($name)
{
if($name != "")
{
$this->name = $name;
}

else
{
echo "You cannot enter a blank name";
}
}

function get_name()
{
return $this->name;
}

function set_number($number)
{
if($number != "")
{
$this->number = $number;
}

else
{
echo "You cannot enter a blank number";
}
}

function get_number()
{
return $this->number;
}

var $name;
var $number;

}


?>
evilcoder
Forum Contributor
Posts: 345
Joined: Tue Dec 17, 2002 5:37 am
Location: Sydney, Australia

Post by evilcoder »

Garrhhhraggaahhhh! Use the code tags please.

ABOVE CODE IN TAGS
mod_edit: and now with php tags and the original indents ;)

Code: Select all

<?php

function write_person_object($fn, $person)
{
$handle = -1;
	
if(is_readable($fn) == true)
{
	$handle = fopen($fn, "a");
}
	
if($handle == -1)
{
	echo "invalid file handle";
	return;
}

$plain_bytes = serialize($person);

fwrite($fn,$plain_bytes);

}

?>
The Function call page

Code: Select all

<?php 

include 'cpeople.inc';
include 'files.inc';

$name = "";
$number = "";

if(isset($_POST['save']))
{
	
	if(isset($_POST['number']))
	{
		$number = $_POST['number'];
	}
	
	if(isset($_POST['name']))
	{
		$name = $_POST['name'];
	}
	
	$person = new people_t();
	
	$person->set_name($name);
	$person->set_number($number);
	
	write_person_object("test.obj",$person);
	
}

?>
The class page

Code: Select all

<?php

class people_t
{
function people_t()
{
	$name = "";
	$number = "";
}
	
function set_name($name)
{
	if($name != "")
	{
			$this->name = $name;
	}
		
	else
	{
			echo "You cannot enter a blank name";
	}
}
	
function get_name()
{
	return $this->name;
}
	
function set_number($number)
{
	if($number != "")
	{
		$this->number = $number;
	}
		
	else
	{
		echo "You cannot enter a blank number";
	}
}
	
function get_number()
{
	return $this->number;
}
	
var $name;
var $number;
		
}
?>
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

why do you assign the filedescriptor to $handle if you want to use $fn for fwrite()? ;)
User avatar
Templeton Peck
Forum Commoner
Posts: 45
Joined: Sun May 11, 2003 7:51 pm

Post by Templeton Peck »

:lol:

I can't believe I spent all that time trying to figure it out and it was that.. thanks
Post Reply