¿Quieres que un marco PHP salpicado de jerga pirata local?
¡Será el marco más básico en los Seven Seas!
http://bonemvc.delboysplace.co.uk
¡El hueso ahora estará en v3.x! ¡Se ha simplificado todo el descubrimiento de 'th' y ser mucho más maniobrable! Estamos usando un contenedor de inyección de dependencia PSR-11, junto con un enrutador de middleware PSR-15, de manera modular. ¡Salta a bordo!
¡Primero asegúrese de tener compositor! Luego instale hueso.
composer create-project delboy1978uk/bonemvc your/path/here
O si no ha instalado el compositor a nivel mundial ...
php composer.phar create-project delboy1978uk/bonemvc your/path/here
Consulte a continuación la información sobre cómo obtener un servidor de desarrollo completo usando Docker
Puede colocar cualquier número de archivos .php en la carpeta config/. Asegúrese de que devuelvan una matriz con la configuración. Puede anular la configuración basada en el entorno var application_env, por lo que, por ejemplo, si el entorno fuera producción, cargaría la configuración adicional del subdirectorio de producción.
Hay varios archivos de configuración de forma predeterminada:
db.php
i18n.php
logs.php
mail.php
routes.php
templates.php
En sus archivos de configuración, puede agregar lo que desee. Se almacena en el Bone MVC Registry.
Establezca sus credenciales de DB predeterminadas en el principal config/db.php, y cualquier configuración específica del entorno en un subdirectorio
' db ' => array (
' host ' => ' 127.0.0.1 ' ,
' database ' => ' bone ' ,
' user ' => ' leChuck ' ,
' pass ' => ' bigWh00p ' ,
),Luego, en tu controlador, puedes obtener una conexión PDO diciendo:
$ this -> getDbAdapter (); El hueso apoya la traducción a diferentes lugares. Los archivos de traducción (getText .po y .mo ) deben colocarse en data/translations , bajo un subdirectorio de la configuración regional, por ejemplo, data/translations/en_GB/en_GB.po . Puede establecer la ubicación predeterminada y una variedad de locales compatibles.
<?php
use Zend I18n Translator Loader Gettext ;
return [
' i18n ' => [
' translations_dir ' => ' data/translations ' ,
' type ' => Gettext::class,
' default_locale ' => ' en_PI ' ,
' supported_locales ' => [ ' en_PI ' , ' en_GB ' , ' nl_BE ' , ' fr_BE ' ],
],
];Para usar el traductor, simplemente puede llamar: para usar el traductor, simplemente puede llamar:
<?php
// from a controller:
$ this -> getTranslator ()-> translate ( ' placeholder.string ' );
// to set locale
$ this -> getTranslator ()-> setLocale ( $ locale );
// from a view file:
$ this -> t ( ' placeholder ' );Bone usa monólogo/monólogo, y los registros se pueden encontrar en datos/registros. Con cuestión, solo admitimos escribir a archivos, pero puede agregar tantos canales como desee:
<?php
return [
' log ' => [
' channels ' => [
' default ' => ' data/logs/default_log ' ,
],
],
];Para usar el registrador en un controlador:
$ this -> getLog ()-> debug ( $ message ) // or error(), etc, see PSR-3 Bone usa el correo zend. Para configurar el cliente de correo, simplemente deje caer su configuración (consulte Zend Mail Docs)
<?php
return [
' mail ' => [
' name ' => ' 127.0.0.1 ' ,
' host ' => ' localhost ' ,
' port ' => 25 ,
// 'connection_class' => 'login', // plain, login, crammd5
// 'connection_config' => [
// 'username' => 'user',
// 'password' => 'pass',
// ],
],
];Si está utilizando el cuadro Docker proporcionado por Bone, también tiene el increíble Mailhog a su disposición. Explore a Awesome.scot:8025 y verá una bandeja de entrada de Catch that ELEM, para que nunca deba preocuparse por los correos electrónicos de desarrollo que llegan al mundo real.
Se pueden crear módulos en su carpeta src/ . El módulo predeterminado es BoneAppAppPackage . Los módulos se habilitan agregándolos en config/packages.php . Los paquetes de proveedores también se pueden instalar a través del compositor y habilitarse de la misma manera.
Un módulo, al menos, implementará BarnacleRegistrationInterface , y si se trata de un módulo MVC que contiene rutas, también debe implementar BoneRouterRouterConfigInterface . Hay cuatro métodos para implementar:
hasEntityPath(): bool , si su módulo utiliza las entidades de doctrina return true (requiere el paquete delboy1978uk/bone-doctrine )getEntityPath(): string , si devuelve verdadero, esta es la carpeta que reside su clase de entidad.addToContainer(Container $c) , descrito a continuaciónaddRoutes(Container $c, Router $router): Router , descrito a continuación Puede crear fábricas para sus clases y, de lo contrario, inicializar cualquier cosa requerida en otro lugar de su aplicación. Como ejemplo, una clase de controlador puede desear inyectar el motor View, por lo que en el método agregaría lo siguiente:
$ c [MyController::class] = $ c -> factory ( function ( Container $ c ) {
$ view = $ c -> get (PlatesEngine::class);
return new MyController ( $ view );
}); El contenedor de inyección de dependencia es delboy1978uk/barnacle , que es esencialmente Pimple extendido e implementando PSR-11.
Bone MVC utiliza league/route , una biblioteca de middleware PSR-15. Las rutas se agregan en su paquete así:
/**
* @param Container $c
* @param Router $router
* @return Router
*/
public function addRoutes ( Container $ c , Router $ router ): Router
{
$ router -> map ( ' GET ' , ' / ' , [IndexController::class, ' indexAction ' ]);
$ router -> map ( ' GET ' , ' /learn ' , [IndexController::class, ' learnAction ' ]);
return $ router ;
}Vea sus documentos para obtener más información sobre el uso del enrutador
¡Avast Ye! Estamos usando algunas libs adicionales por th 'Cap'n (Delboy1978uk), a saber:
delboy1978uk/cdn
delboy1978uk/form
delboy1978uk/generator
delboy1978uk/image
delboy1978uk/session
Para el CDN lib, puedes hacer eco rápidamente de JavaScript y CSS usando DelCdn , consulte AppViewlayoutsbonemvc.php para un ejemplo.
Consulte también Use DelIcon y DelCss , que vienen como parte del CDN lib.
Puedes crear formularios de arranque personalizados Usin ' delboy1978uk/form , consulte los detalles de la página de GitHub.
Puedes hacer rápidamente un nuevo módulo usando el comando CLI del generador.
Puedes manipular las imágenes usando las funciones de PHP, con la clase DelImage .
Puedes establecer las variables de sesión usin ' DelSessionManager , consulte GitHub para obtener información.