Re: PEAR::Config - reading XML files

From: Date: Thu, 03 Jul 2003 14:02:56 +0000
Subject: Re: PEAR::Config - reading XML files
References: 1  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-6436@lists.php.net to get a copy of this message
<jeroen@terena.nl> wrote : > Hi Betrand, > > Bertrand Mansion wrote: > >>> but how do I parse more XML files in different sections? Can someone >>> point me in the right direction please? >>> >>> >> >> Hi Jeroen, >> >> At the moment, there is no easy way to do that, particularly because PHP4 >> doesn't accept default values for arguments passed by reference :( >> But I think PHP5 will. >> >> > Okay, but in the meantime I can use this I think. > > $config = new Config(); > $conf =& $config->parseConfig('views.xml', 'xml'); > $conf =& $config->parseConfig('models.xml', 'xml'); Great ! Looks like the package is more powerful than I first thought :) Let's say this is the easy way then. I was actually thinking about something more complex, using container objects instead of the config object. I am happy to see that it works the easy way... > But now how do I find entries inside say $conf? Say I would like to > retrieve all the views, or find values inside views. here's my XML file: > > <views> > <view name="insertable"> > <model>contact</model> > <classfile>views/Person_Insertable.class.php</classfile> > </view> > <view name="editable"> > <model>contact</model> > <classfile>views/Person_Editable.class.php</classfile> > </view> > <view name="frozen"> > <model>contact</model> > <classfile>views/Person_Frozen.class.php</classfile> > </view> > </views> I need to add some sort of "XPath" functionality to the Config_Container class. At the moment, the getItem() method is not recursive. $conf contains your root object. You can access, let's say view name="insertable" like this: $views =& $conf->getItem('section', 'views'); $viewInsertable =& $views->getItem('section', 'view', null, array('name'=>'insertable')); In the future, I would like to have: $viewInsertable =& $conf->getItem('section', '/views/view', null, array('name'=>'insertable')); or something along these lines. One step instead of two. For more info, see: http://pear.php.net/manual/en/package.configuration.config.config-container.. getitem.php Bertrand

« previous php.pear.general (#6436) next »