Re: object in $_SESSION [message #174404 is a reply to message #174399] |
Fri, 10 June 2011 10:46 |
Jerry Stuckle
Messages: 2598 Registered: September 2010
Karma:
|
Senior Member |
|
|
On 6/10/2011 4:02 AM, Jivanmukta wrote:
> Hello,
> I need your opinions about my solution of some programming probem. I
> have little experience in web developement and PHP.
> I have a page insert_send.html with a form. The user enters into the
> form path of HTML file with bank statement and presses submit button.
> Then import_statement.php program is executed. The program imports
> bank statement into Statement object (which is complicated task) and
> runs:
> $_SESSION['statement'] = serialize($statement);
> headerLocation('send_emails.php');
> Then send-emails.php program is executed. It runs:
> $statement = unserialize($_SESSION['statement'];
> and sends emails according to statement positions (which is
> complicated task, too).
> My question: is the method of transferring Statement object through
> session array acceptable in my case? One man told me that passing
> objects through sessions is usually an error, but I don't know why.
> I decided to separate importing of bank statement and sending emails
> into two different files becase of complexity of these tasks.
> Please help. Thanks in advance.
>
> newbie
You don't have to serialize() the object; just storing it in the session
is sufficient.
Erwin's comments about what the object can contain are very valid.
However, I don't consider it an error to pass an object through a
session; it's no different than any other variable. And often it is
more efficient to pass the entire object through the session than doing
something like passing an id and rebuilding the object from a database
query.
The real "problem" here is PHP's handling of objects. When your script
ends, PHP calls the destructor for the class. But when it is
deserialized, PHP does not call the constructor. This creates a
situation where there can be more destructors called than constructors -
a clear violation of OO principals.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
|
|
|