{"id":31,"date":"2006-06-14T14:49:21","date_gmt":"2006-06-14T14:49:21","guid":{"rendered":"http:\/\/www.olivierdoucet.info\/wordpress\/?p=31"},"modified":"2006-06-14T14:49:21","modified_gmt":"2006-06-14T14:49:21","slug":"26-php-arrive-enfin-dans-l-applicatif","status":"publish","type":"post","link":"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/","title":{"rendered":"PHP enfin pr\u00eat pour l&rsquo;applicatif"},"content":{"rendered":"<p>Lorsqu&rsquo;on parle de PHP, on pense tout de suite \u00ab\u00a0site internet\u00a0\u00bb. Mais saviez-vous que PHP a \u00e9galement d&rsquo;autres utilit\u00e9s ? On connaissait d\u00e9j\u00e0 la version \u00ab\u00a0cli\u00a0\u00bb qui permet d&rsquo;executer un script en ligne de commande, avec un affichage optimis\u00e9 pour (sans les ent\u00eates HTTP entre autre, mais \u00e9galement sans le formatage HTML des messages d&rsquo;erreurs). Et bien il est \u00e9galement possible de r\u00e9aliser des applications avec interface graphique.<br \/>\n<!--more--><br \/>\nIl existe pour cela deux librairies graphiques : GTK et Winbinder. L\u00e0 o\u00f9 GTK est multiplateforme (Linux\/Win), WinBinder est lui sp\u00e9cialis\u00e9 dans les applications Windows. Ce dernier r\u00e9alise des interfaces bien plus jolies en utilisant de composants Win, l\u00e0 o\u00f9 GTK a un style moins \u00ab\u00a0fin\u00a0\u00bb mais portable. %%% %%% __GTK-PHP__%%% Ceux qui ont d\u00e9j\u00e0 manipul\u00e9 GTK dans des scripts en C ne vont pas se sentir d\u00e9pays\u00e9s. Ici, les fonctions ont le m\u00eame nom. La syntaxe est juste objet et non fonctionnelle. On retrouve les grands classiques : GDK, GTK, et Pango pour la gestion des textes un peu complexes (en clair, d\u00e8s qu&rsquo;il y a des caract\u00e8res accentu\u00e9s ou non latins). Son utilisation reste fastidieuse d\u00e8s qu&rsquo;on souhaite faire des interfaces \u00e9volu\u00e9es (ca me rappelle les vieux TP en cours, o\u00f9 on passait une heure \u00e0 aligner 3 boutons et des champs de saisie&#8230;). La version 2 est en cours de d\u00e9veloppement et devrait sortir cet \u00e9t\u00e9. Une version beta est disponible. \u00a0\u00bb__Mise \u00e0 jour 14 juin 11h30__\u00a0\u00bb%%% Merci \u00e0 Patate en commentaire qui a port\u00e9 \u00e0 mon attention l&rsquo;existence d&rsquo;un frontend \u00e0 Glade qui permet de r\u00e9aliser des interfaces GTK en drag and drop. L&rsquo;outil se nomme phpGladeTool. \u00a0\u00bbAvantages :\u00a0\u00bb %%% * Marche sous Windows et Linux * M\u00eame principe de fonctionnement que GTK pour C ou C++ \u00a0\u00bbInconv\u00e9nients :\u00a0\u00bb%%% * Utilisation fastidieuse d\u00e8s qu&rsquo;il y a plus d&rsquo;une dizaine d&rsquo;\u00e9l\u00e9ments sur l&rsquo;interface (obligation d&rsquo;utiliser Glade et phpGladeTool). * Interfaces r\u00e9alis\u00e9es de qualit\u00e9 moyenne. %%% __Winbinder__%%% Une d\u00e9couverte r\u00e9cente pour moi \ud83d\ude09 Cette librairie va vous fabriquer uniquement des interfaces Windows, mais quelles interfaces ! On a l&rsquo;impression de se retrouver devant un programme en .net ou VB tant l&rsquo;apparence graphique est proche des logiciels Windows justement : Une int\u00e9gration parfaite \u00e0 l&rsquo;interface utilisateur, avec tous les composants habituels de windows : barre de menu, barre de statut, etc. Concernant le code, l&rsquo;utilisation reste relativement ais\u00e9e, notamment gr\u00e2ce au \u00ab\u00a0Winbinder layout Editor\u00a0\u00bb. En clair, une interface graphique de cr\u00e9ation d&rsquo;interface, comme le propose Visual Basic par exemple. Vous construisez visuellement votre interface, et apr\u00e8s il ne vous reste plus qu&rsquo;\u00e0 \u00e9crire le code derri\u00e8re tout \u00e7a (comme VB encore une fois :p). Le programme permet \u00e9galement de compiler le r\u00e9sultat en un executable. Il permet \u00e9galement de convertir la documentation du format XML au format CHM, utilis\u00e9 dans Windows. La librairie est orient\u00e9e fonctionnelle et non objet. %%% \u00a0\u00bbAvantages :\u00a0\u00bb %%% * Interfaces tr\u00e8s jolies * Constructeur graphique d&rsquo;interface (par drag and drop) \u00a0\u00bbInconv\u00e9nients :\u00a0\u00bb%%% * Ne marche qu&rsquo;avec Windows * N\u00e9c\u00e9ssite la derni\u00e8re version de PHP4 ou PHP5. %%% %%% __Transformer le .php en quelque chose d&rsquo;executable__%%% Apr\u00e8s avoir choisi la librairie qui va cr\u00e9er notre interface, il nous reste un dernier soucis \u00e0 r\u00e9gler. En effet, tout ce que vous avez pour le moment, c&rsquo;est un joli fichier .php. Comment distribuer votre programme en executable, sans rendre l&rsquo;installation de PHP n\u00e9c\u00e9ssaire ? C&rsquo;est le but d&rsquo;un compilateur. J&rsquo;en cherchais un depuis des lustres, et bien depuis quelques jours je ne cherche plus \ud83d\ude09 Bambalam est l\u00e0 pour \u00e7a. Pour l&rsquo;instant, il ne produit que des executables Windows .exe. Il utilise PHP 4.4.2 avec une liste de modules (liste exacte dispo sur le site du programme). Et comme un bonheur n&rsquo;arrive jamais seul, sachez qu&rsquo;il en profite pour crypter vos fichiers PHP avec Turk MMCache. Ainsi, vous pouvez distribuer vos petits programmes sans avoir peur qu&rsquo;on r\u00e9cup\u00e8re votre source php pour en faire autre chose \ud83d\ude09 %%% Petite rectification d&rsquo;ailleurs : Votre code PHP ne sera pas \u00e0 proprement dit \u00ab\u00a0compil\u00e9\u00a0\u00bb. En effet, le .exe final contient en fait une version de PHP all\u00e9g\u00e9e, et l&rsquo;ensemble de vos sources en \u00ab\u00a0opcode\u00a0\u00bb, c&rsquo;est \u00e0 dire en code interm\u00e9diaire lisible par l&rsquo;executable PHP mais plus rapide que le code source brut. __Liens:__ * [BAMCompile|http:\/\/www.bambalam.se\/bamcompile\/|en] * [Winbinder|http:\/\/winbinder.org\/|en] * [GTK-PHP|http:\/\/gtk.php.net\/|en] * [Glade|http:\/\/glade.gnome.org\/index.html|en] * [phpGladeTool|http:\/\/phpgladetool.sourceforge.net|en]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lorsqu&rsquo;on parle de PHP, on pense tout de suite \u00ab\u00a0site internet\u00a0\u00bb. Mais saviez-vous que PHP a \u00e9galement d&rsquo;autres utilit\u00e9s ? On connaissait d\u00e9j\u00e0 la version \u00ab\u00a0cli\u00a0\u00bb qui permet d&rsquo;executer un script en ligne de commande, avec un affichage optimis\u00e9 pour (sans les ent\u00eates HTTP entre autre, mais \u00e9galement sans le formatage HTML des messages d&rsquo;erreurs). Et bien il est \u00e9galement possible de r\u00e9aliser des applications avec interface graphique.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[29],"class_list":["post-31","post","type-post","status-publish","format-standard","hentry","category-php-sql","tag-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP enfin pr\u00eat pour l&#039;applicatif - My thoughts<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP enfin pr\u00eat pour l&#039;applicatif - My thoughts\" \/>\n<meta property=\"og:description\" content=\"Lorsqu&#039;on parle de PHP, on pense tout de suite &quot;site internet&quot;. Mais saviez-vous que PHP a \u00e9galement d&#039;autres utilit\u00e9s ? On connaissait d\u00e9j\u00e0 la version &quot;cli&quot; qui permet d&#039;executer un script en ligne de commande, avec un affichage optimis\u00e9 pour (sans les ent\u00eates HTTP entre autre, mais \u00e9galement sans le formatage HTML des messages d&#039;erreurs). Et bien il est \u00e9galement possible de r\u00e9aliser des applications avec interface graphique.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/\" \/>\n<meta property=\"og:site_name\" content=\"My thoughts\" \/>\n<meta property=\"article:published_time\" content=\"2006-06-14T14:49:21+00:00\" \/>\n<meta name=\"author\" content=\"Olivierd\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@odoucet\" \/>\n<meta name=\"twitter:site\" content=\"@odoucet\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Olivierd\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/\",\"url\":\"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/\",\"name\":\"PHP enfin pr\u00eat pour l'applicatif - My thoughts\",\"isPartOf\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#website\"},\"datePublished\":\"2006-06-14T14:49:21+00:00\",\"author\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/308d5cde55f1ba886ebe73450b54c403\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.olivierdoucet.info\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP enfin pr\u00eat pour l&rsquo;applicatif\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#website\",\"url\":\"https:\/\/www.olivierdoucet.info\/blog\/\",\"name\":\"My thoughts\",\"description\":\"En fran\u00e7ais and in english :)\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.olivierdoucet.info\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/308d5cde55f1ba886ebe73450b54c403\",\"name\":\"Olivierd\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"caption\":\"Olivierd\"},\"sameAs\":[\"http:\/\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PHP enfin pr\u00eat pour l'applicatif - My thoughts","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:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/","og_locale":"fr_FR","og_type":"article","og_title":"PHP enfin pr\u00eat pour l'applicatif - My thoughts","og_description":"Lorsqu'on parle de PHP, on pense tout de suite \"site internet\". Mais saviez-vous que PHP a \u00e9galement d'autres utilit\u00e9s ? On connaissait d\u00e9j\u00e0 la version \"cli\" qui permet d'executer un script en ligne de commande, avec un affichage optimis\u00e9 pour (sans les ent\u00eates HTTP entre autre, mais \u00e9galement sans le formatage HTML des messages d'erreurs). Et bien il est \u00e9galement possible de r\u00e9aliser des applications avec interface graphique.","og_url":"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/","og_site_name":"My thoughts","article_published_time":"2006-06-14T14:49:21+00:00","author":"Olivierd","twitter_card":"summary_large_image","twitter_creator":"@odoucet","twitter_site":"@odoucet","twitter_misc":{"\u00c9crit par":"Olivierd","Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/","url":"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/","name":"PHP enfin pr\u00eat pour l'applicatif - My thoughts","isPartOf":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/#website"},"datePublished":"2006-06-14T14:49:21+00:00","author":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/308d5cde55f1ba886ebe73450b54c403"},"breadcrumb":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.olivierdoucet.info\/blog\/2006\/06\/14\/26-php-arrive-enfin-dans-l-applicatif\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.olivierdoucet.info\/blog\/"},{"@type":"ListItem","position":2,"name":"PHP enfin pr\u00eat pour l&rsquo;applicatif"}]},{"@type":"WebSite","@id":"https:\/\/www.olivierdoucet.info\/blog\/#website","url":"https:\/\/www.olivierdoucet.info\/blog\/","name":"My thoughts","description":"En fran\u00e7ais and in english :)","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.olivierdoucet.info\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/308d5cde55f1ba886ebe73450b54c403","name":"Olivierd","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","caption":"Olivierd"},"sameAs":["http:\/\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/31","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/comments?post=31"}],"version-history":[{"count":0,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/31\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/media?parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/categories?post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/tags?post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}