Hi!
A good idea, which I have used for some classes, like the Journal class (error handling) which fits in with the Core class. Unfortunantly I have too many classes to make them all into a chain of child classes. And also I have an ambition to write these classes in sorta seperate tools, which I can then use in other projects with no altering of the code.
The database (mysql) class is such a class, which is in use in almost every project I work at.
Would it be possible to create a member variable to a class on the fly, without specifically creating it when you write the class? Something like this:
<?php class MyClass { var $MemberVar1 = ""; var $MemberVar1 = "";
function MyClass() { //constructor } function MkMemVar($newmemvar, $memvarval) { $this->newmemvar = $memvarval; // this is just an example, don't know it would actually be done so // but you get the idea: the $newmemvar would be the name of the new // member variable and $memvarval would be the value for the new // member variable. } ?>
Or could it even be possible to do this outside of a class? So that I wouldn't have to specify a seperate function for it in my classes?
This way I could make an instance of another class inside any class on the need-bases and it would solve my problem. Is there anyway to accomplish this? I couldn't find any immediately solution by looking at the php manual, but it doesn't mean it's not there.
http://www.phppatterns.com/index.php/article/articleview/6/1/1/
The approach I generally take is to have a factory class store the singleton instance of each class which may need to be called by others, and create a reference to each needed class in the constructor. E.g.
class DBase { function getUser($UserID) { return new User; } } class Output { function displayStr($str) { echo $str; } } class Factory { function &getDbase() { static $instance; if(!isset($instance)) $instance =& new DBase; return $instance; } function &getOutput() { static $instance; if(!isset($instance)) $instance =& new Output; return $instance; } } class DoStuff { private $db; private $out; function __constructor() { $db =& Factory::getDbase(); $out =& Factory::getOutput(); } function doStuff() { $out->displayStr($db->getUser(0)->Name); } }
-- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
http://www.smempire.org
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php