{"id":6160,"date":"2026-05-05T13:47:46","date_gmt":"2026-05-05T16:47:46","guid":{"rendered":"https:\/\/thiagorossi.com.br\/blog\/?p=6160"},"modified":"2026-05-05T14:00:03","modified_gmt":"2026-05-05T17:00:03","slug":"foreign-function-interface-com-php-e-rubix-ml","status":"publish","type":"post","link":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/","title":{"rendered":"Foreign Function Interface com PHP e Rubix ML"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 5<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>\n<p class=\"has-medium-font-size wp-block-paragraph\">Foreign Function Interface com PHP e Rubix ML: Estamos chegando ao pen\u00faltimo artigo da nossa <strong>Masterclass de Rubix ML<\/strong>, e o tema de hoje \u00e9, sem d\u00favida, o &#8220;divisor de \u00e1guas&#8221; para quem busca performance extrema. J\u00e1 falamos sobre paraleliza\u00e7\u00e3o e containers, mas hoje vamos abrir o cap\u00f4 do PHP e conectar o motor diretamente ao asfalto.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Como desenvolvedor web s\u00eanior e especialista em <strong>Rubix ML<\/strong>, preparei este vig\u00e9simo nono artigo para apresentar o <strong>FFI (Foreign Function Interface)<\/strong>. Vamos descobrir como voc\u00ea pode acelerar o processamento das suas solu\u00e7\u00f5es utilizando bibliotecas escritas em C, sem precisar escrever uma \u00fanica linha de extens\u00e3o em C++ ou compilar o PHP do zero.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">FFI (Foreign Function Interface): Acelerando o PHP com Bibliotecas C<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Foreign Function Interface com PHP e Rubix ML: Desde o PHP 7.4, e consolidado no PHP 8.x, o <strong>FFI<\/strong> permite que o desenvolvedor carregue bibliotecas din\u00e2micas compartilhas (<code>.so<\/code> no Linux, como o que usamos na Hostinger, ou <code>.dll<\/code> no Windows) e chame suas fun\u00e7\u00f5es diretamente como se fossem fun\u00e7\u00f5es nativas do PHP. No contexto de Machine Learning e do <strong>Rubix ML<\/strong>, isso significa que podemos delegar c\u00e1lculos matem\u00e1ticos pesados para bibliotecas ultrarr\u00e1pidas como <strong>OpenBLAS<\/strong>, <strong>MKL<\/strong> ou at\u00e9 implementa\u00e7\u00f5es personalizadas de \u00e1lgebra linear.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">1. O que \u00e9 FFI e por que ele \u00e9 o futuro da performance em PHP?<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Historicamente, para o PHP conversar com uma biblioteca C, voc\u00ea precisava criar uma &#8220;extens\u00e3o&#8221; (como a pr\u00f3pria extens\u00e3o Tensor do Rubix ML). Isso envolvia um conhecimento profundo da API interna do PHP (Zend Engine) e um ciclo de compila\u00e7\u00e3o complexo.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O <strong>FFI<\/strong> muda o jogo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Acesso Direto:<\/strong> Voc\u00ea define a interface em PHP e chama o bin\u00e1rio C.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Velocidade de Execu\u00e7\u00e3o:<\/strong> Fun\u00e7\u00f5es escritas em C executam muito mais r\u00e1pido para tarefas repetitivas e intensivas de CPU do que o c\u00f3digo interpretado.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Ecossistema Amplo:<\/strong> Permite usar bibliotecas de compress\u00e3o, criptografia e, claro, processamento num\u00e9rico que j\u00e1 existem h\u00e1 d\u00e9cadas no mundo C.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Entender o FFI \u00e9 o que separa um desenvolvedor web comum de um engenheiro de software de alto n\u00edvel.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">2. FFI no Ecossistema Rubix ML<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Voc\u00ea deve estar se perguntando: &#8220;Se o Rubix ML j\u00e1 usa a extens\u00e3o Tensor, por que eu precisaria do FFI?&#8221;.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">A resposta \u00e9 <strong>customiza\u00e7\u00e3o<\/strong>. Imagine que voc\u00ea descobriu um algoritmo de nicho que ainda n\u00e3o existe no Rubix ML, mas possui uma biblioteca em C ultra-otimizada. Com o FFI, voc\u00ea pode integrar esse algoritmo ao seu fluxo de trabalho sem esperar que algu\u00e9m crie uma extens\u00e3o PHP para ele.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Al\u00e9m disso, o pr\u00f3prio motor por tr\u00e1s do Rubix ML pode se beneficiar do FFI para acessar fun\u00e7\u00f5es de baixo n\u00edvel da CPU (como instru\u00e7\u00f5es AVX ou SSE) que o PHP nativo n\u00e3o alcan\u00e7a diretamente.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">3. M\u00e3o na Massa: Chamando C a partir do PHP<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Vamos criar um exemplo did\u00e1tico. Imagine que precisamos de uma fun\u00e7\u00e3o de c\u00e1lculo de dist\u00e2ncia Euclidiana extremamente r\u00e1pida para o nosso sistema de recomenda\u00e7\u00e3o de vagas.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Passo 1: O c\u00f3digo em C (exemplo_math.c)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Primeiro, ter\u00edamos uma biblioteca simples. (Em um cen\u00e1rio real, voc\u00ea usaria uma biblioteca j\u00e1 pronta).<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">C<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>\/\/ Compilado como exemplo_math.so\ndouble euclidian_distance(double x1, double y1, double x2, double y2) {\n    return sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Passo 2: Integrando com PHP via FFI<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code has-medium-font-size\"><code>\/\/ No seu script PHP\n$ffi = FFI::cdef(\n    \"double euclidian_distance(double x1, double y1, double x2, double y2);\", \/\/ Defini\u00e7\u00e3o da fun\u00e7\u00e3o\n    \".\/exemplo_math.so\" \/\/ Caminho para a biblioteca\n);\n\n\/\/ Chamando a fun\u00e7\u00e3o C como se fosse PHP\n$distancia = $ffi-&gt;euclidian_distance(10.5, 20.0, 15.2, 22.5);\n\necho \"A dist\u00e2ncia calculada em C \u00e9: \" . $distancia;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">4. Aplicabilidade Real: Processamento de Grandes Datasets<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Em uma solu\u00e7\u00e3o de recrutamento e sele\u00e7\u00e3o, voc\u00ea pode ter um dataset com milh\u00f5es de coordenadas geogr\u00e1ficas de candidatos e empresas. Calcular a dist\u00e2ncia entre todos eles em PHP puro pode ser lento devido ao overhead do interpretador.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Ao delegar esse c\u00e1lculo para uma biblioteca C via <strong>FFI<\/strong>, voc\u00ea:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Reduz o consumo de mem\u00f3ria:<\/strong> C lida com tipos de dados primitivos de forma muito mais eficiente.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Ganha em concorr\u00eancia:<\/strong> Algumas bibliotecas C s\u00e3o internamente multithreaded.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Libera o PHP para a l\u00f3gica de neg\u00f3cio:<\/strong> O PHP cuida da interface e do banco de dados, enquanto o C cuida do &#8220;trabalho sujo&#8221; matem\u00e1tico.<\/li>\n<\/ol>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">5. Performance e Riscos: O que voc\u00ea precisa saber<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Como diz o tio de um amigo da vizinhan\u00e7a: &#8220;Com grandes poderes, v\u00eam grandes responsabilidades&#8221;. O FFI remove as prote\u00e7\u00f5es de mem\u00f3ria do PHP.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Seguran\u00e7a:<\/strong> Se voc\u00ea passar um ponteiro errado em C, o PHP n\u00e3o vai dar um erro amig\u00e1vel; ele vai dar um <strong>Segmentation Fault<\/strong> (derrubar o processo).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>FFI.preload:<\/strong> Para m\u00e1xima performance em produ\u00e7\u00e3o (na sua VPS), utilize o <code>ffi.preload<\/code> no <code>php.ini<\/code>. Isso carrega as defini\u00e7\u00f5es C durante a inicializa\u00e7\u00e3o do servidor, tornando as chamadas quase t\u00e3o r\u00e1pidas quanto fun\u00e7\u00f5es internas do PHP.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Desenvolvimento vs. Produ\u00e7\u00e3o:<\/strong> O FFI \u00e9 desabilitado por padr\u00e3o em ambientes web por seguran\u00e7a. Voc\u00ea precisar\u00e1 de acesso ao <code>php.ini<\/code> para habilit\u00e1-lo.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">6. FFI vs. Extens\u00f5es Nativas<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Quando escolher um ou outro para o seu blog ou sistemas?<\/p>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Caracter\u00edstica<\/strong><\/td><td><strong>FFI<\/strong><\/td><td><strong>Extens\u00e3o Nativa (C\/C++)<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>Dificuldade<\/strong><\/td><td>Baixa (Escreve apenas PHP)<\/td><td>Alta (Exige conhecimento da Zend API)<\/td><\/tr><tr><td><strong>Velocidade de Desenvolvimento<\/strong><\/td><td>Muito R\u00e1pida<\/td><td>Lenta<\/td><\/tr><tr><td><strong>Performance<\/strong><\/td><td>Excelente (m\u00ednimo overhead)<\/td><td>M\u00e1xima (Nativa)<\/td><\/tr><tr><td><strong>Portabilidade<\/strong><\/td><td>Depende do arquivo <code>.so\/.dll<\/code><\/td><td>Precisa recompilar para cada vers\u00e3o PHP<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para 90% dos casos de IA em PHP, o <strong>FFI<\/strong> \u00e9 a escolha mais inteligente por ser flex\u00edvel e f\u00e1cil de manter.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">Conclus\u00e3o: PHP sem Limites de Velocidade<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Foreign Function Interface com PHP e Rubix ML: O uso do <strong>FFI para acelerar o PHP<\/strong> abre um universo de possibilidades para o <strong>Rubix ML<\/strong>. Voc\u00ea n\u00e3o est\u00e1 mais limitado \u00e0s fun\u00e7\u00f5es que a linguagem oferece nativamente. Agora, qualquer avan\u00e7o na ci\u00eancia da computa\u00e7\u00e3o escrito em C ou C++ est\u00e1 ao alcance do seu teclado.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Seja otimizando o motor de busca de vagas ou criando visualiza\u00e7\u00f5es de dados complexas no seu blog, o FFI \u00e9 a ferramenta que transforma o PHP em uma linguagem de alta performance para engenharia de dados. Voc\u00ea aprendeu a derrubar a \u00faltima barreira que existia entre o desenvolvimento web e a computa\u00e7\u00e3o cient\u00edfica de baixo n\u00edvel.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">No pr\u00f3ximo (e \u00faltimo) artigo da nossa s\u00e9rie, vamos fechar com chave de ouro: <strong>&#8220;<strong>O Grande Case (SaaS Inteligente):<\/strong> Consolidando tudo em uma aplica\u00e7\u00e3o real de ponta a ponta.&#8221;<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Mas antes de dominar o Rubix ML, se este for o seu caso, entendemos que toda jornada tem um in\u00edcio. Vamos entender quais s\u00e3o os conhecimentos b\u00e1sicos necess\u00e1rios para aproveitar ao m\u00e1ximo esta poderosa biblioteca. Para iniciar seus estudos do Rubix ML, voc\u00ea precisar\u00e1 dominar as seguintes tecnologias e\/ou framework:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/php\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png\" alt=\"Capa Curso PHP\" class=\"wp-image-2835\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP-300x169.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">PHP<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/sql\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp\" alt=\"SQL\" class=\"wp-image-942\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">SQL<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/laravel\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp\" alt=\"Laravel\" class=\"wp-image-1642\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">Laravel<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/blog\/categoria\/cakephp\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png\" alt=\"CakePHP\" class=\"wp-image-5819\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp.png 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/capa-cakephp-300x169.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">CakePHP<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">E se voc\u00ea gosta do nosso conte\u00fado, n\u00e3o deixe de contribuir adquirindo os servi\u00e7os e produtos dos nossos apoiadores e empresas que somos associados.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hostinger.com.br\/?REFERRALCODE=1THIAGO62\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/03\/hostinger.png\" alt=\"Hospedagem Hostinger\" class=\"wp-image-92\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNDYlc\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/ofertas-amazon.webp\" alt=\"Ofertas Amazon\" class=\"wp-image-1308\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNKmt0\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/amazonprime.webp\" alt=\"Amazon Prime\" class=\"wp-image-1307\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Dica de Especialista:<\/strong> Quer testar o poder do FFI agora? Tente integrar a biblioteca <code>libvips<\/code> via FFI para processamento de imagens. Ela \u00e9 uma ordem de grandeza mais r\u00e1pida que a GD ou ImageMagick, ideal para tratar as fotos em milissegundos!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 5<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>Foreign Function Interface com PHP e Rubix ML: Estamos chegando ao pen\u00faltimo artigo da nossa&#8230;<\/p>\n","protected":false},"author":1,"featured_media":5935,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[98],"tags":[],"class_list":["post-6160","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rubix-ml","wpcat-98-id"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Foreign Function Interface com PHP e Rubix ML - BLOG THIAGO ROSSI<\/title>\n<meta name=\"description\" content=\"Foreign Function Interface com PHP e Rubix ML: Desde o PHP 7.4, e consolidado no PHP 8.x, o FFI permite que o desenvolvedor carregue ...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Foreign Function Interface com PHP e Rubix ML - BLOG THIAGO ROSSI\" \/>\n<meta property=\"og:description\" content=\"Foreign Function Interface com PHP e Rubix ML: Desde o PHP 7.4, e consolidado no PHP 8.x, o FFI permite que o desenvolvedor carregue ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/\" \/>\n<meta property=\"og:site_name\" content=\"BLOG THIAGO ROSSI\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-05T16:47:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-05T17:00:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png\" \/>\n\t<meta property=\"og:image:width\" content=\"758\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thiago Rossi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thiago Rossi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/\"},\"author\":{\"name\":\"Thiago Rossi\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\"},\"headline\":\"Foreign Function Interface com PHP e Rubix ML\",\"datePublished\":\"2026-05-05T16:47:46+00:00\",\"dateModified\":\"2026-05-05T17:00:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/\"},\"wordCount\":1179,\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/RubixML.png\",\"articleSection\":[\"Rubix ML\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/\",\"name\":\"Foreign Function Interface com PHP e Rubix ML - BLOG THIAGO ROSSI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/RubixML.png\",\"datePublished\":\"2026-05-05T16:47:46+00:00\",\"dateModified\":\"2026-05-05T17:00:03+00:00\",\"description\":\"Foreign Function Interface com PHP e Rubix ML: Desde o PHP 7.4, e consolidado no PHP 8.x, o FFI permite que o desenvolvedor carregue ...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/RubixML.png\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/RubixML.png\",\"width\":758,\"height\":426,\"caption\":\"Rubix ML\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/foreign-function-interface-com-php-e-rubix-ml\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Foreign Function Interface com PHP e Rubix ML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"name\":\"THIAGO ROSSI\",\"description\":\"Mais de 20 anos de experi\u00eancia no mercado de TI!\",\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"alternateName\":\"TR | CURSO WEB DEV\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\",\"name\":\"THIAGO ROSSI\",\"alternateName\":\"TR | CURSO WEB DEV\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"width\":300,\"height\":300,\"caption\":\"THIAGO ROSSI\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\",\"name\":\"Thiago Rossi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"caption\":\"Thiago Rossi\"},\"description\":\"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \\\"GDD \u2013 O Guia Definitivo\\\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.\",\"sameAs\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\",\"https:\\\/\\\/instagram.com\\\/thiagorossix86\",\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"],\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/author\\\/thiagorossi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Foreign Function Interface com PHP e Rubix ML - BLOG THIAGO ROSSI","description":"Foreign Function Interface com PHP e Rubix ML: Desde o PHP 7.4, e consolidado no PHP 8.x, o FFI permite que o desenvolvedor carregue ...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/","og_locale":"pt_BR","og_type":"article","og_title":"Foreign Function Interface com PHP e Rubix ML - BLOG THIAGO ROSSI","og_description":"Foreign Function Interface com PHP e Rubix ML: Desde o PHP 7.4, e consolidado no PHP 8.x, o FFI permite que o desenvolvedor carregue ...","og_url":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/","og_site_name":"BLOG THIAGO ROSSI","article_published_time":"2026-05-05T16:47:46+00:00","article_modified_time":"2026-05-05T17:00:03+00:00","og_image":[{"width":758,"height":426,"url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png","type":"image\/png"}],"author":"Thiago Rossi","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Thiago Rossi","Est. tempo de leitura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/#article","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/"},"author":{"name":"Thiago Rossi","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87"},"headline":"Foreign Function Interface com PHP e Rubix ML","datePublished":"2026-05-05T16:47:46+00:00","dateModified":"2026-05-05T17:00:03+00:00","mainEntityOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/"},"wordCount":1179,"publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png","articleSection":["Rubix ML"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/","url":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/","name":"Foreign Function Interface com PHP e Rubix ML - BLOG THIAGO ROSSI","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/#primaryimage"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png","datePublished":"2026-05-05T16:47:46+00:00","dateModified":"2026-05-05T17:00:03+00:00","description":"Foreign Function Interface com PHP e Rubix ML: Desde o PHP 7.4, e consolidado no PHP 8.x, o FFI permite que o desenvolvedor carregue ...","breadcrumb":{"@id":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/#primaryimage","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2026\/04\/RubixML.png","width":758,"height":426,"caption":"Rubix ML"},{"@type":"BreadcrumbList","@id":"https:\/\/thiagorossi.com.br\/blog\/foreign-function-interface-com-php-e-rubix-ml\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thiagorossi.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Foreign Function Interface com PHP e Rubix ML"}]},{"@type":"WebSite","@id":"https:\/\/thiagorossi.com.br\/blog\/#website","url":"https:\/\/thiagorossi.com.br\/blog\/","name":"THIAGO ROSSI","description":"Mais de 20 anos de experi\u00eancia no mercado de TI!","publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"alternateName":"TR | CURSO WEB DEV","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thiagorossi.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/thiagorossi.com.br\/blog\/#organization","name":"THIAGO ROSSI","alternateName":"TR | CURSO WEB DEV","url":"https:\/\/thiagorossi.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","width":300,"height":300,"caption":"THIAGO ROSSI"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/linkedin.com\/in\/thiagox86"]},{"@type":"Person","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87","name":"Thiago Rossi","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","caption":"Thiago Rossi"},"description":"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \"GDD \u2013 O Guia Definitivo\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.","sameAs":["https:\/\/thiagorossi.com.br\/blog","https:\/\/instagram.com\/thiagorossix86","https:\/\/linkedin.com\/in\/thiagox86"],"url":"https:\/\/thiagorossi.com.br\/blog\/author\/thiagorossi\/"}]}},"_links":{"self":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/6160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=6160"}],"version-history":[{"count":11,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/6160\/revisions"}],"predecessor-version":[{"id":6172,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/6160\/revisions\/6172"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media\/5935"}],"wp:attachment":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=6160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=6160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=6160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}