Boo-urns Posted January 8, 2009 Share Posted January 8, 2009 I'm very new to classes and OOP. My question is what is the best way to setup say an updateDBclass. I thought for the certain page you have that specific class say class User. Is there a way without hardcoding it to pass that class name to the updateDBclass. Can you pass a variable for what class you're extending? <?php class B extends $toUpdateClass { function update($table, $string) { // update db } } ?> I'm not sure what is best practice here so any help is very appreciated. -Corey Quote Link to comment Share on other sites More sharing options...
premiso Posted January 8, 2009 Share Posted January 8, 2009 Have you tried it? I am not sure, but I would say no. The best way to find out is just try it and see what happens. If it does work, sure why not. But why would you need to dynamically define what a class extends? Quote Link to comment Share on other sites More sharing options...
RussellReal Posted January 8, 2009 Share Posted January 8, 2009 classes arn't meant to be dynamic.. they're meant to be called and do a specific task.. and I really doubt that you can extend classes dynamically.. the best way is to just like pass the class into the class and handle it with your constructor class A { function __construct($toInstantiate) { $this->B = $toHandle; } } $a = new A(new B); oh, forgot to mention you could also in the class do B::FunctionInB(); class A { function __construct() { $this->B = B::handleBthings(); } } Quote Link to comment Share on other sites More sharing options...
Boo-urns Posted January 8, 2009 Author Share Posted January 8, 2009 Yea i've tried it. I was just going to extend a class to create an update database script so i don't have to rewrite it all the time, but I guess i can just write a function for that. Thanks for the guidance. 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.