I am trying to get to grips with Object Oriented PHP. Last week we were given a exercise to do, which creates a webpage, using a class and a client which will call the class. I am totaly not getting the hang of this, and i am getting so frustraited with this. We are moving on to the next lesson this week, and i am worried i am going to fall behind, because i just cannot figure it out. Webpage.class.php holds the webpage class, where all the functions ect are held, and then i am supposed to use the client usewebpage.php to create a new webpage, but a week of trying, i have got nowhere, and i am hitting a brick wall trying to figure out how to do it.
Is there any OO php peeps out there who could give me a hand please? I am in a mess.
Thank You.
Webpage.class.php
<?php
/**
*
* This is a skeleton class for a Webpage class. We have given you the method names
* and a very brief comment on what those methods need to do. You will need to implement the class yourself.
*
* Also, included with this file is a file that is a 'client' or 'user' of the class.
* If you look at the way the client is using the class it'll give you some more clues about how
* you might need to implement the methods that the client calls.
*
*/
/**
* The class should be called: Webpage
* you will need attributes to hold at least the main sections of a page: the head, body and footer
*/
Class Webpage {
private $head;
private $addToBody;
function __construct($head, $addToBody) {
// Store the doctype into the attribute of the class
$this->head = $head;
$this->addToBody = $addToBody;
//$this->styles = array() ??????;
}
function addToBody($toAdd){
$this->addToBody .= $toAdd;
return;
}
function getPage(){
return $this->head . $this->addToBody;
}
}
/** Methods:
* A constructor
* The constructor for the class should accept at least two arguments: the title of the page, and an array of
* css filenames that it will use to create the appropriate code in the head section to link to those stylesheets
* The constructor should create the head section and footer section and give a default value for the body section
*
* addToBody
* a method called 'addToBody' that will add text to the body attribute of the webpage. See the client to see how this method
* will be used - it'll give you a clue as to how to implement it.
*
* getPage
* a getPage method which has as a return value the various sections, head, body and footer, of the webpage concatenated together.
*
* Consider carefully the scope of all attributes and methods/functions. Remember to make scope as restrictive
* as possible while still being consonant with the class working.
*
*/
?>
usewebpage.php
<?php
/**
*
* @version $Id$
* @copyright 2008
*/
// require the class definition file
require_once( 'webpage.class.php' );
// create a new instance of the webpage class passing the title and an array of stylesheets to the constructor
$page = new Webpage ("test", array( "dream.css", "main.css" ) );
// add new text to the page body
$page->addToBody( "\n<p>This is my first page constructed with my webpage class</p>" );
$page->addToBody( "\n<p>Look a the source html of this page and notice the doctype, the title and stylesheets are all correctly included and the code should validate as xhtml</p>");
$page->addToBody( "<div id="header"><img src="images/needs2007_small.png" />");
$page->addToBody( "<h1>Header</h1>");
$page->addToBody( "</div>");
// echo the page contents back to the browser
echo $page->getPage();
?>