Estrutura de diretório
plugin/
└── foo
├── app
│ ├── controller
│ │ └── IndexController.php
│ ├── exception
│ │ └── Handler.php
│ ├── functions.php
│ ├── middleware
│ ├── model
│ └── view
│ └── index
│ └── index.html
├── config
│ ├── app.php
│ ├── autoload.php
│ ├── container.php
│ ├── database.php
│ ├── exception.php
│ ├── log.php
│ ├── middleware.php
│ ├── process.php
│ ├── redis.php
│ ├── route.php
│ ├── static.php
│ ├── thinkorm.php
│ ├── translation.php
│ └── view.php
├── public
└── api
Nós vemos uma estrutura de diretório e arquivos de configuração semelhantes ao webman em um plugin. Na verdade, a experiência de desenvolvimento de um aplicativo comum do webman é basicamente a mesma que a de desenvolvimento de um plugin.
O diretório e o nome do plugin seguem a especificação PSR4. Visto que os plugins são todos armazenados no diretório de plugin, os namespaces começam com "plugin\", por exemplo, plugin\foo\app\controller\UserController
.
Sobre o diretório api
Cada plugin tem um diretório api. Se o seu aplicativo fornece algumas interfaces internas para serem chamadas por outros aplicativos, é necessário colocar as interfaces no diretório api.
É importante ressaltar que as interfaces mencionadas são interfaces de chamadas de função, não de chamadas de rede.
Por exemplo, o plugin de email
fornece uma interface Email::send()
em plugin/email/api/Email.php
para que outros aplicativos possam enviar e-mails.
Além disso, plugin/email/api/Install.php
é gerado automaticamente e é usado para permitir que o mercado de plugins do webman-admin execute operações de instalação ou desinstalação.