A seguir está uma lista de funções fornecidas na API
   do plugin mysqlnd:
  
mysqlnd_plugin_register()
mysqlnd_plugin_count()
mysqlnd_plugin_get_plugin_connection_data()
mysqlnd_plugin_get_plugin_result_data()
mysqlnd_plugin_get_plugin_stmt_data()
mysqlnd_plugin_get_plugin_net_data()
mysqlnd_plugin_get_plugin_protocol_data()
mysqlnd_conn_get_methods()
mysqlnd_result_get_methods()
mysqlnd_result_meta_get_methods()
mysqlnd_stmt_get_methods()
mysqlnd_net_get_methods()
mysqlnd_protocol_get_methods()
Não existe uma definição formal do que é um plugin e como funciona um mecanismo de plugin.
Os componentes frequentemente encontrados em mecanismos de plugins são:
Um gerenciador de plugin
Uma API de plugin
Serviços (ou módulos) de aplicação
APIs de serviço (ou APIs de módulo) de aplicação
   O conceito do plugin mysqlnd emprega esses recursos e,
   adicionalmente, desfruta de uma arquitetura aberta.
  
Sem Restrições
   Um plugin tem acesso total ao funcionamento interno do
   mysqlnd. Não há limites ou restrições de
   segurança. Tudo pode ser sobrescrito para implementar algoritmos amigáveis ou
   hostis. É recomendado que se implante apenas plugins de uma
   fonte confiável.
  
Conforme discutido anteriormente, os plugins podem usar ponteiros livremente. Esses ponteiros não são restritos de forma alguma e podem apontar para dados de outro plugin. A aritmética de deslocamento simples pode ser usada para ler os dados de outro plugin.
   É recomendado que se escreva plugins cooperativos e que sempre se
   chame o método pai. Os plugins devem sempre cooperar
   com o próprio mysqlnd.
  
| Extensão | Ponteiro mysqlnd.query() | pilha de chamadas se estiver chamando o pai | 
|---|---|---|
| ext/mysqlnd | mysqlnd.query() | mysqlnd.query | 
| ext/mysqlnd_cache | mysqlnd_cache.query() | 
 | 
| ext/mysqlnd_monitor | mysqlnd_monitor.query() | 
 | 
   Neste cenário, um cache (ext/mysqlnd_cache) e
   um plugin de monitor (ext/mysqlnd_monitor) são carregados.
   Ambas são sub-classes de Connection::query(). O registro
   do plugin acontece em MINIT usando a lógica
   mostrada anteriormente. O PHP chama extensões em ordem alfabética por
   padrão. Os plugins não reconhecem uns aos outros e não definem dependências
   de extensão.
  
Por padrão, os plugins chamam a implementação pai do método de consulta em sua versão derivada do método.
Recapitulação da Extensão PHP
   Esta é uma recapitulação do que acontece ao usar um plugin de exemplo,
   ext/mysqlnd_plugin, que expõe a API do
   plugin C mysqlnd ao PHP:
  
Qualquer aplicação PHP MySQL tenta estabelecer uma conexão com 192.168.2.29
     A aplicação PHP usará ext/mysql,
     ext/mysqli ou PDO_MYSQL. Todas
     as três extensões PHP MySQL usam mysqlnd para
     estabelecer a conexão com 192.168.2.29.
    
     Mysqlnd chama seu método de conexão, que agora é
     uma sub-classe de ext/mysqlnd_plugin.
    
     ext/mysqlnd_plugin chama o gancho do espaço de usuário
     proxy::connect() registrado pelo usuário.
    
     O gancho do espaço de usuário altera o IP do host de conexão de 192.168.2.29
     para 127.0.0.1 e retorna a conexão estabelecida por
     parent::connect().
    
     ext/mysqlnd_plugin executa o equivalente a
     parent::connect(127.0.0.1) chamando o
     método mysqlnd original para estabelecer uma
     conexão.
    
     ext/mysqlnd estabelece uma conexão e retorna
     ao ext/mysqlnd_plugin.
     ext/mysqlnd_plugin também retorna.
    
Qualquer que seja a extensão PHP MySQL utilizada pela aplicação, ela recebe uma conexão com 127.0.0.1. A própria extensão PHP MySQL retorna ao aplicativo PHP. E o ciclo se fecha.
