Malcolm,
Yeah, I'd actually read the first couple of chapters of that article sometime ago and it's very good. I'm sure it's acceptable practise.
I couldn't quite see the point of the SystemComponent object though, since only the DBConnector class seems to use the $settings data. So why not just put the settings in the DBConnector Class?
I quite liked the Validator Class and might actually nick that!
About your config.ini file ... it's not, in principle, much different to my Page object. Both of us are creating 'globals' (which purists often frown on, but I just can't quite seem to do without). The only real difference is that I only create one global - the Page object - and use getters to extract the actual data.
As far as 'ease of use' goes, all I do is plonk a copy of the Page.php in a folder above the root, open it up, fix the settings once and that's it ... it's all laid out for me. Similarly, I put a copy of my DB.php in the same folder and fix the settings. That's a lot of basic stuff I don't really have to think about every time I start on a new site, but it's nothing you couldn't do procedurally.
Just to show the other side, I use a set of functions to build HTML, usually a different set per site. I did start to go down the OOP route, but in the end, I found that it made it hard to work with designers, virtually all of which wanted to tweak the actual HTML/CSS after the design process was supposed to have finished.
So, for me, it's always about practicality.
Paul 🙂
PS. Sorry if I'm teaching grannies to suck eggs but one thing I would say about using a .ini file extension is that if a user is able to navigate to that file, then it's possible that they would be able to view the contents so make sure to put it in a folder above the root folder.