Writing a New Class
Posted on June 4, 2010 by robbychen
I have been writing and testing a new PHP class today to make me easier to create my new site menu bar called menu class. It contains a nested unordered list and a for loop to create the sub-menus. I wrote a couple of variables that use explode function to convert the input values to arrays. Here is the code I have written so far:
<?php
class menu {
function __construct() {
// Output the menu
echo "<div id='nav'>n";
echo "<ul>n";
$this->item("Home", "/");
$this->item("Blog", "blog");
$this->item("Portfolio", "portfolio",
"Resume=>resume,
About Me=>about");
$this->item("Projects", "projects",
"ICAP<br />Interagency Coalition on Adolescent Pregnancy=>icap");
$this->item("School Assignments", "assignments",
"CA 272<br />Pro Website Dev=>ca272,
CA 282<br />PHP & MySQL=>ca282,
CA 288<br />Adv ColdFusion=>ca288,
CS 110<br />Computer Concepts=>cs110");
echo "</ul>n";
echo "</div>n";
}
function item($menuItem, $linkLocation, $subItems="") {
echo "<li>n";
echo "<a href='{$linkLocation}' title='{$menuItem}'>$menuItem</a>n";
// Insert the sub-menu items if there is one
if (!empty($subItems)) {
$this->submenu($subItems);
}
echo "</li>n";
}
function submenu($itemaLink) {
$itemaLinks = explode(",", $itemaLink);
echo "<div class='submenu'>n";
echo "<ul>n";
for ($i=0; $i", $itemaLinks[$i]);
// This is used for my courses names
$title = explode("<br />", $itemLink[0]);
if(sizeof($title) == 1) {
$title[1] = $itemLink[1];
}
echo "<li>n";
echo "<a href='{$itemLink[1]}' title='{$title[1]}'>{$itemLink[0]}</a>n";
echo "</li>n";
}
}
echo "</ul>n";
echo "</div>n";
}
}
?>
Note the $itemLink variable from the code above. This is based on the array format. Equal greater than (=>) symbol is variable and value connector in an array. This makes me easier to remember to add a link to the corresponding item. I also added $title array later in the process to differentiate between course title (e.x. CA 288) and course name (e.x. Advanced ColdFusion Development). You can see the example on my beta site. Note that I have not added any JavaScript to animate the menu. I will add MooTools-based animation later after I complete writing this menu class.
- Share this:
Site Design by: Press75.com | Powered by: WordPress