Jump to content
php.lv forumi

objektu private/protected memberu izdruka bez var_dump


kirils

Recommended Posts

Tātad, sakarā ar šo ideju/vajadzību esmu sācis vajadzīgo skriptu kodēt pats.

 

Problēma: ir objekts. normāli varu iterēt/enumerēt viņa publiskos mainīgos.

Vajadzētu: varēt dabūt privātos/aizsargātos mainīgos (to var izvilkt ar var_dump, bet vai tiešām nav cilvēcīga veida?) un varēt dabūt metožu uzskaitījumu attiecīgajā klasē.

 

 

Paldies!

Link to comment
Share on other sites

   $reflect = new ReflectionObject($nice);
   foreach ($reflect->getProperties(ReflectionProperty::IS_PUBLIC + ReflectionProperty::IS_PROTECTED) as $prop) {
     print $prop->getName().$prop->getValue() . "\n";
   }

Fatal error: Uncaught exception 'ReflectionException' with message 'Cannot access non-public member coords::long'

 

 

FIXME plz.

Link to comment
Share on other sites

Reku piemeera kods uzvarai: http://grab.by/3zTI

 

Buutiibaa tev truukst tikai setAccessible metodes izsaukums, kas atljaus tev nolasiit privaato un aizsargaato atribuutu veertiibas...

 

EDIT:

 

Truukst arii objekts pie getValue izsaukuma.

 

Un veel kas - shobriid tu redzeesi tikai publiskos un aizsargaatos atribuutus - pievienot ReflectionProperty::IS_PRIVATE vai arii izsauc getProperties bez parametriem, lai dabuutu visu.

Edited by rATRIJS
Link to comment
Share on other sites

Buutiibaa tev truukst tikai setAccessible metodes izsaukums, kas atljaus tev nolasiit privaato un aizsargaato atribuutu veertiibas...

nu ko, būs iemesls pāriet no 5.2 uz 5.3 laikam. Uz 5.2. tāds brīnums nav pieejams. ja šeit varētu kaut kā iedot plusiņu, Tu to esi nopelnījis ;)

 

labi, būtībā visas manas problēmas darbojoties LIVE režīmā ir atrisinātas. bet tagad paskatamies augšējo threadu: man šī funkcionalitāte ir vajadzīga nevis pašam objektam, bet gan tam, kas no tā visa paliek pāri pēc serialize() un virknes ievietošanas DB.

 

Ja ir cits saprātīgs veids kā mainīgo koku (iesk. objektus) noglabāt DB, esmu gatavs uzklausīt un pamainīt arī to, lai pēc tam varētu normāli nolasīt.

Link to comment
Share on other sites

  • 2 weeks later...

Paturpinot šo tēmu, šodien pašam sanāca līdzīga vajadzība un ko es uzgāju...

$obj = new MyClass();
$tmp = (array)$obj;
foreach($tmp as $key=>$value){
 if($key[0] === "\x00"){
   echo $key[1] == '*' ? 'protected' : 'private';
 }else{
   echo 'public';
 }
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...