Posts Tagged ‘Zend Framework’

Alliberat Zend Framework 2 versió 2.1.3

dimecres, febrer 27th, 2013

El 21 de Febrer passat va ser alliberada la versió 2.1.3 del Framework de Zend.

Podeu descarregar-lo des d’aquí: http://framework.zend.com/downloads/latest

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat Zend Framework 2.0

diumenge, setembre 9th, 2012

El proppassat dia 5 de Setembre els creadors de PHP van alliberar Zend Framework 2.0.

Poc us en puc dir doncs encara estic estudiant-ne les funcionalitats, malgrat el que vaig començar a furgar a la beta i el que vaig esbrinar promet.

Més informació al seu bloc:

http://framework.zend.com/blog//zend-framework-2-0-0-stable-released.html

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat Zend Framework 1.11.6 i 1.10.9

dissabte, maig 7th, 2011

Noves versions del Framework Zend foren alliberades el proppassat 5 de Maig.

Aquestes versions inclouen la solució de 60 errors.

Zend Framework és el Framework PHP dels creadors de PHP, i és molt emprat a Internet.

Entre molts productes, el programari de comerç electrònic Magento, es basa en Zend Framework.

Veure anunci oficial.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Instal·lació de Selenium amb PHPUnit per a windows

dimecres, novembre 17th, 2010

Unes petites instruccions per a instal·lar Selenium RC amb PHPUnit a windows.

Selenium és una eina per a testejar la funcionalitat de les nostres aplicacions web.

Hi ha un complement (plugin) per a Firefox que suporta guions (scripts):

Selenium IDE

Però té moltes menys funcionalitats que la versió servidor i quan intervé Ajax no és capaç de detectar les respostes siguin correctes o incorrectes.

Amb la versió servidor:

Selenium Remote Control (RC)

ho podrem controlar absolutament tot, i veurem les passes que segueix el nostre guió alhora que el navegador anirà fent les instruccions que indica el nostre codi PHP tal i com si fòrem nosaltres qui premèrem els butons al navegador (i veurem tot el que passa).

Primer cal instal·lar la darrera versió de PEAR, al moment d’escriure aquestes línies la 1.9.1.

Per a aquest fi teclejarem si emprem ZendServer:

c:\Program Files\Zend\ZendServer\bin\go-pear.bat

Si emprem wamp o php sense wamp:

c:\wamp\bin\php\php5.3.3\go-pear.bat

Un cop això farem:

pear channel-discover pear.phpunit.de

pear channel-discover components.ez.no

pear channel-discover pear.symfony-project.com

I un cop fet això:

pear install phpunit/PHPUnit

Si tinguèssim una versió molt antiga de PHP, per exemple la versió 5.2.11, i de PEAR, obtindriem un error i caldrà que actualitzem primer PEAR:

pear upgrade

Ara caldrà modificar la secció include_path de l’arxiu php.ini per afegir-hi les rutes a PEAR i al Framework de PHPUnit.

Per a Zend:

C:\Program Files\Zend\ZendServer\bin\PEAR;
C:\Program Files\Zend\ZendServer\bin\PEAR\PHPUnit\Framework;

Per a wamp:

include_path=”.;C:\Selenium\selenium-remote-control-1.0.3\selenium-php-client-driver-1.0.1\PEAR;C:\wamp\bin\php\php5.2.11\pear;c:\php\includes;C:\Program Files\Zend\ZendFramework-1.10.8\library;C:\Program Files\Zend\ZendFramework-1.10.8\library”

Recordeu reiniciar el servidor web per a  que els canvis sorgeixin efecte.

Finalment caldria descarregar el servidor Selenium RC de la URL:

 http://selenium.googlecode.com/files/selenium-remote-control-1.0.3.zip

O de la seva plana de descàrregues:

http://seleniumhq.org/download/

Si el descomprimiu a C:\Selenium haureu d’executar Selenium amb les instruccions:

cd C:\Selenium\selenium-remote-control-1.0.3\selenium-server-1.0.3
java -jar selenium-server.jar

Caldrà que tingueu instal·lar el Java Runtime Environment (JRE).

La ruta a la carpeta PEAR de Selenium també s’haurà d’afegir a l’include_path de php.ini:

include_path=”.;C:\Selenium\selenium-remote-control-1.0.3\selenium-php-client-driver-1.0.1\PEAR;C:\wamp\bin\php\php5.2.11\pear;c:\php\includes;C:\Program Files\Zend\ZendFramework-1.10.8\library;C:\Program Files\Zend\ZendFramework-1.10.8\library”

Les primeres línies del nostre codi també hauran d’indicar on trobar els arxius del framework.

Per a wamp:

<?php
require_once 'Testing/Selenium.php';
spl_autoload_register('selenium_autoload');
function selenium_autoload($name) {
 $tempFilename = explode('_', $name);
 $filename = 'C:\\wamp\\bin\\php\\php5.2.11\\PEAR\\PHPUnit\\Framework\\' . array_pop($tempFilename) . '.php'; 
 if(is_file($filename)) require_once($filename);
}

Per a Zend Server:

<?php
require_once 'Testing/Selenium.php';
spl_autoload_register('selenium_autoload');
function selenium_autoload($name) {
 $tempFilename = explode('_', $name);
 $filename = 'C:\\Program Files\\Zend\\ZendServer\\bin\\PEAR\\PHPUnit\\Framework\\' . array_pop($tempFilename) . '.php'; 
 if(is_file($filename)) require_once($filename);
}

Tingueu present que Selenium executa el navegador amb un perfil (profile) diferent al que emprem normalment, amb la finalitat de realitzar les prives.

Això us causarà problemes en el cas de certificats SSL ja que els haureu d’acceptar cada vegada que comenceu uns nous tests.

Podeu solucionar aquest problema creant un perfil específic per a les proves i passant-li per línia de comandes a Selenium:

-firefoxProfileTemplate "ruta_al_perfil"

Podeu crear un perfil executant firefox -P sense cap procés firefox executant-se prèviament.

Amb windows 7 crearem es diu selenium.profile al directori c:\Documents and Settings\[el nostre usuari de windows]\Program Data\Mozilla\Firefox\Profiles\selenium.profile

Llavors executarem firefox amb aquest perfil (no marcar la opció no preguntar a l’inici) i posar com a url about:config

Als paràmetres de configuració crearem una nova entrada del tipus lògic amb el nom extensions.newAddons i valor false.

Dins del menú Eïnes – Opcions – Avançat – Actualització desmarcarem totes les opcions de la secció “Comprovar si hi ha actualitzacions de Firefox, complements i motors de cerca”.

Si pretenem testellar llocs SSL accedirem a la pestanya Xifrat del mateix menú, premerem sobre Visualitzar els certificats i a la pestanya Servidor afegirem totes les excepcions per als dominis que hem de testejar. Pe: *.codic.cat

Podeu trobar més informació a la documentació de Selenium:

http://seleniumhq.org/docs/05_selenium_rc.html

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat Zend Studio 7.2.1

dilluns, juliol 19th, 2010

Per a veure les novetats d’aquesta versió.

Sobretot soluciona molts bugs.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Trucs per a Eclipse

diumenge, maig 16th, 2010

Us passo uns truquets per a ser més eficients programant en l’entorn eclipse:

1) Si escriviu el nom del model i premeu les tecles CTRL i ESPAI es mostren els mètodes del model per a completar automàticament

NomModel::[CTRL + ESPAI] Mostra els mètodes del Model

2) Prèmer el botó dret del ratolí sobre el mètode i seleccionar Open declaration o prèmer F3 fa el mateix efecte: ens porta a la funció en qüestió

3) Posar el començament del nom de la variable i CTRL + ESPAI auto completa

4) Prémer CTRL i passar el ratolí per sobre del nom de la funció, fa que aparegui subratllada, com un hipervincle, i si hi cliquem ens hi porta directament.


5) Si no teniu el projecte definit com PHP, premeu amb el botó dret sobre el projecte, Configure i Add PHP support. Això us proporcionarà control d’errors del codi PHP.

6) CTRL i punxar amb el mouse sobre el nom de variable (subratllada) ens porta a la primera aparició de la variable dins la funció.

7) Es pot ordenar la llista de mètodes/funcions de la nostra classe/arxiu, encara que a l’arxiu original apareguin desordenades, amb el botonet d’orderna a dalt a la dreta.

8) Activar la notació de colors per a comandes SQL, Procediments Emmagatzemats (stored procedures), funcions…

Primer indiquem que volem instal·lar nou programari:

Seleccionem el repositori Galileo.

Seleccionem les eines de desenvolupament per a Bases de Dades.

9) CTRL + H per a obrir la finestra de cerca a arxius (File Search)

10) CTRL + SHIFT + R per a obrir la finestra d’anar a un recurs (a algunes versions d’Aptana CTRL + T)

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat Zend Studio 7.2

divendres, abril 30th, 2010

Zend presentà ahir Zend Studio 7.2.

L’entorn preparat per a programar en PHP amb el framework Zend.

De fet el framework Zend l’han creat els pares de PHP, encara que curiosament Zend framework és gratuït però no programari lliure.

Podeu veure la notícia i descarregar-lo a la seva web:

http://app.news.zend.com/e/es.aspx?s=714&e=88621

Em fa molta gràcia que aquesta adreça sigui un .aspx , que és la que fa servir microsoft .net.

Quan tingui un moment investigaré si es tracta d’un servidor web de microsoft (que em sorprendria molt) o simplement han mapejat l’extensió .aspx a PHP amb un gran sentit de l’humor.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat Zend Server 5.0.1

dijous, abril 22nd, 2010

S’acaba d’alliberar la versió 5.0.1 de Zend Server.

És una versió de manteniment que actualitza PHP a la versió 5.2.13 o a la versió 5.3.2 i el Framework de Zend a la versió 1.10.3.

També soluciona alguns problemes de seguretat.

Es pot descarregar des de:

http://www.zend.com/products/server/downloads

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat Zend Studio 7.1.2

divendres, març 12th, 2010

Incorpora la versió del Zend Framework 1.10.1.

Aquí hi ha la llista de tots els problemes solucionats (que són un munt)

http://static.zend.com/topics/Zend-Studio-7-1-2-Change-Log.txt

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat Zend Server 4.0.6 (crític)

dimecres, gener 20th, 2010

S’ha alliberat una actualització per a Zend Server 4.0.6 que actualitza el framework Zend a la versió 1.9.7 i que soluciona diversos errors de seguretat crítics.

Com sabeu el framework Zend és de PHP. M’ha fet moltíssima gràcia veure que l’enllaç que m’han enviat de la llista de distribució és un .ASPX el que indica que empren el servidor web i el llenguatge de microsoft (o el projecte momo que és una versió programari lliure de .NET).

http://app.news.zend.com/e/er.aspx?s=714&…

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Alliberat Zend Studio 7.1.1

dilluns, gener 18th, 2010

Avui ha estat alliberada la versió 7.1.1 de Zend Studio.

Aquesta versió soluciona molts bugs i incorpora el framework Zend 1.9.6.

Un bug conegut és que amb Ubuntu 8 el phpDocumentor no funciona en mode cgi i s’ha d’emprar el PHP CLI.

Podeu veure tots els canvis aquí.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Petita guia de Zend Framework

divendres, gener 15th, 2010

Zend Framework és un framework per a PHP, és a dir un sistema de treball i conjunt de llibreries per a desenvolupar aplicacions en PHP.

Zend es basa en el MCV – Model Control Viewer, el que significa:

  • Control – El controlador (controller) és qui rep la petició. Fa les tasques que hagi de fet, com càlculs, i demana les dades al Model.
  • Model – El Model és qui recupera o introdueix les dades de la base de dades.
  • Viewer – Visualitzador. És la part que conté l’HTML i que pot disposar de les dades que genera el Model si el Controller l’autoritza.

Zend ofereix abstraccions. Per exemple, Zend_DB per a base de dades, ofereix unes funcions per les quals tant és si el servidor de base de dades és un MySql, un oracle, un sql server de microsoft o un altre, les crides sempre són les mateixes i a Zend_DB.

El framework s’encarrega de fer que les dades s’entreguin a l’aplicació de forma transparent.

Algunes de les facilitats que ofereix el framework són:

  • Zend_Feed – per a consumir i publicar feeds RSS i Atom.
  • Zend_Pdf – per a crear, editar i carregar documents Pdf.
  • Zend_Search – Per a fer cerques sofisticades sobre els nostres texts.
  • Zend_Service_Amazon, Zend_Service_Flickr, and Zend_Service_Yahoo – per a emprar les API (funcions) d’aquestes empreses

Zend és tot programació orientada a objectes.

En la imatge de l’esquerra podem veure un arbre de directoris d’una aplicació escrita en Zend.

trunk és el nom del projecte.

Dins d’application hi tenim el directori controller, que és on hi haurà els controladors (el codi).

També hi tenim model, on aniran les classes que accedeixen a base de dades.

I views que és on hi haurà les vistes, o codi html amb crides per a fer servir les dades accedides pels Models.

A la carpeta controllers /application/controllers/ de la il·lustració, hi trobem un arxiu que es diu IndexController.php

Aquest arxiu: IndexController.php és qui rebrà les crides que fem a l’aplicació web.

Es el controlador Index.

En Zend el nom dels arxius és molt important, ja que el nom de l’arxius és la manera per la que es localitza l’encarregat de fer determinades tasques.

La plana més senzilla que faríem amb Zend és un “Hola món!”.

<?php

class IndexController extends Zend_Controller_Action
{

    public function indexAction()
    {
        $this->view->title = 'Hola, món!';
    }

}

Les majúscules també són molt importants com ara en el cas d’ indexAction.

Zend_Db_Table sempre assumirà que la primary key (la clau primària d’una taula) és id si no s’especifica el contrari.

Els paràmetres de connexió a la base de dades s’especifiquen a /config/config.ini

db.adapter = PDO_MYSQL
db.host = localhost
db.username = usuari_de_la_base_de_dades
db.password = mot_de_pas
db.dbname =

Els Helpers o View Helpers són unes funcions d’ajuda, per exemple per a construir formularis.

Per exemple el formCheckbox:

echo $this->formCheckBox('Independència', null, null, array (
                                                             'Checked' => 'Sí',
                                                             'unChecked' => 'No'));

El codi anterior generarà un control de tipus checkbox amb l’opció Sí marcada i la No desmarcada.

Els Helpers, quan se’ls crida, es carreguen en memòria i s’instancien automàticament si és necessari.

Un que és especialment útil és BaseUrl.

$this->baseUrl(); // Això ens retorna la Url on es troben els scripts.

Emprant baseUrl ens assegurem que cridem els scripts de l’indret pertinent, i podem construir aplicacions que no depenguin de rutes absolutes o estàtiques al servidor web.

En el Model podrem recuperar les dades i ho farem mitjançant get‘s i set‘s.

Per exemple: getNom o getEmail.

Emprem get’s predefinits al Model enlloc del “magic method” __set o __get perquè es calcula que és un 300% més ràpid fer-ho així.

Pareu atenció que de nou les majúscules són molt importants.

getNom ha de coincidir amb el nom de la variable que ens passaran pel formulari nom , en minúscules, ja que a setOptions es convertiran els paràmetres rebuts del formulari en crides a setNom (es converteix la primera lletra de la variable a majúscula).

public function setOptions(array $opcions)
{
     $metodes = get_class_methods($this);
     for each ($opcions as $clau => $valor)
     {
         $metode = "set".ucfirst($clau); // això és el que posa en majúscula la primera lletra com setId
         if (in_array($metode, $metodes))
         {
              $this->$metode($valor);
         }
     }
     return $this;
}

Habitualment tindrem un únic mètode anomenat save que farà un insert o un update en funció de si ens passen un id o no, i comprovant si rebem un post de formulari (isPost).

Els arxius a application/components/ com ara test.yml serveixen per a accedir a la base de dades si ho volem, encara que jo em decanto per utilitzar directament el Model.

Les crides al projecte via web es fan seguint la següent estructura:

http://servidor/nom_projecte/Nom_Controller/Nom_Action/Nom_Paràmetre1/Valor_Paràmetre1/…/Nom_ParàmetreN/Valor_ParàmetreNPer exemple:http://codic.cat/ProjecteC/indexCom index és el Controller per defecte si no diem ser s’asumirà index.

http://codic.cat/ProjecteC

O per exemple

http://codic.cat/ProjecteC/edit/id/23

La pàgina final es renderitzarà en base a les vistes (views).

Per al controller Index tindrem a views/scripts/index/ un arxiu .phtml per a cadascuna de les accions.

En aquest cas com el controller es diu Index i l’acció es diu index tindrem:

views/scripts/index/index.phtml

En qualsevol moment podem fer un debug (veure com estan les coses) amb:

Zend_Debug::dump(); exit;

Dins de index.phtml per a tenir accès a les dades definides al Controller i recuperades pel Model, farem el següent:

<?php
    $dades_index = $this->index_db;
    echo $dades->id;
?>

On previament hem definit dins el controller index_db.

$indexModelObj = new Model_Index();
$this->view->index_db = $indexModelObj->getDades;

On getDades és un mètode al Model index que recupera uns valors.

D’aquesta manera amb $this->view>index_db = … permetem que index_db estigui disponible a la vista index.phtml, és a dir, que tingui accès a aquelles dades.

També podem obtenir informació sobre les dades fent:

$o_info = $this->_table->info();

O també:

$o_promo = new Promocio();
$st_informacioPromocio = $o_promo->info();

On Promocio() és el nom de la classe sobre la que volem extreure informació.

Per exemple:

Array ( [schema] => [name] => promocions [cols] => Array ( [0] => promo_PK [1] => promo_desc ) [primary] => Array ( [1] => promo_PK ) [metadata] => Array ( [promo_PK] => Array ( [SCHEMA_NAME] => [TABLE_NAME] => promocions [COLUMN_NAME] => promo_PK [COLUMN_POSITION] => 1 [DATA_TYPE] => int [DEFAULT] => [NULLABLE] => [LENGTH] => [SCALE] => [PRECISION] => [UNSIGNED] => 1 [PRIMARY] => 1 [PRIMARY_POSITION] => 1 [IDENTITY] => 1 ) [promo_desc] => Array ( [SCHEMA_NAME] => [TABLE_NAME] => promocions [COLUMN_NAME] => promo_desc [COLUMN_POSITION] => 2 [DATA_TYPE] => varchar [DEFAULT] => [NULLABLE] => [LENGTH] => 255 [SCALE] => [PRECISION] => [UNSIGNED] => [PRIMARY] => [PRIMARY_POSITION] => [IDENTITY] => ) ) [rowClass] => Zend_Db_Table_Row [rowsetClass] => Zend_Db_Table_Rowset [referenceMap] => Array ( ) [dependentTables] => Array ( ) [sequence] => 1 )

Uns bons consells per als XHTML, per tal que es validin bé són:

  • Posar els nombre dels tags HTML en minúscules

Per exemple: <input type=”text” name=”camp_text” />

  • Tancar els tags com a: <br />.
  • En els camps select quan és el valor seleccionat fet <option selected=”selected” value> i no el clàssic <option selected value>
  • Posar un alt sempre a les imatges.

Pe: <img src=”imatges/bondia.png” alt=”Bon dia Catalunya!!!” />

Zend_DB_Table és el que s’acostuma a utilitzar per a treballar amb la base de dades.

És a més alt nivell, per a treballar amb conjunts de registres o recordsets.

De vegades necessitarem treballar amb Zend_DB per a treballar amb les dades a nivell de files i no a nivell de recordsets.

Zend_DB proporciona:

  • select
  • fetchAll
  • fetchRow
  • find
  • delete
  • quote
  • quoteinto

Quote i quoteinto s’asseguren que no utilitzem noms de variables que són camps reservats de la base de dades.

Algunes bases de dades tenen paraules reservades que serveixen per a  dur a terme determinades funcionalitats, i d’altres tenen altres. Per exemple, EMAIL pot ser una paraula reservada en un sqlserver mentre que en un MySql no.

Com Zend_DB_Table no té quote ni quoteinto necessitem l’Adapter per a obtenir un Zend_DB.

Nogensmenys Zend_DB fa un quoteinto per a les selects però no per als delete.

Podeu debuguejar els errors dins del catch de les Exception:

throw new Exception("Exception a l'arxiu ".__FILE__.' línia '.__LINE__.', class '.__CLASS__.' funció '.__FUNCTION__.': '.$e->getMessage());

Adjunto algunes guies:

Understanding the Zend Framework (IBM)

Part 3: A Simple Hello World Tutorial

Part 4: Setting the Design Stage with Blueprint CSS Framework and Zend_Layout

Part 5: Creating Models with Zend_Db and adding an Administration Module

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy