CommandResolver
[
class tree: CommandResolver
] [
index: CommandResolver
] [
all elements
]
Todo List
Packages:
MVClasses
CommandResolver
Commands
Controler
Event
EventHandler
Filter
Registry
RequestResponse
TemplateView
ViewHelper
Source for file FileSystemCommandResolver.php
Documentation is available at
FileSystemCommandResolver.php
<?php
/**
* MVClasses
*
* LICENSE
*
* "THE BEER-WARE LICENSE" (Revision 42):
* "Sven Strittmatter" <ausserirdisch@sven-space.de> wrote this file.
* As long as you retain this notice you can do whatever you want with
* this stuff. If we meet some day, and you think this stuff is worth it,
* you can buy me a beer in return.
*
*
@category
MVClasses
*
@package
CommandResolver
*
@copyright
Copyright (c) 2007 Sven Strittmatter
*/
/**
*
@see
CommandResolver
*/
require
dirname
(
__FILE__
)
.
"/CommandResolver.php"
;
/**
* Ein CommandResolver welcher anhand von Dateinamen aufloest.
*
* Der FileSystemCommandResolver extrahiert aus dem Request-Objekt
* den Command-Namen. Dieser muss dem dem Request-Objekt als Parameter
* bekannt sein. Aus diesem Command-namen erzeugt der Resolver
* den Dateinamen der Command-Klasse, inkludiert diese und liefert
* eine Instanz dieser Klasse zurueck.
*
*
@category
MVClasses
*
@package
CommandResolver
*
@copyright
Copyright (c) 2007 Sven Strittmatter
*
@author
"Sven Strittmatter" <ausserirdisch@sven-space.de>
*
@version
1.0
*
@link
http://www.sven-space.de/code/php/MVClasses
*/
class
FileSystemCommandResolver
implements
CommandResolver
{
/**
* Der Pfad zu dem Verzeichnis in dem sich die
* Command-Klassen liegen.
*
*
@access
private
*
@var
string
*/
private
$_path
;
/**
* Speichert das Default-Command das zur�ckgegeben
* wird falls kein passendes Comamnd-Objekt ermittelt
* werden konnnte.
*
*
@access
private
*
@var
string
*/
private
$_default
;
/**
* Konstruktor
*
*
@access
public
*
@param
string
$path
Pfad zu den Comamnd-Klassen
*
@param
string
$default
Name des Default-Commands
*/
public
function
__construct
(
$path
,
$default
)
{
$this
->
_path
=
$path
;
$this
->
_default
=
$default
;
}
/**
* Ermittelt anhand des uebergebenen Request-Objektes
* das passende Command-Objekt und liefert es zurueck.
* Dazu muss dass Requestobjekt den parameter "cmd" mit
* dem Command-namen bereitstellen. Ist diese Parameter
* nicht verfuegbar wird das Default-Command zurueck-
* geliefert. Konnte kein Comamnd-Objekt erzeugt werden
* wird null zurueckgegeben.
*
*
@access
public
*
@param
Request
$r
*
@return
Command
*/
public
function
getCommand
(
Request
$r
)
{
try
{
if
(
$r
->
issetParameter
(
"cmd"
))
{
$command
=
$this
->
_loadCommand
(
$r
->
getParameter
(
"cmd"
))
;
}
else
{
$command
=
$this
->
_loadCommand
(
$this
->
_default
)
;
}
if
(
$command
instanceof
Command
)
{
return
$command
;
}
else
{
return
null
;
}
}
catch
(
Exception
$e
)
{
return
null
;
}
}
/**
* Laedt eine Command-Klasse anhand des Command-Namen
* und gibt eine Instanz der Klasse zurueck. Die Command-
* Klasse muss den Namen "{$name}Command" besitzen und die
* Datei muss den Namen "{$name}Command.php" tragen.
*
* Falls die Datei nicht geoeffnet werden kann oder die Klasse
* nicht geladen werden kann wird eine Exception geworfen.
*
*
@throws
Exception
*
@access
protected
*
@param
string
$name
*
@return
Object
*/
protected
function
_loadCommand
(
$name
)
{
$name
=
$name
.
"Command"
;
if
(
!
class_exists
(
$name
,
false
))
{
$file
=
"
{
$this
->
_path
}
/{
$name
}
.php
"
;
if
(
!
file_exists
(
$file
))
{
throw
new
Exception
(
"
File not found:
$file
!
"
)
;
}
include_once
$file
;
if
(
!
class_exists
(
$name
,
false
))
{
throw
new
Exception
(
"
Class not exists:
$name
!
"
)
;
}
}
return
new
$name
(
)
;
}
Documentation generated on Sun, 02 Aug 2009 17:14:56 +0200 by
phpDocumentor 1.4.2