On Tue, 28 Jan 2003 16:20:20 +0100, Maxim Maletsky wrote: >
I use PHP classes extensively and very often use classes within other classes. First off, I would make sure to take advantage of inheritence as much as possible. I have heirarchies up to 4 deep for some of my classes depending on how much specialization I need while at the same time maintaining only one set of code for functionality common to all subclasses. As for using classes within classes, I don't include the classes within a class definition nor within a method def. I include the class def in the class file but outside the actual class {} statement. When I instantiate the class, if I will need the object ref to pass to other classes or to other methods within the calling class, I assign the initial object instantiation to a class variable. That way any class methods can have ready access to that class via the ojbect reference stored in the class variable. Only when I know for sure that the use of a class will be for one purpose do I include and instantiate within a method. as always, YMMV depending on the structure of your project. NOTE: There is a set of new PHP functions that allow a sort of dynamic multiple inheritence. You can look here for info: http://www.php.net/manual/en/ref.objaggregation.php Jeff > "@ Nilaab" <[EMAIL PROTECTED]> wrote... : > >> Hello everyone, >> >> I want to be able to use objects to create my future pages. My goal is >> to use methods of classes to make the original front-line script easier >> to read, while all the processing is done with a simple call to the >> different classes from a single class. Please read futher, as I'll get >> to a point and to my question... >> >> I have many classes that do different tasks, like formValidator.class, >> stringManipulator.class, db.class, fileManipulation.class, >> template.class, etc (these are self-explanitory as their names suggest). >> Then, I might have a class called category.class that adds, deletes, >> edits, moves, and renames categories within the filesystem and database. >> But I would have a front-line script called category.php that would call >> the necessary methods of category.class at certain points, depending on >> the task being done on a specific step. >> >> In other words I want category.class to call the other classes and do >> something with them, then in turn I want category.php to call objects in >> category.class for a specific task, such as: >> >> <?php >> >> // category.php >> >> include ("category.class"); >> $cat = new category (); >> $cat->addCategory($new_cat_name); >> // or >> $cat->editCategory($cat_name); >> // or >> $cat->deleteCategory($cat_name); >> // or >> $cat->moveCategory($cat_name); >> // or >> $cat->renameCategory($cat_name); >> >> ?> >> >> >> My question is: >> >> How can I call a class within another class and do something with it? >> Right now I'm doing it the most convenient way I know, which is >> including other classes using the include() function within the methods >> of the category.class. There is no multiple-inheritance allowed in PHP, >> so I can only use inheritance on one class. > > Including new classes within the existing classes is not such a bad idea > as it ensures you to have only the necessary classes called. > >> I am also extremely skeptical about creating too many classes at a time >> in one script. Do the above examples degrade performance speed of the >> script when I call too many classes? Also, isn't there a way to use >> sessions to save created classes and then use them again for other >> scripts without the need to make a new instance of the same class again >> and again? > > yes, you can serialize/unserialize classes into the sessions. This makes > it a little more complicated, but can be helpful sometimes. > >> I am really looking for a better way to organize my code while still >> being able to use these classes whenever I need them and at the same >> time keeping the category.php file clean and easy to read. Is there a >> tutorial on how to organize code? I'm not looking for html template >> tutorials. Just how to get around inheritance limits while still keeping >> performance and clean-code in mind. > > You know what I have once done? I created a file with functions that > return you the object pointers. It would create (declare) the class > whenever it was not declared before or just return the pointer from a > global variable if it was declared before. That way, you only load a few > functions, and whenever you need a class you assign a variable to the > function's return to have the class. This limits you script to only > classes you use and no includes within the script itself. A kind of silly > method, but can be easy to work with. > > > Also, check out the new Zend 2 engine, it has tons of improvements with > classes for PHP5. Currently the code is in CVS (checkout php5 module). > Changes are listed here: > > http://cvs.php.net/co.php/ZendEngine2/ZEND_CHANGES > > > -- > Maxim Maletsky > [EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php