Professional Documents
Culture Documents
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
AprendiendoPHP5::AprenderPHP::AprenderUML
APRENDIENDOPHP5,enesteBlogencontrarsinformacinrelacionadaconPHP5,OPP,Patronesde diseo,UML,ZendFramework,BasesdeDatos,CSS,JQueryyherramientasdetrabajo.
LUNES26DEMARZODE2012
SEGUIDORES Participarenestesitio
Google Friend Connect
ActionHelpers
ParaZFlosActionHelperssonclasesquepermitirnserejecutadasporcualquier ControladormejorandosustancialmentelafuncionalidaddelosActionControllerso cambiandosucomportamientobajodemanda,detalformaqueindependizaciertastareas, permitereusaryhacerelcdigomuchomslimpio.Tienelaventajaademsdeser utilizadosentiempodeejecucin,sisenecesitanseutilizanperonosecarganpor defecto.ZendFrameworktienealgunosActionHelpersdiseadosquepuedenser ejecutadosdirectamentedentrodelosAction,enlalistaseencuentran:Url, ViewRenderer,Redirector,FlashMessenger,ContextSwitch,Cache,AjaxContext, AutoCompleteDojo,AutoCompleteScriptaculous,JsonyActionStack,ZFofreceadems laposibilidaddecrearnuestrospropiosActionHelpers.
BITACORA
CrearnuestrosActionHelpers
Los Action Helpers son clases que se extienden de Zend_Controller_Action_Helper_Abstract y siguiendo la convencin de nombres, la ubicacin fsica de los action que vienen por defecto es LIBRERA/ZEND/CONTROLLER/ACTION/HELPER, ahora bien, para adicionar cdigo personalizado o propio se sugiere hacerlo bajo la carpeta LIBRARY, nuestros Action HelperslospodemosguardarenLIBRARY/COD/HELPERS COD=CarpetadeCdigoPropio(Elnombreesindiferenteporejemplo:MYoLIB)
ENTRADAS POPULARES
VIDEOSZEND FRAMEWORK
CmollamarunActionHelper
PHPOrientadoa objetosII Continuando aunquealgo demoradopor compromisos laboralesDela largalistade trminosquese empleano aparecencuando sehablade OPP...
La
encargada de administrar los Action Helpers es Zend_Controller_Action_HelperBroker , mediante sus mtodos getHelper, addHelper, addPath, addPrefix, resetHelpers, podr obtener un helper por nombre, adicionar helper, adicionar la ruta de ubicacin, adicionar helpers por prefijo y hacer un reset al stack respectivamente. Esta clase permite cargar por demanda cualquier Action Helper, esto debido a que se comporta como una fbrica de helperregistradosdeformaesttica.
clase
que
esta
ZendFramework0
aprendiendophp5.blogspot.com
1/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
EstaclaseesrequeridaporZend_Controller_Action yunadesuspropiedadeses:
protected$_helper=null
Lacualguardaunainstanciadesuclase
ZendFramework0 Aspectos generales. Framework, Compendiode libreras,mdulos obibliotecasde software probadas,seguras ydeuso recurrenteenla pro... PHPOrientadoa objetosI Conlanueva versindelmotor ZendEngine2.0, PHP5.3.1trae consigomuchas ventajasrespecto asuantecesor PHP4respectoal manejodel...
conlatecnologade
PERFIL
AprendiendoPHP 5 Ing.Informtico, Tec.Ingenieriade Sistemas, especialistaen computacin. Aprendiz constantede PHP,OPP,Zend Framework, JQueryyMySQL. Diplomados : Redesy Comunicaciones, Domotica,Flash, SQL, Dreamweaver. Proyectosen ProcesoEditorde Contenidosen Zendframework Vertodomiperfil
Cmoregistrarlosyejecutarlos
classCod_Helpers_AyudasextendsZend_Controller_Action_Helper_Abstract{ publicfunctiondirect() { }
aprendiendophp5.blogspot.com
2/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
Unaalternativaparaelbootstrapesinicializarenelapplication.ini [production]
r e s o u r c e s . f r o n t C o n t r o l l e r . a c t i o n H e l p e r P a t h s . H E L P E R _ P r e f i x = " M y / H e l p e r / P a t h "
Podemos tambin llamar a otros Action Helper ubicados fsicamente en otra ruta, para hacerestosutilizamos: Zend_Controller_Action_HelperBroker::addPath( APPLICATION_PATH.'/controllers/helpers')
PublicadoporAprendiendoPHP5en15:18
S BADO17DEMARZODE2012
Mtodos_forward_redirect
Zend_Controller_Action tiene dos mtodos que nos permiten movernos fcilmente entre accionesdeuncontroladoraotro,elmtodo_forward()y_redirect(),ladiferenciaentre ellos radica bsicamente en que _forward () pasa de una accin a otra sin hacer una nuevapeticinHTTP,permaneciendoenlamismaURL
indexController.php
aprendiendophp5.blogspot.com
3/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
publicfunctionlistarAction() { } }
listar.phtml
Realicemosalgunoscambios
Controller publicfunctionindexAction() { $this>_forward('listar','index',null,array('nombre'=>'Carlos')) //_forward($action,$controller=null,$module=null,array$params=null) //Losparametrosconvalornullsonopcionales } publicfunctionlistarAction() { $this>view>nombre=$this>_getParam('nombre','sinnombre') //_getParamtienedosparametros,elprimeroeselnombrela //lavariablearecuperaryelsegundo(opcional)eselvalorpordefectosi //lavariablenoesta. }
Vista
aprendiendophp5.blogspot.com
4/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
Deestaformapodemospasarvaloresdeunaaccinaotra.Ahoranuestroejemploser utilizando _redirect() este mtodo utiliza dos parametros $this >_redirect($url,$opciones).
VIERNES16DEMARZODE2012
AccediendoalaAplicacin...IndexController
AlterminarlaconfiguracinbsicadetodoelentornodeZendFrameworkdesdenuestro navegadorpodemosejecutarhttp://contabilidad(segnnuestroejemplo)yvisualizaremos losiguiente:
aprendiendophp5.blogspot.com
5/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
http://contabilidad/default/index/index
Zend Framework puede trabajar bajo modulos y el nombre del modulo por defecto es "default".Todaslaspeticionesalnavegadorserealizaranbajoelsiguienteesquema: http://nombreProyecto/controlador/accion http://nombreProyecto/modulo/controlador/accion http://nombreProyecto/modulo/controlador/accion/variable1/valor1 NuestraURLhttp://contabilidad/indexindicaquenuestrocontroladorpordefectoes IndexControllerynuestraaccinpordefectoesindexAction,ademasquenuestravistapor defectoesindex.phtml,enlasiguientegrficaquedaexplicadoelproceso.
Lagrficaesunarepresentacinbsicadecomoseejecutaelproceso,faltandoelFront Controllercomoelcomponentequepermiteenrutartodaslaspeticiones.
ElIndexControllerbsicoes: classIndexControllerextendsZend_Controller_Action {
publicfunctionindexAction()
aprendiendophp5.blogspot.com
6/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
{ //actionbody }
CrearnuevosControlllersdesdeNetBeans
aprendiendophp5.blogspot.com
7/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
PublicadoporAprendiendoPHP5en09:20
JUEVES15DEMARZODE2012
InterfacesFluidasoFluentInterfaces
InterfacesfluiadasenZendFramework
Cadamtodosetterdebetenerreturn$thisdeestaformadevolverunareferenciadel objetodelcualfuellamado.
Ejemplo
http://www.techchorus.net/makingcodemorereadableusingfluentinterface
c l a s s C u s t o m e r { p r o t e c t e d $ _ n a m e p r o t e c t e d $ _ s t r e e t p r o t e c t e d $ _ c i t y p r o t e c t e d $ _ c o u n t r y p u b l i c f u n c t i o n s e t N a m e ( $ n a m e ) { $ t h i s > _ n a m e = $ n a m e r e t u r n $ t h i s
aprendiendophp5.blogspot.com
8/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
p u b l i c f u n c t i o n s e t S t r e e t A d d r e s s ( $ s t r e e t ) { $ t h i s > _ s t r e e t = $ s t r e e t r e t u r n $ t h i s p u b l i c f u n c t i o n s e t C i t y ( $ c i t y ) { $ t h i s > _ c i t y = $ c i t y r e t u r n $ t h i s p u b l i c f u n c t i o n s e t C o u n t r y ( $ c o u n t r y ) { $ t h i s > _ c o u n t r y = $ c o u n t r y r e t u r n $ t h i s p u b l i c f u n c t i o n s a v e ( ) { / / S a v e t h e i n f o r m a t i o n t o a d a t a b a s e e c h o " C u s t o m e r i n f o r m a t i o n s a v e d " ? >
Seejecutaradelasiguienteforma
$ c u s t o m e r = n e w C u s t o m e r $ c u s t o m e r > s e t N a m e ( ' J a m e s B o n d ' ) > s e t S t r e e t A d d r e s s ( ' A b c s t r e e t ' ) > s e t C i t y ( ' L o n d o n ' ) > s e t C o u n t r y ( ' E n g l a n d ' ) > s a v e ( ) ? >
PublicadoporAprendiendoPHP5en10:20
MIRCOLES18DEENERODE2012
Bootstrapping
El Bootstrapping es el proceso de arranque de toda la aplicacin que Zend_Tool ha diseado,estcompuestoportresarchivoas:index.php,application.iniyBootstrap.php index.php Seencuentradentrodeldirectoriopublicyeselprincipalpuntodeentradaparatodaslas peticiones realizadas a la aplicacin. Todas las solicitudes realizadas son enrutadas a travsdeestearchivo.
aprendiendophp5.blogspot.com
9/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
Sedescribebrevementesucdigo Cdigo: //Definepathtoapplicationdirectory defined('APPLICATION_PATH')||define('APPLICATION_PATH', realpath(dirname(__FILE__).'/../application')) //Defineapplicationenvironment defined('APPLICATION_ENV')||define('APPLICATION_ENV', (getenv('APPLICATION_ENV')?getenv('APPLICATION_ENV'):'production')) //Ensurelibrary/isoninclude_path set_include_path(implode(PATH_SEPARATOR,array(realpath(APPLICATION_PATH. '/../library'),get_include_path(), ))) /**Zend_Application*/ require_once'Zend/Application.php' //Createapplication,bootstrap,andrun $application=newZend_Application(APPLICATION_ENV,APPLICATION_PATH. '/configs/application.ini') $application>bootstrap()>run() La constante APPLICATION_PATH define la ruta del directorio application, este valor permite acceder a todos los archivos almacenados dentro de la estructura del directorio creado. La constante APPLICATION_ENV define la forma como se comportar la aplicacin en entornos de desarrollo para que muestre o no mensajes de error, bien sea que nuestra aplicacin este en produccin o desarrollo, esto se logra teniendo en cuenta la funcin getenv()quepermitecomprobarlasvariablesdeentornodelsistema. En la siguiente lnea se debe garantizar la inclusin de la librera de clases de Zend Framework mediante el include_path. Para inicializar y crear la aplicacin se vincula medianterequire_oncela clase Application.php , sta mediante su constructor pasa dos valores,elambienteoentornodedesarrolloyelpathdelarchivoinicialdeconfiguracin application.ini. Application.phpseencargatambinentreotrascosasdeautocargarlasclasessolicitadas cuandosecreansusrespectivasinstancias,estoesfacilitadoporlaclase require_once 'Zend/Loader/Autoloader.php' adems, mediante el patrn de diseo Singletonpermiteslocrearunainstanciadedichaclase.
aprendiendophp5.blogspot.com
10/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
publicstaticfunctiongetInstance() { if(null===self::$_instance){ self::$_instance=newself() } returnself::$_instance } EstaclaseAutoloader.phptambincontienemtodosparaelcontroldenamespaces,por defectolosnamespacesactivossonZendyZendX Comoltimalneadelarchivoindex.phpaparece $application>bootstrap()>run() Boostrap()inicializalaaplicacinyelmtodorun()inicializaelprocesoMVC,laformade ejecutar dos mtodos seguidos se conoce como interfaces fluidas, mtodo sugerido por MartinFowlerdondesepretendesimplificarlautilizacindemtodosdelaclase,paraque estofuncionecorrectamentecadamtodoretornarlamismainstanciadelobjeto. Para que index.php se convierta en nuestra entrada principal, se tiene que activar el modulo mod_rewrite del servidor Web Apache para reescribir URLs. adems crear un archivoconnombre.htaccess.Zend_Toolhaceestopornosotrosyloubicaenlacarpeta publicalladodeindex.php. public/.htaccess
SetEnvAPPLICATION_ENVdevelopment RewriteEngineOn RewriteCond%{}REQUEST_FILENAMEs[OR] RewriteCond%{}REQUEST_FILENAMEl[OR] RewriteCond%{}dREQUEST_FILENAME RewriteRule^.*$[NC,L] RewriteRule^.*$index.php[NC,L] En ste archivo tambin podemos asignar a la variable de entorno SetEnv APPLICATION_ENVcomodesarrollodevelopmentyluegolapodramoscambiarsegn elambientedelaaplicacin. ParaqueelpatrndediseoMVCdeZendFrameworkfuncionecorrectamenteelarchivo index.phpy.htaccessdebernestararticuladosenformaoptima,estoconstituyelabase deotropatrndediseoFrontController El Front Controller proporciona un punto de entrada nico que controla y gestiona las peticionesWebrealizadas,ldecidequcontroladoroqueaccinsellamarcuandose realiceunapeticin.
aprendiendophp5.blogspot.com
11/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
Application.ini Nuestra aplicacin necesita un archivo de configuracin bsico para inicializar todo el entornodetrabajo,Zend_Toolcreaenformaautomticaestaconfiguracinpreviaenla rutaapplication/configs/application.ini yelcontenidoiniciales: [production] phpSettings.display_startup_errors=0 phpSettings.display_errors=0 includePaths.library=APPLICATION_PATH"/../library" bootstrap.path=APPLICATION_PATH"/Bootstrap.php" bootstrap.class="Bootstrap" appnamespace="Application" resources.frontController.controllerDirectory=APPLICATION_PATH"/controllers" resources.frontController.params.displayExceptions=0 [staging:production] [testing:production] phpSettings.display_startup_errors=1 phpSettings.display_errors=1 comentarios [development:production] phpSettings.display_startup_errors=1 phpSettings.display_errors=1 resources.frontController.params.displayExceptions=1
Seaprecialosdiferentesambientesenloscualeslaaplicacinpuedeserejecutada,cada seccin (staging,testing y development) sobreescribira los mismos valores de la seccin principal [production] , de esa forma se pueden generar ambientes especficos o de pruebasegnsenecesite,cadaunadeestasseccionesheredalaslneasdeconfiguracin delaseccinprincipal[production] Bajoapplication.inisepuedenconfigurarrecursosparaserinicializados,porejemplopara inicializarlaconexinanuestrabasededatos. [production] resources.db.adapter=PDO_MYSQL resources.db.params.host=localhost resources.db.params.username=root resources.db.params.password=clave123 resources.db.params.dbname=school2.0 ParainicializarZend_Layout. [production]
aprendiendophp5.blogspot.com
12/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
resources.layout.layout="NameOfDefaultLayout" resources.layout.layoutPath=APPLICATION_PATH"/layouts/scripts/"
Bootstrap El ltimo de los archivos que compone el bootstrapping es Bootstrap.php ste se encuentraubicadoenlarutaapplication/Bootstrap.phpyescreadoporZend_Toolpara facilitarelprocesodearranquedelaaplicacin. Inicialmente se encuentra vacio, a la espera de mtodos especficos que se ejecutaran permanentementedentrodelaaplicacin. classBootstrapextendsZend_Application_Bootstrap_Bootstrap { } Paradefinirunrecursolosnombresdelosmtodosdebernserprotegidos(protected)y comenzarcon_initdeestaformacuandoseinicialicelaaplicacinatravsdeindex.php todoslosmetodosquecumplanconesteprefijosernejecutados. classBootstrapextendsZend_Application_Bootstrap_Bootstrap { protectedfunction_initFoo() { //... } }
PublicadoporAprendiendoPHP5en14:03
MARTES17DEENERODE2012
ZendFrameworkIEstructuradelsitio
Estructuradelproyecto
aprendiendophp5.blogspot.com
13/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
El directorio application es el "contenedor" de nuestra aplicacin bajo MVC, aqu estar el cdigo de: modelos, vistas controladores y archivos de configuracin como application.ini yBootstrap.php.
De acuerdo a esta estructura Zend Framework 1.11.11 implementaZend_Applicationparafacilitarlaconfiguracindebasesdedatos,manejo de vistas( HTML), reuso de cdigo, archivo de arranque con posibilidad de diferentes ambientes o entornos de trabajo (produccin, desarrollo, pruebas),registrodeplugins,
registrodeactionhelpersymuchoms
Directorio configs: este tiene por defecto el archivo application.ini el cual permite configurarentornosdelaaplicacin,rutadelalibreria,rutadecontroladores. Estedirectoriosepuedecontenerdiferentesarchivos .iniloscualespuedenserllamados desdeelarchivoBootstrap.php
Directoriocontrollers:pordefectoZend_ToolscreaIndexControlleryErrorController.La claseIndexControllertienedosmetodosinit()eindexActionsincdigoaejecutar.
Directoriomodels:inicialmentevacio
Directorio views: dentro de este se encuentra el directorio helpers(ayudantes de las vistasquepermitenreducirysimplificarcdigorepetitivo)y scripts, aquencontrarpor
aprendiendophp5.blogspot.com
14/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
cadacontrollerunacarpetaysuscorrespondientesvistas(cdigoHTML).
Directorio Public: Es el directorio de acceso publico, dentro de l se pueden crear subdirectorioscss,javascripts,images.Eslaentradaprincipaldelaaplicacin,parapoder realizarestafuncinutilizadosarchivos.htaccesseindex.php
Archivo.htaccess
Al tener nuestro VirtualHost activo, todas las peticiones URL hacia nuestro proyecto pasaran por el archivo index.php, esto lo garantiza el archivo .htaccess,(este es un pequeo archivo de texto que permite modificar algunas directivas de Apache de directoriosoarchivos).Laconfiguracinpordefectodeestearchivoes:
VIERNES6DEENERODE2012
ZendFramework0InstalacinNetBeans7.0.1
NetBeans7.0.1IDE(integrateddevelopmentenvironment)
aprendiendophp5.blogspot.com
15/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
ParaqueNetBeanssesincroniceconnuestroZendFrameworkysepuedautilizarZend toolsdesdeesteIDE,vamosalalneadecomandosydigitamos: zfsetupconfigfile Dandocomorespuesta: Configfilewrittento\DocumentsandSettings\Administrador/.zf.ini Esto indica que ha creado dentro de nuestro directorio de usuario un archivo zf.ini que contienealgosimilaralosiguiente: php.include_path=".C:\zend\libraryC:\xampp\php\PEAR"
Seleccionamoslapestaageneralyverificamosquelarutadeubicacindephp.exeeste correctayadicionamosenelincludepathlarutadondeseencuentralalibreriadeZF
Luego en la pestaa ZEND verificamos la ruta donde se encuentra el archivo zf.bat y damosclickenRegisterProviderparaactivarelusodeZendTools,conestomodificamos nuestroarchivozf.inicreadoanteriormente
aprendiendophp5.blogspot.com
16/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
Despues de registrar el proveedor, se debe copiar el archivo NetBeansCommandsProvider.php que esta ubicado en C:\Archivos de programa\NetBeans7.0.1\php\zendylodebepegareneldirectoriodondeseencuentrala librera de zf C:\zend\library si esto no se realiza y usted piensa utilizar la lnea de comandosdesdeunaconsola,saldrunerrorynopermitirejecutarcomandos. Conestosprocedimientoslistos,podemosiniciarlacreacindenuestroproyecto.
Damoselnombredelproyectoylarutadelcdigofuente,seleccionamoslaversinde phpyelencoding
aprendiendophp5.blogspot.com
17/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
SeleccionamoselFrameworkatrabajarenestecasoZendPHPWebFramework
AlpresionarFINISHsecreartodalaestructuradenuestroproyecto
aprendiendophp5.blogspot.com
18/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
VerificamoslacorrectaconfiguracindeZendToolsdelasiguienteforma:nosubicamos enelnombredelproyecto,clickderecho,opcinzend,ejecutarcomando(RunCommand)
Debeaparecerlosiguiente:
Deestaformaquedahabilitadalaposibilidaddeejecutartodosloscomandoseinteractuar muchomsfcilentreNetBeansyZendFramework.
PublicadoporAprendiendoPHP5en09:22 Etiquetas:NetBeans7.0.1
aprendiendophp5.blogspot.com
19/20
30/03/12
Aprendiendo PHP5 :: Aprender PHP :: Aprender UML - Desarrollo de sitios Web - Ing. C
Pginaprincipal
Suscribirsea:Entradas(Atom)
Entradasantiguas
ArmeniaDigital.com.PlantillaPictureWindow.ConlatecnologadeBlogger.
aprendiendophp5.blogspot.com
20/20