kirils Posted April 6, 2010 Report Share Posted April 6, 2010 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! Quote Link to comment Share on other sites More sharing options...
ohmygod Posted April 6, 2010 Report Share Posted April 6, 2010 Ja pareizi sapratu, ko gribi, tad zem http://www.php.net/manual/en/ref.classobj.php funkciju aprakstiem ir pilns ar visādiem piemēriem. Quote Link to comment Share on other sites More sharing options...
Kaklz Posted April 6, 2010 Report Share Posted April 6, 2010 Papēti PHP Reflection API: http://lv.php.net/manual/en/intro.reflection.php Konkrēti, lai izdrukātu privātos/protected atribūtus: http://lv.php.net/manual/en/reflectionclass.getproperties.php Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted April 6, 2010 Report Share Posted April 6, 2010 Jup - Reflection API ir tas kas vajadziigs :) Quote Link to comment Share on other sites More sharing options...
kirils Posted April 6, 2010 Author Report Share Posted April 6, 2010 $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. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted April 6, 2010 Report Share Posted April 6, 2010 (edited) 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 April 6, 2010 by rATRIJS Quote Link to comment Share on other sites More sharing options...
kirils Posted April 6, 2010 Author Report Share Posted April 6, 2010 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. Quote Link to comment Share on other sites More sharing options...
Kaklz Posted April 7, 2010 Report Share Posted April 7, 2010 Nu pag, tajā brīdī, kad tu viņu velc ārā no db un taisi unserialize, tad tak tu tiec atkal atpakaļ pie paša objekta. Tāda jau arī ir pati searialize doma: http://lv.php.net/manual/en/language.oop5.serialization.php Quote Link to comment Share on other sites More sharing options...
marcis Posted April 20, 2010 Report Share Posted April 20, 2010 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'; } } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.