{"id":535,"date":"2009-05-05T22:54:00","date_gmt":"2009-05-05T21:54:00","guid":{"rendered":"http:\/\/flaven.fr\/?p=535"},"modified":"2013-09-27T15:22:08","modified_gmt":"2013-09-27T13:22:08","slug":"flex-amfphp-connecter-un-service-amfphp-a-une-application-flex","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2009\/05\/flex-amfphp-connecter-un-service-amfphp-a-une-application-flex\/","title":{"rendered":"Flex &#8211; AMFPHP &#8211; connecter un service amfphp \u00e0 une application Flex"},"content":{"rendered":"<p><!-- Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex --><br \/>\n<!--  Flex, Amphp, actionscript, xml, mxml  --><\/p>\n<p>On va voir comment installer et cr\u00e9er un service avec AMFPHP puis le mettre \u00e0 disposition d&#8217;une application Flex, le dernier logiciel d&#8217;Adobe. Ce logiciel a \u00e9t\u00e9 \u00e9voqu\u00e9 dans un article pr\u00e9c\u00e9dent concernant twitter via l&#8217;application TweetDeck, d\u00e9velopp\u00e9 sous Flex. Cf. <a href=\"http:\/\/social.hecube.net\/blog\/2009\/03\/25\/selectionner-les-meilleurs-twitts-sans-se-fatiguer\/\">S\u00e9lectionner les meilleurs \u00ab twitts \u00bb sans se fatiguer<\/a>.<br \/><!--more--><\/p>\n<p>En premier lieu, une rapide  pr\u00e9sentation rapide de AMFPHP en anglais .<\/p>\n<h4>AMFPHP<\/h4>\n<p>&#8220;AMFPHP is a free open-source PHP implementation of the Action Message Format (AMF). AMF allows for binary serialization of Action Script (AS2, AS3) native types and objects to be sent to server side services. AMFPHP is challenged with implementing the entire AMF protocol to be an alternative to Flex Data Services (AMF3) and Flash Remoting (AMF0).&#8221; Une tr\u00e8s abondante documentation existe sur le site officiel : <a href=\"http:\/\/amfphp.org\/\" target=\"blank\">amfphp.org<\/a>. En r\u00e9sum\u00e9, AMFPHP &#8220;serialize&#8221; des donn\u00e9es et permet de les envoyer \u00e0 Flash ou \u00e0 Flex.<\/p>\n<h4>FLEX<\/h4>\n<p>Flex permet de cr\u00e9er des interfaces utilisateur enrichies avec un maximum de souplesse notamment en terme d&#8217;affichage puisqu&#8217;il existe \u00e9norm\u00e9ment de &#8220;Components&#8221; pr\u00eats \u00e0 l&#8217;emploi. Ces composants peuvent graphiquement \u00eatre personnalis\u00e9s \u00e0 l&#8217;aide de &#8220;skins&#8221; faites en Flash. Une &#8220;skin&#8221; flex est tout simplement d&#8217;un assortiment de boutons en swf et d&#8217;une feuille de style CSS. <\/p>\n<p>Pour votre application, vous pouvez acc\u00e9der \u00e0 deux vues en parall\u00e8le, la source MXML de votre projet d\u00e9nomm\u00e9 &#8220;Source&#8221; ou un \u00e9cran WYSIWYG appel\u00e9 &#8220;Design&#8221; qui vous permettra de positionner et de param\u00e9trer vos diff\u00e9rents &#8220;components&#8221;. Une pr\u00e9cision, si l&#8217;application cr\u00e9\u00e9e sous Flex est vraiment aboutie, on parle de Rich Internet Applications (RIA), c&#8217;est le terme consacr\u00e9. Ce n&#8217;est pas le cas de l&#8217;application de notre exemple !<\/p>\n<h4>L&#8217;espace de travail FLEX<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_1.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<h2>Faire fonctionner FLEX &amp; AMFPHP ensemble<\/h2>\n<p>L&#8217;outil d&#8217;administration de AMFPHP est lui m\u00eame construit avec Flex, cet outil en Flex vous permet de tester la validit\u00e9 du service que vous venez d&#8217;\u00e9crire.<\/p>\n<p>Comment mettre en place un service AMFPHP, tout simplement en \u00e9crivant une &#8220;Class&#8221; dans un fichier <code>.php<\/code>. Eh oui, un service AMFPHP n&#8217;est rien d&#8217;autre qu&#8217;une &#8220;Class&#8221;. Le fichier <code>.php<\/code> est ensuite mis \u00e0 disposition dans le r\u00e9pertoire <code>\/amfphp\/service\/<\/code> compris dans l&#8217;arborescence de r\u00e9pertoires de AMFPHP. Pour information, les concepteurs de AMFPHP ont intentionnellement laiss\u00e9 un fichier <code>place_services_here.txt<\/code> pour indiquer o\u00f9 le fichier devait \u00eatre d\u00e9pos\u00e9.<\/p>\n<h4>L&#8217;arborescence de AMFPHP<\/h4>\n<p>On peut distinguer le r\u00e9pertoire <code>service<\/code> dans lequel on va placer notre &#8220;Class&#8221; \u00e9crit en php.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_1_amfphp_arbo.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<h4>L&#8217;administration de AMFPHP<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_1_amfphp_backend.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<p>Pour rentrer directement dans le vif du sujet, voici en d\u00e9tail le code PHP de la &#8220;Class&#8221; que nous allons \u00e9crire pour AMFPHP.<\/p>\n<h4>Le code php correspondant au service <code>HeService<\/code><\/h4>\n<pre lang=\"php\" escaped=\"true\">\r\n\t&lt;?php\r\n\r\n\t\/**\r\n\t * Class HeService\r\n\t *\/ \r\n\tclass HeService {\r\n\r\n\t\t\/**\r\n\t\t* La fonction 1 de la Class HeService\r\n\t\t* @returns Cette fonction\/method permet \r\n\t\t* d'afficher &quot;Bienvenue sur\r\n\t\t* le site social.hecube.net&quot;\r\n\t\t *\/\r\n\t\t  function SocialHecube () \r\n\t\t  {\r\n\t\t  \treturn &quot;Bienvenue sur le site social.hecube.net&quot;;\r\n\t\t  }\r\n\t}\r\n\r\n\t?&gt;\r\n\t<\/pre>\n<p><strong>Une r\u00e8gle tout simple doit s&#8217;imposer \u00e0 vous en ce qui concerne la nomenclature du service et du fichier php de ce service. Le nom du fichier php doit \u00eatre identique au nom de la classe contenu dans ce fichier. Ainsi dans notre exemple le fichier se nomme <code>HeService.php<\/code>, la &#8220;Class&#8221; se nomme <code>HeService<\/code><\/strong><\/p>\n<h4>1. Cr\u00e9er un nouveau projet sous Flex<\/h4>\n<p>Il faut s\u00e9lectionner &#8220;Flex Project&#8221;<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_2.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<h4>2. Un projet nomm\u00e9 <code>HeService<\/code><\/h4>\n<p>Vous pouvez conserver les s\u00e9lections coch\u00e9es ou rempies par d\u00e9faut pour la localisation des fichiers, le nature du projet&#8230; N\u00e9anmoins, il vous faut choisir <code>PHP<\/code> pour la valeur <code>Application server type<\/code><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_3.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<h4>3. La configuration du <code>PHP Server<\/code><\/h4>\n<p>Nous allons publier sous MAMP. Il faut donc indiquer configurer le <code>PHP Server<\/code> avec des informations valides. Il faut indiquer le r\u00e9pertoire racine <code>\/Applications\/MAMP\/htdocs<\/code> et l&#8217;adresse par d\u00e9faut <code>http:\/\/127.0.0.1<\/code> ou <code>http:\/\/locahost<\/code> ainsi que le r\u00e9pertoire de publication de votre choix dans le r\u00e9pertoire racine, par d\u00e9faut FLEX vous propose <strong>le nom du service suivi du suffixe -debug<\/strong>, ce qui donne pour notre exemple <code>\/Applications\/MAMP\/htdocs\/HeService-debug<\/code><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_4.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<h4>4. La vue du projet <code>HeService<\/code><\/h4>\n<p>Par d\u00e9faut, FLEX s&#8217;ouvre sur le fichier principal de l&#8217;application <code>HeService<\/code>. Toute votre application est contenue dans le <code>HeService.mxml<\/code><\/h4>\n<p>Au d\u00e9but de la cr\u00e9ation du projet, il est totalement vide. Ce fichier ne contient que l&#8217;en-t\u00eate et les balises d&#8217;ouverture et de fermeture de l&#8217;application <code>&lt;mx:Application ...&gt;<\/code> et <code>&lt;\/mx:Application&gt;<\/code><\/p>\n<pre lang=\"xml\" escaped=\"true\">\r\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;mx:Application \r\nxmlns:mx=&quot;http:\/\/www.adobe.com\/2006\/mxml&quot;\r\nlayout=&quot;absolute&quot;&gt;\r\n\t\r\n\t&lt;!-- Le code de l'application HeService va venir ici --&gt;\r\n\t\r\n&lt;\/mx:Application&gt;\r\n<\/pre>\n<p><strong><code>HeService.mxml<\/code> vu dans FLEX<\/strong><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_5.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<p><strong>En d\u00e9tail, la vue &#8220;source&#8221; de <code>HeService.mxml<\/code> dans FLEX<\/strong><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_6.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<p><strong>En d\u00e9tail, la vue &#8220;design&#8221; de <code>HeService.mxml<\/code> dans FLEX<\/strong><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_7.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<p><strong>A cette \u00e9tape, si vous exportez votre application, rien ne va se passer et vous obtiendrez la page bleue des applications Flex&#8230;<\/strong><\/p>\n<h4>5. Le fichier de configuration du service <code>HeService<\/code><\/h4>\n<p>Ce fichier de configuration est indispensable au bon fonctionnement de l&#8217;application <code>HeService<\/code>. Il va indiquer \u00e0 l&#8217;application FLEX de s&#8217;adresser \u00e0 AMFPHP pour obtenir les donn\u00e9es \u00e0 afficher. L&#8217;\u00e9l\u00e9ment unique \u00e0 changer, c&#8217;est le chemin vers le fichier gateway.php de AMFPHP. Si vous avez fait une installation en local avec MAMP ou sur Easyphp, l&#8217;adresse de votre fichier <code>gateway.php<\/code> sera sans doute de la forme suivante : http:\/\/127.0.0.1\/amfphp\/gateway.php ou http:\/\/localhost\/amfphp\/gateway.php.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_9.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<p><strong>Les propri\u00e9t\u00e9s du <code>Flex Compiler<\/code> incomplet<\/strong><br \/>\nC&#8217;est \u00e0 cet endroit que va \u00eatre d\u00e9fini l&#8217;acc\u00e8s au fichier de config <code>-services config.xml<\/code><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_10.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<p><strong>Les propri\u00e9t\u00e9s du <code>Flex Compiler<\/code> complet<\/strong><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_11.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<p><strong>La source du fichier config.xml avec une adresse de gateway correcte<\/strong><br \/>\nIl ne vous reste plus qu&#8217;\u00e0 faire un copier-coller de cette adresse dans le fichier config.xml dans la balise &lt;endpoint uri=&quot;http:\/\/127.0.0.1\/amfphp\/gateway.php&quot; class=&quot;flex.messaging.endpoints.AMFEndpoint&quot; \/&gt;<\/p>\n<pre lang=\"xml\" escaped=\"true\">\r\n\r\n\t&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\r\n\t&lt;services-config&gt;\r\n\t\t&lt;services&gt;\r\n\t\t\t&lt;service id=&quot;amfphp-flashremoting-service&quot; \r\nclass=&quot;flex.messaging.services.RemotingService&quot; \r\nmessageTypes=&quot;flex.messaging.messages.RemotingMessage&quot;&gt;\r\n\t\t\t\t&lt;destination id=&quot;amfphp&quot;&gt;\r\n\t\t\t\t\t&lt;channels&gt;\r\n\t\t\t\t\t\t&lt;channel ref=&quot;my-amfphp&quot;\/&gt;\r\n\t\t\t\t\t&lt;\/channels&gt;\r\n\t\t\t\t\t&lt;properties&gt;\r\n\t\t\t\t\t\t&lt;source&gt;*&lt;\/source&gt;\r\n\t\t\t\t\t&lt;\/properties&gt;\r\n\t\t\t\t&lt;\/destination&gt;\r\n\t\t\t&lt;\/service&gt;\r\n\t\t&lt;\/services&gt;\r\n\t\t&lt;channels&gt;\r\n\t\t\t&lt;channel-definition id=&quot;my-amfphp&quot; \r\n\t\t\tclass=&quot;mx.messaging.channels.AMFChannel&quot; &gt;\r\n\t\t\t&lt;endpoint uri=&quot;http:\/\/127.0.0.1\/amfphp\/gateway.php&quot;\r\n\t\t\t\t\tclass=&quot;flex.messaging.endpoints.AMFEndpoint&quot; \/&gt;\r\n\r\n\t\t\t&lt;\/channel-definition&gt;\r\n\t\t&lt;\/channels&gt;\r\n\t&lt;\/services-config&gt;\r\n\r\n\t<\/pre>\n<p>\t<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_gateway.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<p>Si vous souhaitez installer un environnement PHP-MySQL sur MAC ou sur PC, reportez-vous \u00e0 l&#8217;un ou \u00e0 l&#8217;autre de ces articles.<\/p>\n<ul>\n<li><a href=\"http:\/\/social.hecube.net\/blog\/2009\/03\/14\/installer-facilement-php-mysql-sur-un-pc-avec-easyphp\/\">Installer facilement PHP-MySQL sur un PC avec EasyPHP<\/a><\/li>\n<li><a href=\"http:\/\/social.hecube.net\/bruno\/2009\/04\/04\/installer-un-environnement-php-mysql-sur-mac\/\">Installer un environnement PHP-MySQL sur MAC<\/a><\/li>\n<\/ul>\n<h4>Le fichier MXML complet de l&#8217;application <code>HeService<\/code><\/h4>\n<p>Avec le fichier de configuration, ce fichier constitue l&#8217;\u00e9pine dorsale de l&#8217;application. Ce fichier d\u00e9taille non seulement l&#8217;interface mais aussi les diff\u00e9rentes op\u00e9rations ou actions susceptibles d&#8217;\u00eatre effectu\u00e9es par l&#8217;application FLEX.<\/p>\n<pre lang=\"xml\" escaped=\"true\">\r\n &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;\r\n&lt;mx:Application \r\n\txmlns:mx=&quot;http:\/\/www.adobe.com\/2006\/mxml&quot;\r\n\tcreationComplete=&quot;init();&quot;\r\n\tlayout=&quot;horizontal&quot;\r\n\thorizontalAlign=&quot;center&quot;\r\n\tcornerRadius=&quot;0&quot;\r\n\t borderColor=&quot;#EEEEEE&quot; borderStyle=&quot;solid&quot;\r\n\t backgroundGradientAlphas=&quot;[1.0, 1.0]&quot;\r\n\t backgroundGradientColors=&quot;[#FF0000, #FF0000]&quot;&gt;\r\n\r\n\r\n\r\n\t&lt;mx:RemoteObject \r\n\tid=&quot;amfphp&quot; \r\n\tsource=&quot;Hecube.HeService&quot;\r\n\tdestination=&quot;amfphp&quot;&gt;\r\n\t\t&lt;mx:method name=&quot;SocialHecube&quot; result=&quot;onConnect (event);&quot; \/&gt;\r\n  &lt;\/mx:RemoteObject&gt;\r\n\r\n\r\n\r\n  &lt;mx:Script&gt;\r\n&lt;![CDATA[\r\n\/\/ ActionScript file\r\nimport mx.controls.*;\r\nimport mx.rpc.events.*;\r\nimport mx.utils.ArrayUtil;\r\n\r\nprivate function init ():void {\r\n\t\tamfphp.SocialHecube.send();\r\n\r\n}\r\n\r\n\r\nprivate function onConnect (e:ResultEvent):void {\r\n\t\tslogan.text = String (e.result);\r\n\r\n}\r\n\r\n]]&gt;\r\n&lt;\/mx:Script&gt;\r\n  &lt;mx:TextArea id=&quot;slogan&quot; width=&quot;621&quot;\r\n  \theight=&quot;84&quot; fontSize=&quot;29&quot; fontFamily=&quot;Arial&quot;\r\n  \tcolor=&quot;#FF0000&quot; cornerRadius=&quot;10&quot;\/&gt;\r\n\r\n&lt;\/mx:Application&gt;\r\n<\/pre>\n<h4>L&#8217;application <code>HeService<\/code> en local&#8230;<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_17.jpg\" width=\"500\" height=\"265\" alt=\"Flex - AMFPHP - connecter un service amfphp \u00e0 une application Flex\" class=\"aligncenter\"><\/p>\n<h4>Une bonne vid\u00e9o d&#8217;introduction \u00e0 la programation dans Flex<\/h4>\n<!--YouTube Error: bad URL entered-->\n<h2>Pour aller plus loin<\/h2>\n<ul>\n<li>Le site de AMFPHP<br \/>\n\t\t<a href=\"http:\/\/amfphp.org\/\" target=\"_blank\">http:\/\/amfphp.org\/<\/a><\/li>\n<li>La page officiel de Flex 3<br \/>\n\t<a href=\"http:\/\/www.adobe.com\/fr\/products\/flex\/\" target=\"_blank\">Adobe Flex 3<\/a><\/li>\n<li>La page officiel de Flex 3<br \/>\n\t\t<a href=\"http:\/\/www.adobe.com\/fr\/products\/flex\/\" target=\"_blank\">Adobe Flex 3<\/a><\/li>\n<li>AMFPHP on AIR Tutorial with MAMP<br \/>\n\t\t\t<a href=\"http:\/\/soenkerohde.com\/2008\/06\/amfphp-on-air-tutorial-with-mamp\/\" target=\"_blank\">http:\/\/soenkerohde.com\/2008\/06\/amfphp-on-air-tutorial-with-mamp\/<\/a><\/li>\n<li>Tutorial Flex 3 et AMFPHP<br \/>\n\t\t\t\t<a href=\"http:\/\/julienlp235.over-blog.net\/article-22373557.html\" target=\"_blank\">http:\/\/julienlp235.over-blog.net\/article-22373557.html<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>On va voir comment installer et cr\u00e9er un service avec AMFPHP puis le mettre \u00e0 disposition d&#8217;une application Flex, le dernier logiciel d&#8217;Adobe. Ce logiciel&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2009\/05\/flex-amfphp-connecter-un-service-amfphp-a-une-application-flex\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">Flex &#8211; AMFPHP &#8211; connecter un service amfphp \u00e0 une application Flex<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9562,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Connectez AMFPHP \u00e0 Flex. Installez et cr\u00e9ez un service AMFPHP pour une application Flex. Pr\u00e9sentation et outils pour des r\u00e9sultats optimaux.","bf_ai_og_title":"Connecter AMFPHP \u00e0 Flex","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3444],"tags":[166,167,2228,169,90],"class_list":["post-535","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming-databases","tag-actionscript","tag-amphp","tag-flex","tag-mxml","tag-xml"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-8D","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/05\/connect_amfphp_flex_1_b_g_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=535"}],"version-history":[{"count":1,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/535\/revisions"}],"predecessor-version":[{"id":9563,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/535\/revisions\/9563"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9562"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}