terça-feira, 24 de abril de 2007

PHP-GTK Book in portuguese

Após 3 anos de programação em PHP-GTK, e acumulando a experiênçia das
aplicações que realizei utilizando esta tecnologia decedi colocar mão
à obra e escrever um livro sobre o assunto.
O livro está em desenvolvimento e comporta temas váriados relativos ao
PHP ao PHP-GTK.

Entre muitos outros temos a abordar o livro aborda
- Introdução ao PHP
Introdução ao PHP-GTK
--> O que é ?
--> Como surgiu?
--> Conceitos básicos - signals,callbacks, containers....
--> Instalação em Linux e Windows
--> Configurando a plataforma
--> Como executar as aplicações ?
--> InicIo à programação com PHP-GTK : janelas,botões,caixas,
rotulos
--> Optimização das aplicações classes e funcões
--> Parte gráfica : carregar imagens,gifs,aplicar temas,splashes,
Pango
--> Protecção do código
--> Alternativas de desenvolvimento : Rad com GLADE
--> Técnicas de distribuição das aplicações
entre muitos outras temáticas....
O livro conta já com 5 capitulos de 16 . Ainda não tenho editora embora esteja em conversão com a FCA.Mesmo assim estou aberto a propostas a quem queira editar este livro...
Estou a pensar distribuir um CD que inclua a plataforma PHP5 + GTK2 e
todos os códigos do livro

sexta-feira, 20 de abril de 2007

Building class objects with PHP-GTK





The main rule to build professional applications on any programming language is to get the maximum outcome from the components that you develop.
On creating classes, we are making object packages that can be called and used in any part of the application and prevent to repeat code.
On this article i will teach how to develop classes using the property parent
To better undertand what we are doing , we need to learn something about object hierarchy.
On GTK , GtkObject is the base of the hierarchy. It means all objects come before it, on a tree style.
On real life you can see it when someone builds a house. The process has a correct order. Nobody starts building a house by the roof. First someone builds the foundations, next the floors, right next the walls and so one.



The image next shows the majory of object hierarchy on PHP-GTK2










The GTK object hirarchy




















Correct object hierarchy disposition








Understand object hirarchy is extremely important , because only this way we sure that our applications and object are used/builded correctly.




As i ment on the top of this article , i will use the PHP property parent.
It is mean that we will work on objects inheritance . To do that the rule is use the reserved word extends and right next reference the superclass .


Example:


class Window extends GtkWindow


Right next follows a pratical example using PHP-GTK





















Follows a short example using the class and the result of code






















the code result









Warning - New languague to my articles

This blog has visits from all over the world, so i decided to write future articles in english.

sábado, 14 de abril de 2007

Programação profissional com PHP-GTK




O que é o PHP-GTK



O PHP-GTK é uma extensão - um binding do GTK+ , que foi adiconada ao PHP e permite criar aplicações front-end a correr no lado do cliente (client-side), como aquelas criadas com C++ ou Java.
A ideia genial desta integração partiu do programador Andrei Zmievski , natural do
Usbequistão e actualmente a trabalhar para a empresa Yahoo nos EUA, cuja ambição de fundir o GTK+ com PHP surgiu dum projecto pessoal .













O autor do PHP-GTK Andrei Zmievsky, na foto








A imagem sugere o conceito do PHP-GTK

O PHP-GTK não significa uma nova linguagem de programação, mas disponibilizar ao PHP uma maior gama de recursos, conferindo-lhe a possibilidade de desenvolver aplicações com GRAFIC USER INTERFACE (GUI).

Posto desta maneira, todas os recursos afectos ao PHP, estão também acessiveis ao PHP-GTK, daí que podemos criar aplicações com interligação a base de dados, e toda a tecologia disponivel para a linguagem . Contudo para que as aplicações funcionem em cada computador onde a aplicação em afinidade ao PHP-GTK, necessitará de ter instalado o PHP-GTK. Uma alternativa viável a satisfazer esta condição é instalar a plataforma PHP-GTK , juntamente com a aplicação num directório destino.

Neste artigo irei ensinar com realizar uma aplicação completa escrita em PHP-GTK , descrevendo o processo de instalação, aplicação de skins, gestão de linguagens, carregar imagens, desevolvimento da aplicaçação até ao processo de distruição num package de instalação.




































quinta-feira, 5 de abril de 2007

Triggers e Procedimentos com Mysql



As bases de dados não são mais que reservatórios de informação, sob os quais podemos agir de forma a gerir, manipular e interagir com a informação que aí se encontra.

O que são triggers


Um trigger não é mais do que uma acção ser executada exactamente no momento em é feita algum tipo de alteração na base dados , ou numa(s) tabela(s) específica(s).
A tradudução literal é bastante intuítiva, pois trigger em inglês significa disparo, ou seja , é um disparo (evento) realizado sempre que as alterações se verificam (tabelas ou base de dados).
Este tipo de acção é muito útil, pois podemos programar uma determinada acção a ser executada antes de a informação ser alterada, que a nivel de segurança é uma mais valia.
Tal como as restantes bases de dados relacionais o MySQL a partir da versão 5.0 permite realizar triggers nos sistemas de base de dados.
Os triggers são divididos em duas categorias - tiggers de coluna (row triggers ) e triggers de declaração (statement triggers).
Os "row triggers" são utilizados para definir acções para cada coluna, enquanto que os "statement" são utilizados apenas em conjuntos de declarões que empregem UPDATE, DELETE, INSERT.
Este conjunto de regras aplica-se não só ao MySQL mas a todo o conjunto de bases de dados que utilizem o padrão SQL.

Porquê usar triggers

Existem várias razões para usar triggers.
Os triggers podem automatizar uma quantidade de coisas, que em caso contrário necessitaria de de ser feita.
A razão fundamental pela qual eu uso triggers prende-se ao facto de querer manter a integridade de uma tabela que eventualmente usa outra tabela.
Por exemplo se a tabelaA refrençia a tabelaB e por alguma razão se apaga um valor da tabelaB, podemos usar um trigger para efectau a configuração no tratamento da informação na tabelaA.
Talvez a informação contida na tabelaA deva apagar um valor generico ou poderá acontecer que a essa informação deva ser totalmente apagada.

PRATICANDO COM TRIGGERS


A sintaxe dos trggers no MySQL é idêntica à de outras base de de dados.

DELIMITER
CREATE TRIGGER trigger_nome trigger_tempo trigger_evento ON tabela_nome
FOR EACH ROW
trigger_comandos
END;

DELIMITER ;
Explicando a sintaxe :
trigger_nome - nome do trigger
trigger_tempo - A hora a que o trigger será executado de acordo com o evento.
As opções disponíveis são AFTER e BEFORE;
trigger_evento - o evento que precede o trigger;
As opções disponíveis são INSERT, UPDATE e DELETE;
trigger_comandos - comandos executados pelo trigger (uma ou mais querys SQL).
Elaboração de um exemplo completo
CREATE TRIGGER add_linha_pontos AFTER INSERT ON notas
FOR EACH ROW BEGIN
INSERT INTO pontos SET = NEW.a1;
END;
Criar um relacionamento posterior (com trigger) entre duas tabelas
Código sql da tabela alunos
CREATE TABLE alunos (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(500) NOT NULL,
email VARCHAR(100) NOT NULL
);
Código sql da tabela notas
CREATE TABLE notas (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
pontos INT NOT NULL DEFAULT '0'
);
O trigger necessário para haver relacionamento
DELIMITER
CREATE TRIGGER add_linha_pontos AFTER INSERT ON alunos
FOR EACH ROW BEGIN
INSERT INTO pontos SET user_id=NEW.id, pontos='0';
END;

DELIMITER ;

Gerir base de dados com PHP+MySQL

Uma das necessidades primordiais dos sites dinâmicos passa pela necessidade de manipular e gerir informação contida em base de dados - que pela sua espicialização em tratar a informação são conhecidas por base de dados relacionais.
O PHP apesar da sua jovialidade relativamente a outras linguagens , é aquela que dispõe um maior acesso a base de dados distintas - isto prende-se a um factor básico - o PHP está acessivel a todas as paltaformas e logo , os programadores trataram de encontrar forma de integrar essas bases de dados com o PHP. Assim o ORACLE, SQL SERVER, PostGreSQL, FireBird,Mysql,drivers ODBC , SQLite entre muitos outras ,estão acessíveis ao PHP.


Figura 1 : Existem dezenas de base de dados acessiveis ao PHP


Neste artigo irei dar especial destaque à gestão de dados com PHP e Mysql , uma das bases de dados mais comuns em aplicações Web realizadas com PHP.




O que é o MySQL




O MySQL é sistema relacional de base de dados, criado na Suécia, e cujo sucesso se deve fundamentalmente à sua facilidade de integração com o PHP , permitindo criar site dinâmicos de extremo valor e ricos em informação.
É usado em empresas como a Yahoo, Nasa, Texas Instruments, Motorola entre muitas outras. Tal como o PHP é um software livre caracterizado fundamentalmente pela sua portabilidade e excelente desempenho e estabilidade, dando suporte a vários tipos de tabelas , entre as quais MyISAM e InnoDB.
Mas a vantagem primaordial é funcionar de forma estável em muitas da plataformas conhecidas, como Windows , Linux , MAC OSX, SUN OS ,FreeBSD ...

Como obter o MYSQL



Como é uma tecnologia gratuíta fazer o download do MySQL é a tarefa mais simples. Existem várias formas de instalar o MySQL no seu computador.
Se a sua intenção é integra-lo juntamente com o PHP , então a melhor forma será intalar uma aplicação que o inclua. Existem duas aplicações para instalar o PHP e MySQL que a meu ver vale a pena testar o EasyPHP (www.easyphp.org ) e o Xampp (www.apachefriends.org/en/xampp.html)

Outra forma de intalalar o Mysql é segundo o modo consola , que permite executar os comando da mesma forma como trabalhamos em modo MSDOS.


















quarta-feira, 4 de abril de 2007

Interacção Javascript + PHP

Ora aquí está um assunto que é bastante interessante e deixa muitos atónitos quando surgem questões , relacionadas à intearacão do PHP com JavaScript.
Para demonstrar como essa interação é possível vou colocar aquí pequenos exemplos de forma a mostrar como fazer isso.
O exemplo seguinte mostar como utilizar as janelas de mensagem do javascript para apresentar as mensagens
O resultado do código acima seria a seginte janela resultante do código javascript



Chamar funções no PHP a partir de botões



Para que programa em javascript está muitas confinado ao hábito de utilizar a propriedade "onclick" para char as funções escritas em javascript.
No PHP embora esta técnica seja uma alternativa a forma de chamar funções ao clicar-se num botão é bem diferente.
O exemplo abaixo demosntra como se responde a este problema

A variável superglobal $_POST utiliza-se quando estamos a trabalhar com formulários (form) e contém as enviados por HTTP POST (METHOD="POST")
A função isset é utilizada para obter o estado da variável afectada , neste caso $_POST['enviar']

Passar valores da variáveis PHP para JavaScript


Passar valores de variáveis PHP para variáveis JavaScript pode ser util.
A técnica é mesma do php+html , ou seja embeber o código em comandos echo
exemplo :


Carregar informação da base de dados para JavaScript

Tanto o JavaScript como o PHP são ferramentas populares utilizadas no desenvolvimento Web, contudo fazer a interligação das duas pode ser menos amigável do que aquilo que espera.
Enquanto escrevia um script para um portal que fiz recentemente, caí numa tentativa interessante de integrar ficheiros em JavaScript e PHP.
Começarei por explicar o problema em que caímos ao tentar integrar as duas, e procurar passar o conhecimento adquirido após essa persistência.


O problema


O objectivo inicial era mostar a informação contida na base de dados, e mostrá-la num sistema de slide-menu , que mostrará multiplas mensagens.
Isto geralmente implica inserir uma variável no HTML com PHP e JavaScript.

segunda-feira, 2 de abril de 2007

Criar e gerir sessões no php

Uma das necessidades primordiais à criação de sites dinâmicos passa pela getão e controlo de acesso ao site. Este controlo passa muita vezes por autentificação quer por HTTP ou pela requisição de dados para validação posterior.









A gestão de sessões deve ser previamente estruturada de forma a garantir segurança da aplicação.
Na figura abaixo está representado um fluxograma correspondente à gestão de sessões para uma aplicação comum escrita em php.


[clique sob a imagem para aumentar]


















O protocolo HTTP permite establecer a comunicação cliente/servidor,contudo uma das limitações (ou não), é que este protocolo não permite transmissão da informação relativa ao estado.Isto quer dizer que se quisermos verificar se um utilizador fez uma requisição, este protocolo não o permite, pois este protocolo o utilizador "é sempre o mesmo",(indeferente) baseado no critério de privacidade.
As linguagens dinâmicas (PHP,ASP,JSP...) permitem no entanto,ultrapassar este dilema, recorrendo ao uso de sessões.Ao declararmos o inicio de uma sessão,bem como as suas variáveis,o PHP armazena num ficheiro geral os dados correspondentes, no servidor.

Nesse ficheiro encontra-se uma ID de sessão única, que é gerada pelo HTTP e uma outra ID que é armazenada no lado de cliente de duas formas.Uma pelo uso de cookies e a outra mediante o envio através da URL.O uso de sessões guarda a ID de sessão no lado do cliente, mas no caso das variáveis passadas por URL ou através de cookies, poder-se-ão encontrar informações anteriores relativas a um determinado utilizador.Ao manter-se o ID de sessão na URL, garante-se com maior eficácia o número de utilizadores a acessar a páginas controladas por sessões.O uso de cookies comporta no entanto algumas precausões, pois o utilizador poderá ter os cookies desabilitados (o PHP + Javascript permite saber isso). Se a manipulação de sessões utilizar está técnica peça gentilmente ao utilizador que os active no browser dele.

domingo, 1 de abril de 2007

Controlo de excepções no PHP

Uma das boas práticas na programação orientada a objectos, é recorrer à utilização de práticas que permitam fazer a gestão e controlo de erros. Esta prática permite obter uma maior eficiênçia e clareza no código.
O PHP5 tem suporte ao tratamento de erros através da classe Exception.

Existem no entando algumas regras acerca da forma como se deve utilizar esta classe, que devem ter em conta para o gerenciamento ser feito correctamente.

A classe Exception contém os métodos apresentados ao lado.
No constructor ( __construct) da classe é obrigatório a definição de uma mensagem e por opão o número do erro relativo a essa mensagem.
Expondo os restantes métodos temos
getMessage() - Retorna a mensagem de erro (passada ou parâmetro directamente ou numa outra função )
getCode() - Devolve o código de erro (se indicado na classe)
getFile() - Nome do ficheiro no qual a excepção foi originada
getLine() - Número da linha onde a excepção foi gerada
getTrace() - Retorna um array com as informaão acerda de cada etapa de progresso de uma excepção.
getTraceAsString() - A funcionalidade deste método é idêntica ao getTrace() , devolvendo string em vez de array



Em seguida vou colocar exemplo que demostra a forma como utilizar alguns dos métodos mais comuns, permitidos pela classe Exception.