Build a Website with the Zend Framework

In this third part of a four-part series on MVC and the Zend framework, you’ll start building your first website based on the Zend framework and the model-view-controller pattern. This article is excerpted from chapter 25 of the book Beginning PHP and Oracle: From Novice to Professional, written by W. Jason Gilmore and Bob Bryla (Apress; ISBN: 1590597702).

Creating Your First Zend Framework-Driven Web Site

Its a fair bet that even a very simple example will leave you utterly convinced that frameworks are a development tool you won’t be able to live without.

Create the Directory Structure

By default, the Zend Framework relies upon a highly organized application directory structure known as the conventional modular directory structure. In its most basic form, this structure looks like this:

Web server document root/
    index.php
    application/
        modules/
           
default/
                controllers/
                views/
                    scripts/

This structure opens up the possibility to manage multiple hosted MVC applications within the same location. In a situation where multiple MVC applications exist, you would add additional module directories under the modules directory. However, for the purposes of the examples in this chapter, we’ll just stick with a single (default) application.

Therefore, a simple Web application might be structured as follows. Note how there are three controllers and each of those controllers matches up to a corresponding view directory:

Web server document root/
    index.php
    application/
       
modules/
            default/
               
controllers/
                    IndexController.php
                    BookController.php
                    AboutController.php
                views/
                    footer.phtml
                    header.phtml
                    scripts/
                        about/
                            contact.phtml
                            index.phtml
                        book/
                            index.phtml
                            toc.phtml
                        index/
                            index.phtml

Don’t worry about the oddly named files and structure too much at this point. Just understand that based on the provided controllers and views and a typical configuration, the following URLs would work:

http://www.example.com/ http://www.example.com/about/ http://www.example.com/about/contact/ http://www.example.com/book/ http://www.example.com/book/toc/

Because this directory structure won’t suit every developer, it’s possible to change the default settings; however, coverage of this feature is out of the scope of this chapter.

{mospagebreak title=Create the Front-End Controller}

To begin, create a file named index.php and place the code found in Listing 25-1 inside it. The index.php script is known as the front-end controller and, believe it or not, it will be responsible for ensuring that every request for this application receives the appropriate response. This document should reside in your desired application document root.

Additionally, in the same directory, create a directory named application, and in that directory create a modules directory, and within that a default directory. Finally, within the default directory create two more directories named controllers and views, and within the views directory create a directory named scripts, each of which you’ll use later.

Listing 25-1. The Application’s Front-End Controller (index.php)

<?php 

    // Load the Front Controller class
   
require_once(‘Zend/Controller/Front.php’);

    // Instantiate an instance of the Front Controller Class
   
$frontController = Zend_Controller_Front::getInstance();

    // Point to the module directory
   
$frontController->addModuleDirectory(‘./application/modules’);

    // Throw exceptions (useful during debugging)
   
$frontController->throwExceptions(true);

    // Start the Front Controller
   
$frontController->dispatch();

?>

It is assumed the Zend Framework application will reside in the server’s document root. However, because this isn’t always possible, you can use the setBaseUrl() method to override the front-end controller’s default behavior. See the Zend Framework documentation for more information.

The Controllers

Next we’ll create two controllers, namely IndexController.php and AboutController.php. These views should be placed in the directory application/modules/default/controllers. First, create the default controller class (IndexController.php), which defines the action that will occur when the Web site’s home page is requested (for the sake of consistency throughout the remainder of this chapter we’ll refer to http://www.example.com/ as the target domain). This script is shown in Listing 25-2.

Listing 25-2. The IndexController Class (IndexController.php)

<?php 

    // Load the Zend_Controller_Action class
   
require_once(‘Zend/Controller/Action.php’);

    class IndexController extends Zend_Controller_Action
   
{

        // Accessed through http://www.example.com/
        public function indexAction()
       
{
           
$this->view->title = "Welcome to Our Chess Club Web Site!";
        }

    }

?>

In this example, I’ve created a view property named title that will be used to assign the Web page’s title.

Finally well create one more controller intended to display information pertinent to the Web site’s purpose and, for the sake of demonstration, some information about the visiting user. This controller, titled AboutController.php, is displayed in Listing 25-3.

Listing 25-3. The AboutController Controller (AboutController.php)

<?php 

    // Load the Zend_Controller_Action class
   
require_once(‘Zend/Controller/Action.php’);

    class AboutController extends Zend_Controller_Action
   
{

    // Accessed through http://www.example.com/about/
   
public function indexAction()
   
{
       
$this->view->title = "About Our Chess Club";
    }

    // Accessed through http://www.example.com/about/you/
   
public function youAction()
   
{
       
// Page title
       
$this->view->title = "About You!";

        // Retrieve the user’s IP address
       
$this->view->ip = $_SERVER['REMOTE_ADDR'];

        // Retrieve browser information 
        $this->view->browser = $_SERVER['HTTP_USER_AGENT'];
    }

}

?>

Please check back next week for the conclusion to this article.

[gp-comments width="770" linklove="off" ]

antalya escort bayan antalya escort bayan Antalya escort diyarbakir escort