Seja querendo uma estrutura de PHP saltada com jarinagem pirata local?
É a estrutura mais nua dos sete mares!
http://bonemvc.delboysplace.co.uk
Osso agora esteja no v3.x! Todo o navio de digital do navio foi simplificado e muito mais manobrável! Estamos usando um recipiente de injeção de dependência do PSR-11, juntamente com um roteador de middleware PSR-15, de maneira modular! Salte a bordo!
Primeiro, verifique se você tem compositor! Em seguida, instale osso.
composer create-project delboy1978uk/bonemvc your/path/here
Ou se você não instalou o compositor globalmente ...
php composer.phar create-project delboy1978uk/bonemvc your/path/here
Veja abaixo as informações sobre como obter um servidor de desenvolvimento completo usando o Docker
Você pode cair em qualquer número de arquivos .php na configuração/ pasta. Certifique -se de que eles retornem uma matriz com a configuração. Você pode substituir a configuração com base no ambiente var Application_env; portanto, por exemplo, se o ambiente fosse a produção, ele carregaria a configuração adicional do subdiretório de produção.
Existem vários arquivos de configuração por padrão:
db.php
i18n.php
logs.php
mail.php
routes.php
templates.php
Nos seus arquivos de configuração, você pode adicionar o que quiser. Ele é armazenado no osso mvc registro.
Defina suas credenciais de banco de dados padrão na configuração principal/db.php e qualquer configuração específica do ambiente em um subdiretório
' db ' => array (
' host ' => ' 127.0.0.1 ' ,
' database ' => ' bone ' ,
' user ' => ' leChuck ' ,
' pass ' => ' bigWh00p ' ,
),Então, no controlador, você pode obter uma conexão com PDO dizendo:
$ this -> getDbAdapter (); O osso suporta a tradução em diferentes locais. Os arquivos de tradução (getText .po e .mo ) devem ser colocados em data/translations , sob um subdiretório da localidade, por exemplo, data/translations/en_GB/en_GB.po . Você pode definir a localidade padrão e uma variedade de locais suportados.
<?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 o tradutor, você pode simplesmente ligar: para usar o tradutor, você pode simplesmente ligar:
<?php
// from a controller:
$ this -> getTranslator ()-> translate ( ' placeholder.string ' );
// to set locale
$ this -> getTranslator ()-> setLocale ( $ locale );
// from a view file:
$ this -> t ( ' placeholder ' );O Bone usa Monolog/Monolog, e os logs podem ser encontrados em dados/logs.Corrente, apoiamos apenas a gravação de arquivos, mas você pode adicionar quantos canais quiser:
<?php
return [
' log ' => [
' channels ' => [
' default ' => ' data/logs/default_log ' ,
],
],
];Para usar o registrador em um controlador:
$ this -> getLog ()-> debug ( $ message ) // or error(), etc, see PSR-3 Oso usa Zend Mail. Para configurar o cliente de email, basta aparecer na sua configuração (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',
// ],
],
];Se você estiver usando a caixa do Docker fornecida pelo Bone, também terá o impressionante MailHog à sua disposição. Navegue para Awesome.Scot:8025 e você verá uma caixa de entrada de e -mail de captura, para que nunca precise se preocupar com os e -mails de desenvolvimento atingindo o mundo real.
Os módulos podem ser criados na sua pasta src/ . O módulo padrão é BoneAppAppPackage . Os módulos são ativados adicionando -os em config/packages.php . Os pacotes de fornecedores também podem ser instalados via compositor e ativados da mesma maneira.
No mínimo, um módulo implementará BarnacleRegistrationInterface e, se for um módulo MVC que contém rotas, ele também deve implementar BoneRouterRouterConfigInterface . Existem quatro métodos em todos para implementar:
hasEntityPath(): bool , se o seu módulo usar entidades de doutrina retornar TRUE (requer Pacote delboy1978uk/bone-doctrine )getEntityPath(): string , se você retornar verdadeiro, esta é a pasta que sua classe de entidade reside.addToContainer(Container $c) , descrito abaixoaddRoutes(Container $c, Router $router): Router , descrito abaixo Você pode criar fábricas para suas aulas e, de outra forma, inicializar qualquer coisa necessária em outras partes do seu aplicativo. Como exemplo, uma classe de controlador pode querer injetar o mecanismo de exibição; portanto, no método você adicionaria o seguinte:
$ c [MyController::class] = $ c -> factory ( function ( Container $ c ) {
$ view = $ c -> get (PlatesEngine::class);
return new MyController ( $ view );
}); O recipiente de injeção de dependência é delboy1978uk/barnacle , que é essencialmente estendido e implementando o PSR-11.
O Bone MVC usa league/route , uma biblioteca de middleware PSR-15. As rotas são adicionadas ao seu pacote como assim:
/**
* @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 ;
}Veja seus documentos para obter mais informações sobre o uso do roteador
Avast Ye! Estamos usando alguns bibliotecas adicionais por Th 'Cap'n (Delboy1978uk), a saber:
delboy1978uk/cdn
delboy1978uk/form
delboy1978uk/generator
delboy1978uk/image
delboy1978uk/session
Fer o cdn lib, você pode ecoar rapidamente JavaScript e CSS usando DelCdn , consulte AppViewlayoutsbonemvc.php Fer um exemplo.
Consulte também Use DelIcon e DelCss , que são parte da CDN lib.
Ye pode criar formulários prontos para o Bootstrap Usin ' delboy1978uk/form , consulte os detalhes da página do GitHub.
Você pode fazer rapidamente um novo módulo com o comando do gerador da CLI do gerador.
Você pode manipular as imagens que usam as funções PHP do GD, com a classe DelImage .
Você pode definir variáveis de sessão usin ' DelSessionManager , consulte o github para obter informações.