Ir para o conteúdo

 Voltar a i-Educar De...
Tela cheia

Dúvidas em relação a nova API

25 de Fevereiro de 2010, 8:57 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 84 vezes

Caro Eriksen,

Há muito tempo acompanho o desenvolvimento do projecto, porém não participo de forma alguma. Quando tentei ajudar, deparei-me com um projeto enorme, porém nada amigável (muita duplicação de informação pelas classes que provavelmente foram geradas por um programa). Isso desistimula qualquer um a ajudar.

No entanto, reparei que você está desenvolvendo uma nova API, seguindo stardards e muito bem estruturada.

Após isso, resolvi alocar algum tempo para ajudar com algo que posso. Ao tentar perceber o que existe nesta nova API, fiquei confuso.

Poderia explicar-me, resumidamente, como funciona esta nova API?

O que deu para perceber é que usa uma arquitetura MVC, porém ainda assim fiquei confuso. Num diretório chamado Views contém arquivos chamados Controllers!

Comecei a desenvolver classes para manipulação do banco de dados (CoreExt_Db), porém ao usar a classe Config para obter os dados do arquivo de configuração, vi que você usa um array global ($coreExt) em que é definido algumas classes.

Já pensou na ideia de usar uma classe estática (CoreExt por exemplo) e nela instanciar estes objectos. Acho que faz muito mais sentido do que usar variáveis globais em OOP.

Ao invés de usarmos isso:

global $coreExt;
$config = $coreExt['Config']->app->database;

Usamos isso:

$config = CoreExt::$config->app->database;

Com os melhores cumprimentos,

Charles Maciel

Autor: Charles Maciel


1Um comentário

  • 503e17102f7c813397aa672a32756b54?only path=false&size=50&d=404Eriksen Costa(usuário não autenticado)
    25 de Fevereiro de 2010, 16:51

     

    Charles,

    Eu tenho a sensação que foi usado um gerador de classe muito rústico, por isso temos tantas classes com estrutura semelhante mas sem hierarquias (classes abstratas ou implementação de interfaces).

    Não vou conseguir explicar aqui a API toda, mas ela está sendo desenvolvida em cima de alguns princípios simples e uma ressalva:

    Os componentes devem ser interdependentes com baixo acoplamento (namespace CoreExt)

    Os componentes não são de propósito geral. São desenvolvidos para serem usados no i-Educar (namespace Core)

    Desenvolver somente as features necessárias e somente quando necessário

    Esses princípios garantem que não será criado código desnecessário e que o foco do desenvolvimento é a necessidade de evolução. Mas todos eles se baseiam em uma ressalva: a não incorporação de um framework na base de código atual.

    Devido a complexidade do código existente e ao pouco conhecimento produzido pela comunidade, introduzir um framework poderia ter implicações na manutenibilidade e na evolução do sistema.

    Os diferentes frameworks PHP buscam ser soluções genéricas mas possuem convenções que criam vícios nos desenvolvedores mais básicos (aqueles que vão pouco além dos tutoriais de criação de blogs e de guestbooks). Poucos vão além da configuração ou das conveções padrão de seus frameworks. Prova disso é que muitos assumem os módulos de componentes MVC (como os do ZF e do symfony) como módulos de aplicação sem, no entanto, prover uma API de aplicação que possibilite que estes se tornem realmente plug-and-play.

    Decidi então que seria melhor desenvolver apenas o conjunto mínimo de features necessárias em forma de componentes reutilizáveis no contexto do i-Educar. Quando a comunidade estiver pronta para desenvolver do zero, então um framework será incorporado. Meu voto pessoal é bem público, já que tenho preferência ao Zend Framework (pela arquitetura) mas tenho como alternativa o symfony (pela elegância). Frameworks que dão suporte a PHP 4 ou que se baseiam no Joomla para alguma coisa estão longe de ter alguma simpatia minha. :-)

    É por isso que o MVC do i-Educar usa o design pattern Page Controller (CoreExt_Controller_Page) ao invés do Front Controller. Estudando a ordem em que as classes do sistema executam seus métodos para gerar uma tela da aplicação, vi que esse design pattern era o mais rápido para aplicar.

    Esse array $coreExt foi criado quando CoreExt_Config fora desenvolvido. Um Registry pode ser implementado. De fato, CoreExt_Singleton e CoreExt_Entity implementam-o implicitamente.

    Se observar melhor, verá que só usei globals em Core_View, CoreExt_Controller_Dispatcher_Strategy_PageStrategy e nos arquivos da aplicação em intranet/ (onde o uso de globals é descontrolado).

    Se quiser entender melhor como as classes funcionam, sugiro ler o testes (tests/unit/CoreExt e tests/unit/Core) e os módulos em modules/. Os docblocks contém também bastante informação. Você pode extrair uma boa API desses componentes usando o phpDocumentor ou o Doxygen (que gera ótimos diagramas de classe).

    att,
    Eriksen Costa
    Analista Desenvolvedor
    Projeto i-Educar, contribuições
    Cobra Tecnologia S.A.

Mapeamento do i-Educar por todo o Brasil

23 de Abril de 2018, 16:31, por Tiago Giusti

A Portabilis, organização que é integrante da comunidade desde 2009 e que atua no papel de mantenedora do projeto, propôs uma renovação de energias, ao final de 2017, para levar o i-Educar ainda mais longe.



Situação atual do lançamento do maior software livre de gestão escolar do Brasil

10 de Abril de 2018, 11:29, por Tiago Giusti

O Coordenador da Comunidade i-Educar e CEO da Portabilis, Tiago Giusti, foi a Brasília, no fim do ano passado, representando a Comunidade i-Educar numa visita ao Ministério do Planejamento para discutir soluções para alguns assuntos de interesse da Comunidade, tais como:



Em 2018, queremos o i-Educar por todo o Brasil

28 de Dezembro de 2017, 23:08, por Tiago Giusti

Esta mensagem é diferente das de retrospectiva dos anos anteriores. Vamos abordar primeiro sobre o futuro, encerrando com um resumo de como foi 2017.



Prefeitura de Criciúma implanta o i-Educar na rede municipal de ensino

20 de Dezembro de 2017, 11:04, por Tiago Giusti

Buscando melhorar o sistema de informações da rede municipal de ensino de Criciúma, a Administração Municipal, através da Secretaria de Educação e da Diretoria de Tecnologia da Informação (TI), implantará um software de gestão de dados nas unidades educacionais. Denominado i-Educar, o sistema aperfeiçoará o armazenamento de dados e auxiliará gestores e professores de Criciúma.



Retrospectiva i-Educar 2016: o que conseguimos realizar?

31 de Dezembro de 2016, 12:00, por Tiago Giusti

Chegamos a mais um 31/12 e é hora de fazermos a retrospectiva da Comunidade i-Educar, como temos feito todos os finais de ano.