Thanks so much for your help Brad and Sander.  I've downloaded the 
newest Zend2 from cvs and compiled it into Php-4.3.0-dev.  All of the 
features of data hiding which I would need for this project look nicely 
implemented in this engine!

But now I'm running a bit of a dilemna.  I'm saving serialized objects 
in a database, but it seems as though the unserialize function is not 
liking the string that the function serialize outputs.  It results in a 
segmentation fault.  I did a gdb trace on it and looked at the 
zend_hash.c file for maybe a little bit of insight, but nothing jumped 
out at me as I'm not very familier with php's internal structure.  I've 
attached the trace and code below.

I've noticed a bug in the bug tracking system 
http://bugs.php.net/bug.php?id=17728, that looks related and unresolved. 
 Any help would be appreciated!

Thank you!

Ben Dischinger


Here is the code that produces the fault:
 /**
  * getObject - Returns the object associated with oid from the database
  **/
function getObject($oid){
      //Get Serialization String and unserialize it
      if($result = $this->getSingleResult("select serialization from 
phpflux_lang_object where oid=$oid")){
          $serial = $result['serialization'];
          echo $serial;
          return unserialize($serial);
      }
      return null;
}


Here is the gdb output:
Starting program: /usr/local/bin/php index.php
In fluxInclude(): $Class=phpflux.lang.*
In include_dir(): 
$dirStr=/home/disching/Projects/phpflux/classes/phpflux/lang/
In putObject():
In getSingleResult: $query=select serialization from phpflux_lang_object 
where oid=16
O:10:"testobject":9:{s:7:"package";s:12:"phpflux.lang";s:11:"objectoid";N;s:11:"objectuid";N;s:11:"objectgid";N;s:11:"objectmod";N;s:16:"objectcomments";N;s:1:"A";s:8:"Object
 
A";s:1:"B";s:8:"Object B";s:1:"C";s:8:"Object C";}
Program received signal SIGSEGV, Segmentation fault.
zend_hash_copy (target=0x400b9814, source=0x81d2b3c, 
pCopyConstructor=0x811d200 <zval_add_ref>, tmp=0xbfffc048, size=4)
    at /root/php4/Zend/zend_hash.c:777
777            if (p->nKeyLength) {
(gdb) bt
#0  zend_hash_copy (target=0x400b9814, source=0x81d2b3c, 
pCopyConstructor=0x811d200 <zval_add_ref>, tmp=0xbfffc048,
    size=4) at /root/php4/Zend/zend_hash.c:777
#1  0x0811f2c9 in _object_and_properties_init (arg=0x400c75f8, 
class_type=0x81d2afc, properties=0x0)
    at /root/php4/Zend/zend_API.c:600
#2  0x0811f307 in _object_init_ex (arg=0x400c75f8, class_type=0x81d2afc) 
at /root/php4/Zend/zend_API.c:610
#3  0x080de205 in php_var_unserialize (rval=0xbfffc214, p=0xbfffc1f8, 
max=0x400b99cb "", var_hash=0xbfffc1fc)
    at var_unserializer.re:196
#4  0x080d74e9 in zif_unserialize (ht=1, return_value=0x400c75f8, 
this_ptr=0x0, return_value_used=1)
    at /root/php4/ext/standard/var.c:667
#5  0x08130153 in execute (op_array=0x400b456c) at 
/root/php4/Zend/zend_execute.c:2079
#6  0x08130245 in execute (op_array=0x400aca14) at 
/root/php4/Zend/zend_execute.c:2103
#7  0x0811e304 in zend_execute_scripts (type=8, retval=0x0, 
file_count=3) at /root/php4/Zend/zend.c:832
#8  0x080fd169 in php_execute_script (primary_file=0xbffffa80) at 
/root/php4/main/main.c:1504
#9  0x08136a60 in main (argc=2, argv=0xbffffb24) at 
/root/php4/sapi/cli/php_cli.c:683
#10 0x42017499 in __libc_start_main () from /lib/i686/libc.so.6



Brad LaFountain wrote:

>That .txt only talks about private members. Zend2 also implements protected
>data members.
>
> - brad
>--- Sander Roobol <[EMAIL PROTECTED]> wrote:
>
>>The Zend Engine 2 implements this. See http://www.php.net/ZEND_CHANGES.txt
>>
>>Sander
>>
>>On Fri, Aug 16, 2002 at 03:13:57AM -0500, Ben Dischinger wrote:
>>
>>>Hello,
>>>
>>>My question is if there is anyone working on an implementation of data
>>>
>>hiding in php? IE Public, private, and protected data types within php
>>classes.  I can not find anywhere mentioning this besides very few websites
>>that say it is on the "TODO" list.
>>
>>>The research that I'm doing involves dynamically programming php from the
>>>
>>internet collectively with many users, of which some would have restricted
>>access rights to specific objects.  All objects would have certain data that
>>I would need to be of type private, ie owner id, permission mode, etc...  in
>>order for the object security model to be safe.  Without data hiding any user
>>using this system could simply type $Current_User->UID=0  which would then
>>change the owner of this object, which happens to be a user to 0, or god. 
>>There may be a different way to implement this that I'm not seeing, but any
>>model that I come up with in php I can circumvent by some simular means.
>>
>>>I may need to implement a servlet in java that keeps track of currently
>>>
>>logged in users and objects in memory, but this would be more overhead than
>>wanted.  If data hiding was implemented in PHP I would be very excited.  If
>>there is not already someone working on it, perhaps I will roll up my sleeves
>>and get my elbows dirty.
>>
>>>Thank you so much for reading.
>>>
>>>Ben Dischinger
>>>NDSU Computer Science
>>>
>>-- 
>>PHP Development Mailing List <http://www.php.net/>
>>To unsubscribe, visit: http://www.php.net/unsub.php
>>
>
>
>__________________________________________________
>Do You Yahoo!?
>HotJobs - Search Thousands of New Jobs
>http://www.hotjobs.com
>

Reply via email to