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”