You can't do that.

The whold class has to be in a single contiguous file.

Last I checked.

On the plus side, it's incredibly unlikely that having the functions
in separate files was a Good Idea...

On Fri, May 12, 2006 12:34 pm, Edward Vermillion wrote:
> I'm doing some re-writing of a huge class I've got (don't think OOP
> cause it's really not, just the usual class full of functions). What
> I'm doing is moving the functions out of the class and into separate
> files so the (I'm hoping) memory footprint will be smaller.
>
> The basic setup I started with is:
>
> class foo {
>
>       function doSomething()
>       {
>               switch($var) {
>               case '1':
>                       $this->bar();
>                       break;
>               case '2':
>                       $this->baz();
>                       break;
>               }
>       }
>
>       function bar(){ // do something useful }
>
>       function baz(){ // do something else useful }
>
>       [...]
> }
>
> I've moved bar() and baz() into their own file and am now including
> those files from the original functions as so:
>
> class foo {
>
>       function doSomething()
>       {
>               switch($var) {
>               case '1':
>                       $this->bar();
>                       break;
>               case '2':
>                       $this->baz();
>                       break;
>               }
>       }
>
>       function bar(){ include_once 'bar.php'; newBar(); }
>
>       function baz(){ include_once 'baz.php'; newBaz(); }
>
>       [...]
> }
>
> where newBar() and newBaz() are just the functions copied from the
> original class like
>
> bar.php
> <?php
> function newBar(){ // do something useful }
>
> Now the interesting bit I don't quite comprehend...
>
> var_dump($this); from inside newBar() returns null.
>
> Sort of unexpected behavior to me, but only slightly. Shouldn't the
> newBar() function pick up the scope from foo::bar() since, as I
> understand includes, it's the same as writing the code in the file
> where the include statement is at?
>
> Outside of newBar() in bar.php var_dump($this) gives me the foo class.
>
> Is it because there is basically a function within a function at this
> point and somehow the scope of $this is being lost? I would have
> thought that it would carry down, but obviously I'm wrong.
>
> Not looking for a fix really, I'm passing in a reference to $this to
> newBar() so it's all cool there, just looking for an explanation to
> have for future reference.
>
> PHP4.4.2 btw... if that makes any difference.
>
> Thanks!
> Ed
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Like Music?
http://l-i-e.com/artists.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to