dev-master
9999999-devSimple PHP-MVC Application
GPL-2.0
The Requires
- php >=5.3.3
- simple-php-mvc/simple-php-mvc >=1.6
- simple-php-mvc/installer-module >=0.1
- symfony/debug ^3.0
framework application
Wallogit.com
2017 © Pedro Peláez
Simple PHP-MVC Application
Plantilla con el Modelo Vista Controlador, (*1)
Clonar el repositorio en github. Y luego entrar en la carpeta clonada a través del terminal y luego ejecuta composer install para instalar todas las dependencias del projecto en la carpeta vendor., (*2)
Nota: esta es la forma recomendada de instalación para obtener la aplicación configurada., (*3)
-- Crea una carpeta con el nombre de tu proyecto. -- Entra en la carpeta que creaste y agrega un archivo composer.json con el contenido, (*4)
{
"require": {
"simple-php-mvc/simple-php-mvc-app": 'dev-master'
}
}
-- Abre una terminal de tu sistema operativo y ejecuta en la carpeta del proyecto composer install y espera a que se instale Simple PHP MVC., (*5)
Otra forma de instalar con composer es ejecutando el comando composer install simple-php-mvc/simple-php-mvc en la terminal de tu sistema operativo., (*6)
Asegúrate de que la carpeta raíz del sistema tenga los permisos apropiados con
sudo chmod 755 -R., (*7)
proyecto
|_ app/
|_ config/
routes.json
routes.php
.htaccess
AppMVC.php
autoload.php
console
|_ src/
|_ vendor/
|_ web/
.htaccess
app.php
app_dev.php
Importante: ** en el archivo **
app/AppMVC.phpes la configuración de los módulos, proveedores o servicios y las rutas, y puede ser como el siguiente:, (*8)
<?php
use MVC\MVC as BaseMVC;
use MVC\Module\Module;
use MVC\Provider\Provider;
use MVC\Server\Route;
/**
* Description of AppMVC
*
* @author Ramón Serrano <ramon.calle.88@gmail.com>
*/
class AppMVC extends BaseMVC
{
/**
* Set MVC Application Modules
*
* @return Module[]
*/
public function setModules()
{
$modules = array(
new MVC\Tests\EjemploModule\EjemploModule(),
);
return $modules;
}
/**
* Set MVC Application Providers
*
* @return Provider[]
*/
public function setProviders()
{
$providers = array(
new MVC\DataBase\PdoProvider(array(
'dbname' => 'test'
)),
new MVC\Tests\Provider\DoctrineDBALProvider(array(
'charset' => null,
'driver' => 'pdo_mysql',
'dbname' => 'test',
'host' => 'localhost',
'user' => 'root',
'password' => null,
'port' => null,
)),
new MVC\Tests\Provider\DoctrineORMProvider(array(
'params' => array(
'charset' => null,
'driver' => 'pdo_mysql',
'dbname' => 'test',
'host' => 'localhost',
'user' => 'root',
'password' => null,
'port' => null,
),
'dev_mode' => false,
'etities_type' => 'annotations',
'path_entities' => array(
$this->getAppDir() . '/../src/MVC/Tests/EjemploModule/Entity'
),
'proxy_dir' => null
)),
new MVC\Tests\Provider\MonologProvider(array(
)),
new MVC\Tests\Provider\TwigProvider(array(
'path' => $this->getAppDir() . '/../src/MVC/Tests/EjemploModule/Resources/views'
)),
);
$providers[] = new MVC\Tests\EjemploModule\EjemploProvider(array(
));
return $providers;
}
/**
* Set MVC Application Routes
*
* @return Route[]
*/
public function setRoutes()
{
$routes = parent::setRoutes();
return $routes;
}
/**
* {@inheritdoc}
*/
public function getModules()
{
return $this->container->getModules();
}
}
- Rutas
- En el archivo
app/config/routes.phpoapp/config/routes.jsonpuedes configurar las acciones para las rutas que deseas configurar.- Vistas
- Las vistas debe ser archivos con extensión
.htmlo.php.- Si usa un controlador para mostrar la vista, los nombres de estos archivos deben ser iguales a la accion del controlador. Ejemplo: accion/controlador
index, archivo/vistaindex.html- Los archivos deben ser guardados en la carpeta configurada en templates_path de la instancia de
MVC\MVCcon el nombre de la clase del controlador sin la palabra Controller. Ejemplo: carpetaclasedonde clase -> ClaseController.- Controladores
- Se recomienda que cada controlador extienda de
MVC\Controller\Controller.- El retorno de cada controlador deben ser
cadenas de textoo variables de tipoarreglos asociativoscon valores de cualquier tipo.- Para enviar varias variables a una vista, sean de cualquier tipo, el controlador debe retornar las variables dentro de la función
array(). Ejemplo: $variable1, $variable2, $variable3return array( 'variable1' => $variable1, 'variable2' => $variable2, 'variable3' => $variable3 )
<?php
namespace ControllersNamespace;
use MVC\Controller\Controller,
MVC\MVC,
MVC\Server\HttpRequest;
class ClaseController extends Controller
{
public function indexAction(MVC $mvc, HttpRequest $request)
{
return '
Resultado de la accion, (*9)
';
}
}
Un modelo se crea de la siguiente forma:, (*10)
<?php
namespace ModelsNamespace;
use MVC\DataBase\Model,
MVC\DataBase\PDO;
class Nombre_del_Modelo extends Model
{
public function __construct(PDO $pdo)
{
parent::__construct($pdo, 'nombre_tabla');
}
}
También DBAL Model, (*11)
<?php
namespace ModelsNamespace;
use Doctrine\DBAL\Connection,
MVC\DataBase\DBALModel as Model;
class Nombre_del_Modelo extends Model
{
public function __construct(Connection $conn)
{
parent::__construct($conn, 'nombre_tabla');
}
}
Una ruta se representa como cualquier URI con métodos de consulta que se envía al servidor., (*12)
En la carpeta app/config en el archivo routes.json o routes.php se configuran las rutas de la aplicación., (*13)
[{
"method": ["get", "post", "ajax"],
"pattern": "/index",
"action": "ControllerNamespace\\ClaseController::indexAction",
"name": "foo_index"
},
{
"method": ["ajax", "delete", "get", "post", "put", "head", "options"],
"pattern": "/index2",
"action": "ControllerNamespace\\FooController::index2Action",
"name": "foo_index2"
}]
o, (*14)
use MVC\Server\Route; <?php return array( array( "method" => ["ajax", "get", "post"], "pattern" => "/index", "action" => "ControllerNamespace\\FooController::indexAction", "name" => "foo_index" ), array( new Route(Route::$validMethods, '/', 'ControllerNamespace\\FooController::indexAction2', 'foo_index2') ), );
Usa el método get() de tu aplicación u objeto MVC para crear recursos que devuelvan una llamada a un URI mediante el método HTTP GET., (*15)
$mvc = new \MVC\MVC();
$mvc->get("/hello/[a:name]", function($name) {
return "Hello $name.";
}, 'hello_get');
Usa el método post() de tu aplicación u objeto MVC para crear recursos que devuelvan una llamada a un URI mediante el método HTTP POST., (*16)
$mvc = new \MVC\MVC();
$mvc->post("/hello/[a:name]", function($name) {
return "Hello $name";
}, 'hello_post');
Usa el método delete() de tu aplicación u objeto MVC para crear recursos que devuelvan una llamada a un URI mediante el método HTTP DELETE., (*17)
$mvc = new \MVC\MVC();
$mvc->delete("/hello/[i:id]", function($id) {
return "DELETE $id";
}, 'hello_delete');
Usa el método put() de tu aplicación u objeto MVC para crear recursos que devuelvan una llamada a un URI mediante el método HTTP PUT., (*18)
$mvc = new \MVC\MVC();
$mvc->put("/hello/[i:id]", function($id) {
return "PUT $id";
}, 'hello_put');
Usa el método options() de tu aplicación u objeto MVC para crear recursos que devuelvan una llamada a un URI mediante el método HTTP OPTIONS., (*19)
$mvc = new \MVC\MVC();
$mvc->options("/hello/[i:id]", function($id) {
return "OPTIONS $id";
}, 'hello_options');
Usa el método head() de tu aplicación u objeto MVC para crear recursos que devuelvan una llamada a un URI mediante el método HTTP HEAD., (*20)
$mvc = new \MVC\MVC();
$mvc->head("/hello/[i:id]", function($id) {
return "HEAD $id";
}, 'hello_head');
Usa el método ajax() de tu aplicación u objeto MVC para crear recursos que devuelvan una llamada a un URI mediante el método HTTP AJAX., (*21)
$mvc = new \MVC\MVC();
$mvc->ajax("/hello/[i:id]", function($id) {
return "AJAX $id";
}, 'hello_ajax');
Usa el método group de tu aplicación u objeto MVC para crear recursos de rutas agrupadas. Esto es para agrupar grupos de rutas que tienen el mismo prefijo., (*22)
$mvc = new \MVC\MVC();
$mvc->group("/admin", function($route) use($mvc) {
$mvc->get($route, function() {
return "Admin index";
}, 'admin_index');
$mvc->get("$route/other", function() {
return "Admin other route.";
}, 'admin_other');
});
Los tipos de variables válidos para las rutas son:, (*23)
$mvc = new \MVC\MVC();
$mvc->ajax("/hello/[i:id]/[a:name]", function($id, $name) {
return "AJAX id = $id, name = $name\n";
}, 'hello_id_name');
Esta función redirecciona a una ruta..., (*24)
$mvc = new \MVC\MVC();
$mvc->get("/", function() use($mvc){
$mvc->redirect('/redirect');
}, 'home_redirect');
$mvc->get("/redirect", function(){
return "Redirect\n";
}, 'redirect');
Este aspecto es para registrar otros servicios independientes del Simple PHP MVC extendiendo de MVC\Provider\Provider. Por ejemplo: Doctrine Object Relational Mapper (ORM), SwiftMailer, Monolog, etc., (*25)
<?php
namespace ProvidersNamespace;
use MVC\MVC,
MVC\Provider\Provider;
class ExampleProvider extends Provider
{
public function __construct(array options = array())
{
parent::__contruct($options);
}
public function boot(MVC $mvc)
{
//Configuraciones
}
public function register(MVC $mvc)
{
// Registro de variables de uso o de servicios
$app->setCvpp('example.name', get_class($this));
}
}
Para usar los objetos Response, HttpRequest, View, están las siguientes funciones:, (*26)
Devuelve el objeto de la vistas., (*27)
$mvc = new \MVC\MVC(); $view = $mvc->view();
Devuelve el objeto MVC\Server\HttpRequest., (*28)
$mvc = new \MVC\MVC(); $request = $mvc->request();
Devuelve el objeto \MVC\server\Response., (*29)
$mvc = new \MVC\MVC(); $response = $mvc->response();
Actualmente en desarrollo. Esperar la version 2.0, (*30)
Ramón Serrano ramon.calle.88@gmail.com, (*31)
Simple PHP-MVC Application
GPL-2.0
framework application