Re: creating new class from wrapper class (OOP question)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Henrik Gemal wrote:
In a image gallery I have to class'es:

class GPicFilePicture extends GPicFileType
class GPicFileMovie extends GPicFileType

both of them are based on:

abstract class GPicFileType

In my code I need to create a new GPicFilePicture. To avoid duplicated
code I've create a wrapper class:

class GPicFile

that does something like this:

if (fileextension == "jpg")
  return new GPicFilePicture();
else
  return new GPicFileMovie();

I assume the above is in your constructor, and running php5.
if so then what your returning is not being returned... php is returning
the GPicFile object you just asked for instead.

try something like:

GPicFile
{
	function __construct($f)
	{
		if (fileextension == "jpg")
			$this->decoration = new GPicFilePicture();
		else
			$this->decoration = new GPicFileMovie();
	}

	function getFileDate()
	{
		$this->decoration->getFileDate()
	}
}

which I believe is called a decorator pattern (don't quote me.)


so my PHP code looks like:
$file = new GPicFile($filename);

getFileDate() is implemented in both GPicFilePicture and GPicFileMovie.

Now I try to do:
$file->getFileDate();

I get an error saying:
Call to undefined method GPicFile::getFileDate()

Where am I going wrong?


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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux