do you need to use global? IMO you should use just 1 global variable, thats is what I call "entry point" My scripts looks like... require_once 'loader.php'; Loader::registerAutoload(); $foo = new Foo(); $foo->doStuff(); This way you can develop faster and do maintenance better avoiding problems with third-party. Here you have some rules for remember how to access you want a $var from outside and you are outside an object or function? => use the $var you want a $var from outside you are inside an object or function? => global $var o $GLOBALS['vars'] (better to pass it as arg) you want a $var from an object and you are inside the same object? => use $this->var (better $this->getVar() ) you want a $var from an object and you are inside other object? => use $object->getVar() or Class::getVar() It is a good practice to declare the object members as "protected" and provide s/getters for each member (when your design allow it). Also you can overload by using the __get, __set and __call It is really easy to make an "automagic" object Class AutoMagic { protected $_vars = array(); public/*mixed*/ function __get(/*string*/$name) { return isset( $this->{ $name } ) ? $this->_vars[ strtolower($name) ] : null; } public/*mixed*/ function __set(/*string*/$name,/*mixed*/$value) { return $this->_vars[ strtolower($name) ] = $value; } public/*boolean*/ function __isset(/*string*/$name) { return array_key_exists( strtolower($name), $this->_vars ); } public/*void*/ function __unset(/*string*/$name) { if( isset( $this->{ $name } )) unset( $this->_vars[ strtolower($name) ] ); } public/*mixed*/ function __call(/*string*/$method,array $args) { $type = strtolower( substr( $method, 0, 3 ) ); $property = substr( $method, 3 ); switch( $type ) { case 'get': return $this->{ $property }; case 'set': if( !array_key_exists(0, $args) ) trigger_error( 'Bad call in ' . get_class($this) . '::' . $method .'. Method needs an argument' ); return $this->{ $property } = $args[0]; case 'has': return isset( $this->{ $property } ); case 'del': unset( $this->{ $property } ); return; } trigger_error( 'Bad call in ' . get_class($this) . '::' . $method ); } } On Tue, Jul 14, 2009 at 10:01 AM, Darren Karstens<darrenkarstens@xxxxxxxxxxxxxx> wrote: >> Oh and if one class uses methods in another class .... do I instansiate a >> new object of the other class .... I have seen use of OtherClass::Method >> .... is this better method of $obj = new OtherClass() use > > The :: is used to access static methods of a class. Static methods can > be used without creating an instance of the class because they dont > use any of the classes member variables. > For example say you have a class with a function for calculating the > area of a rectangle: > class SomeMathFunctions { > public function calculateRectangle($width, $height) { > return $width*$height; > } > } > > To use this function you would need to first create an instance of the > class then call the method using the normal -> : > $funcs = new SomeMathFunctions(); > $area = $funcs->calculateRectange(10,15); > > But if you create the function as static by using " public static > function calculateRectangle($width, $height) { " > then you can access the method by using just 1 call: > $area = SomeMathFunctions::calculateRectange(10,15); > > So for creating utility functions its better to use static methods > since you dont get the overhead of creating a new instance of the > class. > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Martin Scotta -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php