For Programmers: Free Programming Magazines  


Home > Archive > PHP Language > October 2004 > defining a class/instantiating object inside a method of another









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author defining a class/instantiating object inside a method of another
Lüpher Cypher

2004-10-19, 3:57 am

Ok, here's what I'm trying to do.
I have a class. Inside the class I have a method that reads a text file.
In the text file I have a class name and a file name where that class is
defined. Now, I need to instantiate an object of that class, the problem
being that at the time I find out the class name and the file name, I'm
inside a method of another class. Well, let me just type up a little
example:

class MainClass {
$obj = null;
...
function init() {
$lines = file($some_file);
... // parsing
$kv = explode(":",$line);
$className = $kv[0];
$classFile = $kv[1];

// somehow define className that's in classFile

$this->obj = new $$className();
}
}

I don't remember exactly how it was I used a variable with new, I think
it was $$, but that's not the problem. The problem is that I don't need
to include the class definition file inside a function, I just need to
define a class using what's inside that file.
Taking the whole thing outside of the class definition is not going to
work - suppose I have many subclasses of this class, each with its own
file, then for every class I'd have to provide a separate function
outside the class definition to read the file.
Think of it as creating a tree of objects where children objects' class
names are taken out into a separate text file, so that at any time it
would be easy to change the set of succeeding children without changing
the parent class implementation.
Any ideas? :)

Lüph
Lüpher Cypher

2004-10-19, 3:55 pm

Berislav Lopac wrote:
> On Tue, 19 Oct 2004 04:07:11 GMT, Lüpher Cypher wrote:
>
>
>
>
> No, just include the class definition file anywhere, even inside the
> function block. As PHP is parsed and compiled before it's executed, class
> definitions are valid for whole program, regardless of where they are
> defined.
>


Cool, I didn't know that. Thanks!
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com