30
lip
08

Integracja Zend Framework i OPT

Tym razem przyszedł czas na Zend Framework w parze z OPT. Nie próbuję zintegrować wszystkich możliwych frameworków z OPT, tym razem firma zmusiła mnie do pracy z ZF mimo, że preferowałem do tej pory CI a następnie zacząłem pracę z Kohaną.


Ale do rzeczy. Oto moja struktura katalogów, może się przydać jako poglądowa, gdy ktoś ma inną a chciałby zintegrować ZF z OPT według mojego opisu:

  • application ( a w nim: controllers, models, views, views_c )
  • library ( a w nim: zend i opt )
  • public ( a w nim: images, scripts, styles )

Do katalogu library/opt wgrałem wszystkie pliki biblioteki OPT. Natomiast w katalogu głównym application stworzyłem plik OPT.php a w nim wklepałem następujący kod:

DEFINE( ‘OPT_DIR’, ‘./library/opt/’ );
require_once( ‘Zend/View/Interface.php’ );
require_once( OPT_DIR . ‘opt.class.php’ );

class Application_OPT implements Zend_View_Interface
{
protected $_opt;

public function __construct( $path = ‘./application/views/’, $compile = ‘./application/views_c/’, $cache = ”, $charset = ‘UTF-8′ )
{
$this->_opt = new optClass();

$this->setScriptPath( $path );
$this->setCompilePath( $compile );
if( !empty( $cache ) )
$this->setScriptCache( $cache );

$this->_opt->charset = $charset;
$this->_opt->httpHeaders( OPT_HTML );
}

public function setScriptPath( $path )
{
if( is_readable( $path ) )
{
$this->_opt->root = $path;
return;
}

throw new Exception( ‘Nieprawidłowa ścieżka do szablonów’ );
}

public function setBasePath( $path, $prefix = ‘Zend_View’ )
{
$this->setScriptPath( $path );
}

public function addScriptPath( $path, $prefix = ‘Zend_View’ )
{
$this->setScriptPath( $path );
}

public function addBasePath( $path, $prefix = ‘Zend_View’ )
{
$this->setScriptPath( $path );
}

public function getScriptPaths()
{
return array( “root” => $this->_opt->root,
“compile” => $this->_opt->compile,
“cache” => $this->_opt->cache );
}

public function getEngine()
{
return $this->_opt;
}

public function assign( $key, $value = null )
{
if( is_array( $key ) )
$this->_opt->assignGroup( $key );
else
$this->_opt->assign( $key, $value );
}

public function clearVars()
{
foreach( $this->_opt->data AS $key => $value )
unset( $this->_opt->data[$key] );
}

public function render( $name )
{
return $this->_opt->fetch( $name );
}

public function __set( $key, $value )
{
$this->assign( $key, $value );
}

public function __get( $key )
{
return $this->_opt->data[$key];
}

public function __isset( $key )
{
return array_key_exists( $key, $this->_opt->data );
}

public function __unset( $key )
{
unset( $this->_opt->data[$key] );
}

Na początek stała ze ścieżką do OPT oraz dołaczenie pliku z interfejsem widoku Zenda, który następnie jest implementowany. Wszystkie podane metody w kodzie muszą zostać zdefiniowane. Następnie dodałem jeszcze kolejne metody już dla własnego użytku – nie muszą one zostać zapisane w pliku:

public function setCompilePath( $path = ” )
{
if( is_readable( $path ) && is_writeable( $path ) )
$this->_opt->compile = $path;
}

public function setScriptCache( $path = ” )
{
if( is_readable( $path ) && is_writeable( $path ) )
$this->_opt->cache = $path;
}

No i w odpowiednim miejscu musi się znaleźć klamra kończąca definicję klasy. Przykładowe użycie w kontrolerze:

$view = new Application_OPT();
$view->assign( ‘title’, ‘Tytuł’ );
echo $view->render( ‘test.tpl’ );

I to wystarczy, aby cieszyć się tym systemem szablonów w ZF.


0 Odpowiedzi do “Integracja Zend Framework i OPT”



  1. Nie ma jeszcze komentarzy

Dodaj komentarz




 

lipiec 2008
P W Ś C P S N
« cze   sie »
 123456
78910111213
14151617181920
21222324252627
28293031  

a

Strony