Blockz RAD framework web em Php
Blockz RAD framework web em Php

Blockz RAD framework web em Php

Hra Digital


» Portfolio » Desenvolvimento Web

Blockz web framework

Blockz Framework é um projecto que iniciei após escrever os posts J4 Essays neste site.

Basicamente, é uma Framework Web em Php multi-camada para RAD, e um projecto Open-Source, desenvolvido como hobby.

Porquê outra framework?

Existem várias Frameworks Web por aí que o Utilizador/Programador pode escolher, desde as Open-Source, às proprietárias. Desde frameworks para o front-end (Css e Javascript), às do back-end (Php, Ruby, etc…), portanto, porquê mais outra?

Duas razões levaram-me a começar a desenvolver este projecto.

A principal, é que sendo maioritariamente um programador para o back-end, desenvolvendo sobe Acordos de Confidencialidade, não é fácil disponibilizar referências de código a terceiros. Uma solução Open-Source pareceu-me a maneira correcta de o fazer.

A segunda, foi relacionada directamente com os posts J4 Essay. Eu estava curioso por descobrir, até que ponto seria fácil ou difícil desenvolver uma Framework Web em Php de raiz, que fosse totalmente compatível com o padrão MVC.

Um coisa, é fornecer soluções que sabemos que funcionam, outra totalmente diferente, é provar que essas soluções funcionam mesmo. Podem encontrar o texto original aqui.

Filosofia esquemática

A filosofia do projecto, é que este tenha duas camadas distintas (produtos?), que possam ser mantidas separadamente (diferentes ciclos), mas que funcionem em conjunto de forma a criar uma Framework Web em Php, que fosse compatível com MVC.

A primeira camada tem as seguintes responsabilidades:

O objectivo principal, é ter uma camada inicial (core/cerne), que está dependente apenas do sistema de ficheiros para toda a sua funcionalidade, sendo a mesma agnóstica para com bases de dados. Muitos dos objectos principais desta camada deverão ser expansíveis e/ou substituíveis, de forma a evitar a necessidade de qualquer customização para um solução específica.

A segunda camada deverá lidar com aspectos relacionados com o UI, e irá assentar no topo da primeira camada, expandindo-a, e assim alargando toda a framework no processo.

Esta camada já estará dependente duma base de dados, e entre as suas principais responsabilidades podemos listar:

Esta segunda camada poderá expandir a primeira, mas poderá também ser completamente substituída.

Se precisarmos de desenvolver uma Aplicação Web, poderemos usar ambas as camadas para formar a framework, mas se apenas necessitamos de desenvolver uma API, apenas necessitaremos da primeira camada.

Qualquer solução desenvolvida em cima desta framework deverá ser visto apenas como uma Distro, como no universo Linux. Uma solução será então apenas a soma de todas as camadas,e de todas as extensões que fazem parte da mesma.

Princípios

Como principio fundamental, está a separação de conceitos das duas camadas iniciais, mantendo o esquema anterior intacto.

A Framework deverá também fornecer classes para comunicar com todas as partes do sistema, mas deverá deixar o UI para as extensões, caso seja necessário.

PSR’s, e princípios SOLID e DRY deverão ser seguidos o máximo possível, de forma a manter o código o mais limpo possível. Minimizar o uso de classes Standard e Arrays como parâmetros de métodos e/ou valores de retorno.

O código deverá estar totalmente documentado. Um programador quase não deverá necessitar de documentação externa para compreender o sistema.

Mas o maior principio, que envolve todos os outros, é que deverá ser fácil desenvolver na framework, e deverá ser facilmente compreendida por qualquer programador a trabalhar nela.

Estado do projecto

Neste momento, e como foi dito anteriormente, o projecto deverá ser visto apenas como um hobby, e portanto, não terá de momento qualquer data de lançamento/disponibilização, nem pretensões de mercado.

A objectivo inicial principal é desenvolver o projecto de forma a que este possa servir de base e suportar uma solução completa. Um exemplo poderá ser um CMS.

Outro objectivo, será tentar manter imutáveis o máximo de princípios iniciais à medida que o projecto cresce.

O projecto poderá ser encontrado aqui no Github, e está obviamente aberto a contribuições.