Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    6

    Consigli vari Zend Framework

    Salve,
    vorrei qualche consiglio sulla corretta implementazione di due aspetti:
    1° (più PHP che ZF) Le classi "contenitori" di metodi che effettuano le varie operazioni con i model (find, save etc), in che modo si implementano più correttamente?
    Io ho dichiarato tutto static tipo:
    codice:
    class Application_Model_PagesMapper
    {
    	protected static $_dbTable;
    
        private static function setDbTable($dbTable)
        {
            if (is_string($dbTable)) {
                $dbTable = new $dbTable();
            }
            if (!$dbTable instanceof Zend_Db_Table_Abstract) {
                throw new Exception('Invalid table data gateway provided');
            }        
            self::$_dbTable = $dbTable;        
        }
    
        private static function getDbTable()
        {
            if (null === self::$_dbTable) {
                self::setDbTable('Application_Model_DbTable_Pages');
            }
            return self::$_dbTable;
        }
    
        public static function save(Application_Model_Page $page)
        {
            $data = array(
            	'id' => $page->getId(),
                'author_id'   => $page->getAuthorId(),
                'create_date' => $page->getCreateDate(),       
            	'name' => $page->getName(),
            	'content' => $page->getContent(),
            	'is_home' => $page->isHome(),     
            );
    
            if (null === ($id = $page->getId())) {
                unset($data['id']);
                self::getDbTable()->insert($data);
            } else {
                self::getDbTable()->update($data, array('id = ?' => $id));
            }
        }    
        
        public static function find($id)
        {
            $result = self::getDbTable()->find($id);
            	
            if (0 == count($result)) {        	
                return null;
            }
            $page = new Application_Model_Page();
            $row = $result->current();
            $page->setId($row->id)
            		  ->setAuthorId($row->author_id)
                      ->setCreateDate($row->create_date)
                      ->setName($row->name)
                      ->setContent($row->content)
                      ->isHome($row->is_home);  
            return $page;                
        }
    }
    vi sono modi più corretti? tipo il singleton?

    2° Devo implementare un sistema di visualizzazione di pagine html statiche salvate su db raggiungibili via "alias" diretto. Ho creato un controller "page" con la action "show" che passandogli l'id della pagina sul db me la porta in view, poi ho registrato il seguente plug-in per reindirizzare le richieste che non hanno controller ("!$front->getDispatcher()->isDispatchable($request)") al controller "page/show/id/n" nel caso esista una pagina con quell'alias:
    codice:
    class My_Route extends Zend_Controller_Plugin_Abstract
    {
    	public function preDispatch(Zend_Controller_Request_Abstract $request)
        {
        	$front = Zend_Controller_Front::getInstance();
        	if( !$front->getDispatcher()->isDispatchable($request) )  
    		{  		    	 
    		    $path =  ltrim($request->getPathInfo(), '/');
    	    	$page = Application_Model_PagesMapper::findByAlias($path);
    
    	    	if (null != $page)
    	    	{
    	    		$request->setControllerName('page')
    	    				->setActionName('show')
    	    				->setParam('id', $page->getId());
    	    	}
    	    	
    		}
        	
        }
    }
    il tutto a funzionare funziona, ma vorrei consigli su come e se si può far di meglio (ho cominciato da poco ad usare ZF).
    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    6
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    6
    nessuno?

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    se fai a modo tuo puoi sbagliare, se trovi un pattern che realizza quello che volevi fare vai sul sicuro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.