Jump to content
XRS

Sistema Plugins/Modulos

Recommended Posts

XRS

Boa tarde,

 

Estou a desenvolver um sistema CRUD com algumas funcionalidades básicas para ter como base para todos os projetos.

A ideia é não estar sempre a refazer este conjunto de funcionalidades (gestão de users, permissões, roles, etc).

 

De forma a criar algo útil e que se relacionasse entre si, pretendia criar um sistema de plugins que funcionasse de forma a evitar alterar o core sempre que necessário. A ideia era criar vários plugins que fossem criar adicionar as features que necessito para o projeto em questão. Por exemplo criar um plugin para blog, onde ele iria criar as tabelas associadas a um blog (categorias, tags, posts, comentarios, etc) e também adicionasse ao menu essas páginas.

 

No entanto não estou a conseguir arranjar uma maneira decente de fazer isto.

A ideia seria algo do género:

  • "Core" tem uma página plugins onde iria ler as pastas de uma folder em especifico (por exemplo /plugins/);
  • "Core" ia ter uma tabela básica onde constavam dados dos plugins instalados (por ex nome, versão, ativo ou não, etc);
  • "Core" ia ter no menu uma leitura das paginas adicionais do plugin;

Folder do plugin em si:

+ plugin_blog

++ plugin_blog.php (contem um array com a informação do plugin)

++ plugin_blog.sql (sql para instalação do plugin)

++ plugin_blog_uninstall.sql (sql para uninstall do plugin)

++ /folder/*.php (funções core do plugin e páginas adicionais do menu)

 

Portanto a ideia passaria por quando aceder à página dos plugins no core, ele ia verificar se já tinha na tabela core o plugin que adicionei. Se não tivesse, fazia a instalação do plugin. 

Necessitava de colocar um loader para carregar os plugins que estivessem ativos.

 

Isto está-me a criar algumas dúvidas nomeadamente:

  • Como, através de rewrite rules conseguiria adicionar estes novos links (não tenho muito conhecimento de .htaccess) sem mexer no core;
  • Será a forma mais prática de desenvolver um sistema de plugins?

 

Tudo o que já procurei não consegui encontrar algo que realmente satisfizesse a minha necessidade. Alguma sugestão adicionar de como fazer isto de forma eficaz?

 

Obrigado.

Share this post


Link to post
Share on other sites
eSkiSo

Isso é basicamente re-inventar a roda, tens algumas frameworks com isso ja feito que depois so tens de criar as tuas "extensoes" ao que elas ja fornecem.

Tipo Codeigniter, Laravel, cakePHP, dá uma olhadela nelas.

PS. A nivel de base de dados tens as "migrations" nessas frameworks que ja te permite fazer isso.


Os meus programas em http://www.eskiso.net

Share this post


Link to post
Share on other sites
XRS

Tens toda a razão. Mas eu já tenho o meu projeto todo em plain PHP, digamos que uma mini framework, por isso ia perder ainda mais tempo numa curva de aprendizagem para uma framework do que propriamente a fazer o que quero. Acredito que não seja algo assim tão complicado de se fazer.

Share this post


Link to post
Share on other sites
M6
13 hours ago, XRS said:

Tens toda a razão. Mas eu já tenho o meu projeto todo em plain PHP, digamos que uma mini framework, por isso ia perder ainda mais tempo numa curva de aprendizagem para uma framework do que propriamente a fazer o que quero. Acredito que não seja algo assim tão complicado de se fazer.

Tens de equacionar se, a longo prazo, não ficas a ganhar com a troca.

Por exemplo, o tempo que vais demorar a criar o sistema de plugins deve ser superior a fazeres um tutorial e aprenderes uma dessas frameworks (às indicadas juntaria apenas mais uma, a Yii2).

A quantidade de funcionalidade que tens de raiz é brutal: autenticação, roteamento, ORM, tudo baseado em HTML5+CSS+JQuery+Bootstrap, mecanismos de segurança, mecanismos de internacionalização, geradores de modelos, profiling e, as duas cerejas em cima do bolo, uma listagem enorme de plugins suportados via composer e um sistema maduro, documentado,  testado por imensa gente e que vai evoluindo.

Ou seja, o custo de aprendizagem, no longo prazo, vai ser um excelente investimento.
Digo isso por experiência própria quando há uns anos estava com o mesmo dilema. Na altura diz um pequeno estudo do que havia disponível e, dado as minhas necessidades na altura, acabei por escolher a Yii por considerar que tinha o melhor equilíbrio entre as minhas necessidades e as funcionalidades disponibilizadas.
O resultado nos últimos anos tem sido altamente positivo, hoje em dia desenvolvemos aplicações de forma muito rápida e simples. Quando necessitamos de um plugin para fazer alguma coisa, a probabilidade de ele não existir é quase nula.
Para teres uma ideias, no caso da Yii, fazes uma tabela no MySQL e usando o Gii (uma ferramenta que vem incluída na Yii) em 2 minutos crias automaticamente o controlador, os models e as views. Ou seja, ficas com o CRUD feito automaticamente - página de pesquisa, de visualização dos dados, de criação, atualização e eliminação - pronta a ser costumizada por ti.

Com isto não estou a dizer para escolheres a Yii ou desistires do teu projeto, estou apenas a dizer-te que deves ponderar muito bem se além do desenvolvimento das aplicações sobre uma framework ainda queres "perder" tempo a desenvolver a própria framework.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.