Estoy buscando maneras de implementar un sistema de módulos en mi marco de aplicación, los módulos serían archivos de clase que cambiarían el diseño de alguna manera para que se integrara automáticamente con la intervención del usuario.Creación de un sistema de módulos dentro de un marco
Mi marco es un marco construido a medida, pero es muy similar a codeigniter, solo un poco más ligero.
La idea que tengo es dentro de los archivos de plantilla es invocar el módulo de posiciones, y tienen módulos de auto carga y se analiza
<html>
<head>
<title>Welcome to my site</title>
</head>
<body>
<header>
....
<?php $this->call_modules('header') ?>;
</header>
<section>
<aside>
<?php $this->call_modules('sidebar') ?>;
</aside>
</section>
</body>
</html>
Así que los siguientes módulos conseguirían llamado y el contenido entraría ahí lugar:
/system/applications/admin/modules/header/a.php
/system/applications/admin/modules/header/b.php
/system/applications/admin/modules/sidebar/a.php
/system/applications/admin/modules/sidebar/b.php
Así que me parece que funcionaría bien, pero el problema es que nunca he construido un sistema de módulo antes, y me siento ya que estos son más clasificados como ganchos.
En mi cabeza Básicamente quiero un sistema simple que consiste en 1 archivo de clase, y las plantillas, si es necesario, el archivo calss probablemente se vería así:
class Module_HelloWorld extends Module
{
public static function info()
{
return array(
'name' => 'Hello Word',
'version' => '1.0.0',
'description' => 'Dispalys "hello World"',
'author' => 'Robert Pitt',
);
}
public function execute($context,$action)
{
//$context would be the current view at the point of execution for the view
//$action would be header/sidebar
}
}
Así que mi pregunta en pocas palabras, ¿cuál sería ser la mejor manera de diseñar un sistema de módulos para mi framework, permitiendo que los módulos de 3Rd party sean eliminados dentro de un directorio y luego instalados desde el administrador, sin mucha intervención del usuario?
Gracias por su respuesta, veré lo que puedo encontrar más tarde, aunque el almacenamiento de la base de datos no es la ruta que quiero bajar. – RobertPitt
@RobertPitt, puede funcionar para su escenario tener una correspondencia uno-a-uno entre una clase y un módulo, pero la base de datos funcionó para mí. –